powershell pipe output -encoding ascii 重定向输出.bat .cmd .vbs .txt文件时一定要注意编码是ascii

2024-01-26 10:21:04 浏览数 (1)

powershell 重定向输出字符串到.bat 、.cmd、 .vbs等文本性质的可执行文件时,一定要注意编码

powershell默认生成的文件的编码是UTF-16 LE BOM

而.bat 、.cmd、 .vbs的编码默认是ANSI

这样生成的.bat 、.cmd、 .vbs在cmd命令行执行会报错

参考https://til.secretgeek.net/powershell/out-file-encoding.html

注意加-encoding ascii

例如制作sysprep镜像、在执行sysprep命令之前需要执行下面的powershell代码,代码里输出重定向到.cmd文件要加 -encoding ascii

mkdir c:windowssetupscripts -force

del "C:windowssetupscriptsSetupComplete.cmd" 2>$null 1>$null

write-host > C:windowssetupscriptsSetupComplete.cmd

"sc.exe config cloudbase-init start= auto" | Out-File -Append C:windowssetupscriptsSetupComplete.cmd -encoding ascii

"sc.exe start cloudbase-init" | Out-File -Append C:windowssetupscriptsSetupComplete.cmd -encoding ascii

"net user administrator /active:yes" | Out-File -Append C:windowssetupscriptsSetupComplete.cmd -encoding ascii

0 人点赞