仅在Powershell中显示错误和警告

问题描述

Noob在这里寻求帮助

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

在线搜索使我相信我需要介绍“错误”和“警告”的提示,但是在哪里我都找不到一种方法来实现只在脚本中获得这两个,请问有人可以解释我如何在脚本中实现只有错误和警告?

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

 $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

输出:

enter image description here

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...