如何捕获变量而不是日志文件中的输出?

时间:2011-12-07 22:15:07

标签: powershell

这会将输出写入日志文件:

& $Env:WinDir\system32\inetsrv\appcmd.exe >test.log

但是如果我想将输出保存在字符串变量中以便在电子邮件正文中使用它呢?

我没有运气就试过了..

$test = ""
& $Env:WinDir\system32\inetsrv\appcmd.exe >$test

Write-Host $test

2 个答案:

答案 0 :(得分:36)

你必须这样做:

$test = & $Env:WinDir\system32\inetsrv\appcmd.exe

如果您还想重定向错误,请在最后添加2>&1

答案 1 :(得分:10)

捕获可执行文件的输出就像,

一样简单
$cmdOutput = &"Application.exe" 2>&1
  

2>& 1 - 包括输出中的错误流

PowerShell中可执行文件的返回类型是字符串数组。如果记录此类输出,

Write-Host $cmdOutput

将数组中的字符串输出到由空格

分隔的输出流

要按字符串方式打印它们,请选择

Write-Output $cmdOutput

$cmdOutput = &"Application.exe" | Out-String
Write-Host $cmdOutput