在 Powershell 中仅显示错误和警告

Show only Errors and warnings in Powershell

菜鸟在这里寻求帮助

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

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

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

 $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

您有两个选择:

  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

输出: