[求助]在一个powershell脚本调用另一个程序,并获取其标准输出和标准错误


PowerShell交流中心分类: Powershell基础[求助]在一个powershell脚本调用另一个程序,并获取其标准输出和标准错误
0
windsteering@163.com asked 7年 ago

如题,另一个程序也许是.ps1或.exe或.bat

×用微信扫描并分享
3 Answers
1
Best Answer
windsteering@163.com answered 7年 ago

感谢两位,问题解决了,如下:

$process = new-object System.Diagnostics.Process
$process.StartInfo.FileName = "CMD.exe"
$process.StartInfo.Arguments = " /c dir|pause"
$process.StartInfo.UseShellExecute = 0
$process.StartInfo.RedirectStandardInput = 0
$process.StartInfo.RedirectStandardOutput = 1
$process.StartInfo.RedirectStandardError = 1
$process.StartInfo.CreateNoWindow = 1
$process.StartInfo.WindowStyle = [System.Diagnostics.ProcessWindowStyle]::Hidden;
$process.Start()
$error_info = $process.StandardError.ReadToEnd()
$result = $process.StandardOutput.ReadToEnd()
Mooser Lee 管理员 replied 7年 ago

感谢分享!

1
Mooser Lee 管理员 answered 7年 ago

Start-Process 返回的是一个system.diagnostics.process (.NET)对象。它本身有属性:

StandardError

获取用于读取应用程序错误输出的流。

StandardInput

获取用于写入应用程序输入的流。

StandardOutput

获取用于读取应用程序输出的流。

0
codecook 管理员 answered 7年 ago

$Process = New-Object System.Diagnostics.Process
$Process.StartInfo.FileName = “CMD.exe”
$Process.StartInfo.Arguments = ” /c dir|pause”
$Process.StartInfo.UseShellExecute = $false
$Process.StartInfo.RedirectStandardInput =$true
$Process.StartInfo.CreateNoWindow = $false
$Process.Start()
$Process.StandardOutput.ReadToEnd()
这个似乎有点问题,我从C#转换过来的。