【问题标题】:How get output to a variable如何将输出输出到变量
【发布时间】:2021-02-03 21:14:10
【问题描述】:

我有一个简单的 powershell 脚本

$proc = Get-Process -id 412
$proc

它会返回这样的输出

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName                                                                                                                                                                
-------  ------    -----      -----     ------     --  -- -----------                                                                                                                                                                
    434      26    65768     109144       6,42    412   1 browser

我怎样才能将这个输出传递给一个变量,以便我可以在脚本的其他地方使用它?

我试着像这样使用它

$proc = Get-Process -id 412
Write-Host $proc

但它给我的输出与 $proc 不同,它是“System.Diagnostics.Process”类的一个实例

System.Diagnostics.Process (browser)

【问题讨论】:

  • 如果你的目标只是写进程对象到主机,你可以写$proc | Out-Host

标签: powershell output


【解决方案1】:

Write-Host,其目的是直接写入显示使用PowerShell丰富的输出格式化系统 - 它使用简单的 .ToString() 格式,这通常会导致无用的表示 - 请参阅 this answer 了解详细信息。

如果您明确希望在使用丰富格式仅打印到显示器(主机),请改用
Out-Host

$proc | Out-Host # rich formatting, display output only

Out-String cmdlet 使用相同的格式并以单个多行字符串的形式返回格式化表示为 data (默认)。

但是,如果不担心通过 PowerShell 的 成功输出流 意外产生 data 输出(请参阅 about_Redirection),您可以简单地使用 PowerShell 的 隐式输出行为,如果数据最终发送到显示器(没有在变量中捕获、通过管道发送或被重定向),这也会导致丰富的格式

# Implicit output to the success stream, which, if not captured or redirected,
# prints to the display *by default*, richly formatted.
$proc  

以上是Write-Output $proc 的隐含且通常更可取的等价物;很少需要显式使用Write-Output,其目的是写入成功输出流

【讨论】:

    【解决方案2】:

    这完全取决于您的意思。 $proc 是一个具有属性的对象。如果您执行$x = $proc | out-string,那么$x 将是默认视图的字符串表示形式。但是,在以后使用它时,您可能希望通过 write-host $proc.Handles $proc.NPM $proc.PM $proc.WS $proc.CPU $proc.id $proc.SI $proc.ProcessName 访问每个单独的元素。

    【讨论】:

      【解决方案3】:

      找到给我相同输出结果的解决方案

      $proc = Get-Process -id 412
      $str = Out-String -InputObject $proc
      Write-Host $str
      

      【讨论】:

        猜你喜欢
        • 2023-03-05
        • 1970-01-01
        • 2018-10-25
        • 2015-05-07
        • 1970-01-01
        • 1970-01-01
        • 2023-01-03
        • 2021-05-18
        • 2015-12-30
        相关资源
        最近更新 更多