在 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
您有两个选择:
- 将
Invoke-VMScript
cmdlet 的输出分配给 $null
。
- 将
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
输出:
菜鸟在这里寻求帮助
我为用户写的脚本很少运行,我希望用户只看到错误和警告输出而没有所有成功输出。
在线搜索让我相信我需要呈现错误和警告的管道,但是我找不到一种方法来实现在脚本中只获取这两个,有人可以解释一下我如何在一个脚本中实现脚本只看到错误和警告?
例如,脚本的以下部分显示了它下面的输出,用户体验是很多错误丢失的输出。
$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
您有两个选择:
- 将
Invoke-VMScript
cmdlet 的输出分配给$null
。 - 将
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
输出: