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