0

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

谢谢。

4

2 回答 2

2

在 Out-File 上,尝试使用参数“-Encoding ASCII”。默认情况下,输出文件以 Unicode 格式输出。

于 2013-11-15T06:00:09.047 回答
1

正如Keith Hill所建议的那样,让 PowerShell 使用 ASCII 编码创建文件:

Get-Date | Out-File $ResultFilePath -Encoding ASCII

或在 VBScript 中以 Unicode 格式打开:

Set strLines = objReadFile.OpenTextFile(resultFile, 1, False, -1)
于 2013-11-15T12:44:27.290 回答