Powershell脚本在远程服务器上运行批处理并将StdOut和StdErr保存到文件

时间:2016-07-25 13:03:44

标签: windows powershell batch-file cmd

我遇到了一些问题。我在powershell中编写脚本来运行批处理文件并将stderror和stdout保存到文件(stdout:stdout.txt; stderr:stderr.txt并合并stdout和stderr:AllOutput.txt

test.ps1:

$allOutput =  & C:\foo.bat 2>&1
$stderr = $allOutput | ?{ $_ -is [System.Management.Automation.ErrorRecord] }
$stdout = $allOutput | ?{ $_ -isnot [System.Management.Automation.ErrorRecord] }

Write-Host $allOutput

$allOutput | Out-File AllOutput.txt
$stdout | Out-File StdOut.txt
$stderr | Out-File StdErr.txt

foo.bat文件执行一些代码和bar.bat脚本:

dir
echo test
c:\bar.bat
echo endFoo

bar.bat文件执行此exaple代码:

echo test
cd DDDDDD #not exists to get error
cd EEEEEE #not exists to get error
echo endBar

当我直接在服务器上运行test.ps1时,我得到AllOutput.txt正确的顺序 - 当stderr出错时我会在命令后得到它。但是当我通过Invoke-Command -computerName serverName -File C:\test.ps1Invoke-Command -computerName serverNAme -File \\serverPath\test3.ps1在远程服务器上启动它时,我得到的输出顺序错误 - 有时连续出现stderr的两个错误,有时是文件末尾的错误。 如何执行或以正确的方式重写?

0 个答案:

没有答案