【问题标题】:Show only Errors and warnings in Powershell在 Powershell 中仅显示错误和警告
【发布时间】:2020-08-12 07:50:16
【问题描述】:

菜鸟在这里寻求帮助

我为用户编写的脚本很少,我希望用户只看到错误和警告输出,而没有所有成功输出。

在线搜索让我相信我需要提供错误和警告的管道,但是我无法找到一种方法来实现在脚本中只获取这两个,有人可以解释一下我如何在脚本中实现只有错误和警告?

例如脚本的以下部分显示了它下面的输出,用户体验是很多输出,其中一个错误会丢失。

 $script1 = "sudo sed -i 's/'$hostn'/'$VMs_Name$i'/g' /etc/hosts"
Invoke-VMScript -VM $VMs_Name$i -ScriptText $script1 -GuestUser root -GuestPassword xsignnet1 -ScriptType Bash
            
$script2 = "sudo sed -i 's/'$hostn'/'$VMs_Name$i'/g' /etc/hostname"
Invoke-VMScript -VM $VMs_Name$i -ScriptText $script2 -GuestUser root -GuestPassword xsignnet1 -ScriptType Bash

VM           : testing_vm_1
ExitCode     : 0
ScriptOutput :
Uid          : /VIServer=vsphere.local\scripts@vcsa-st-vvol-67-2.lab.gdc.il.infinidat.com:443/VirtualMachine=VirtualMachine-vm-541/VMScriptResult=1665179762_0/
Length       : 0


VM           : testing_vm_1
ExitCode     : 0
ScriptOutput : sudo: unable to resolve host Ubuntu-Template: Resource temporarily unavailable

Uid          : /VIServer=vsphere.local\scripts@vcsa-st-vvol-67-2.lab.gdc.il.infinidat.com:443/VirtualMachine=VirtualMachine-vm-541/VMScriptResult=-942405014_0/
Length       : 79

【问题讨论】:

标签: powershell output pipeline


【解决方案1】:

你有两个选择:

  1. Invoke-VMScript cmdlet 的输出分配给$null
  2. Invoke-VMScript cmdlet 的输出通过管道传送到Out-Null cmdlet。

示例:

$null = Invoke-VMScript -VM $VMs_Name$i -ScriptText $script1 -GuestUser root -GuestPassword xsignnet1 -ScriptType Bash
# or:
Invoke-VMScript -VM $VMs_Name$i -ScriptText $script1 -GuestUser root -GuestPassword xsignnet1 -ScriptType Bash | Out-Null

演示:

function Verb-Noun
{
    "normal output, shouldn't be printed when pipe to Out-Null"

    Write-Warning "you should see me, I am a warning"
    Write-Error "you should see me, I am an error"
    
}

Verb-Noun | Out-Null

输出:

【讨论】:

  • 谢谢@MartinBrandl 1) 没有办法适用于所有脚本吗? - 我的脚本基本由大约 10 个命令组成,如果可能的话,我不想手动添加到每个命令。 2) $null & Out-Null 不是将所有类型的管道都发送到 null 吗?我确实希望看到我提到的错误和警告
  • 您应该对不想看到输出的每一行执行此操作。就像在您的示例中一样,您会看到不需要的 Invoke-VMScript 响应,因此您必须将其通过管道传输到 Out-Null。您将看到错误,因为它们被发送到错误流
猜你喜欢
  • 1970-01-01
  • 2012-01-24
  • 1970-01-01
  • 1970-01-01
  • 2012-08-10
  • 1970-01-01
  • 2020-06-19
  • 2017-01-08
  • 2011-07-23
相关资源
最近更新 更多