我有一个vbscript来执行powershell脚本。 powershell脚本只是将结果附加到文件中。 然后在powershell脚本执行完成后返回到vbscript。 vbscript将读取文件的内容并将其显示在控制台上。 不幸的是,powershell无法生成要由vbscript读取的结果文件。
如果我将该行更改为ErrCode = objShell.run(“powershell.exe -file writeFile.Ps1”,0), powershell脚本可以生成结果文件。 但是vbscript永远不能正确显示结果文件的内容或者它已损坏。 如果我从记事本打开结果文件,我可以正确查看内容。 你知道背后的问题是什么吗?
以下是源代码:
readFile.vbs的源代码: \
resultFile = "writeFile.Ps1.txt"
set objShell = CreateObject("WScript.Shell")
ErrCode = objShell.run("powershell.exe -nologo -command writeFile.Ps1", 0)
Set objReadFile = CreateObject("Scripting.FileSystemObject")
Set strLines = objReadFile.OpenTextFile(resultFile, 1)
Do While Not strLines.AtEndOfStream
strLine = strLines.ReadLine()
WScript.Echo strLine
Loop
Set objReadFile = Nothing
writeFile.Ps1的源代码:
$ResultFilePath = "writeFile.Ps1.txt"
If (Test-Path $ResultFilePath) {
Remove-Item $ResultFilePath
}
Get-Date | out-file $ResultFilePath
Exit 0
感谢。
答案 0 :(得分:2)
在Out-File上,尝试使用参数“-Encoding ASCII”。默认情况下,Unicode中的Out-File输出。
答案 1 :(得分:1)
使PowerShell创建具有ASCII编码的文件,建议为Keith Hill:
Get-Date | Out-File $ResultFilePath -Encoding ASCII
或在VBScript中将其作为Unicode打开:
Set strLines = objReadFile.OpenTextFile(resultFile, 1, False, -1)