vbscript如何读取由PowerShell脚本生成的结果文件(由vbscript本身调用)?

时间:2013-11-15 05:22:44

标签: powershell vbscript ps1

我有一个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

感谢。

2 个答案:

答案 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)