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

Hou*_*man 39 powershell

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

& $Env:WinDir\system32\inetsrv\appcmd.exe >test.log
Run Code Online (Sandbox Code Playgroud)

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

我试了这个没有运气..

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

Write-Host $test
Run Code Online (Sandbox Code Playgroud)

man*_*lds 40

你必须做:

$test = & $Env:WinDir\system32\inetsrv\appcmd.exe
Run Code Online (Sandbox Code Playgroud)

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


小智 12

捕获可执行文件的输出非常简单,

$cmdOutput = &"Application.exe" 2>&1
Run Code Online (Sandbox Code Playgroud)

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

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

Write-Host $cmdOutput
Run Code Online (Sandbox Code Playgroud)

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

要以每行的方式打印它们,请选择

Write-Output $cmdOutput
Run Code Online (Sandbox Code Playgroud)

要么

$cmdOutput = &"Application.exe" | Out-String
Write-Host $cmdOutput
Run Code Online (Sandbox Code Playgroud)

  • 我需要 Out-String 的情况是多行输出到一个大字符串。 (3认同)