我有一个PS脚本:
script.ps1
[System.Xml.XmlDocument] $Config;
function Get-ScriptDirectory
{
Split-Path $script:MyInvocation.MyCommand.Path
}
function Load-Config
{
$configPath = Join-Path (Get-ScriptDirectory) config.xml
$global:Config = [xml](gc $configPath)
}
Load-Config
Run Code Online (Sandbox Code Playgroud)
config.xml中
<Configuration>
</Configuration>
Run Code Online (Sandbox Code Playgroud)
稍后在脚本中我正在使用$ Config变量.当我运行此脚本时,它将输出写入控制台,其中包含xml的根元素.就像是:
Configuration
--------------
Run Code Online (Sandbox Code Playgroud)
有没有办法如何抑制这个输出?
谢谢.
如果您不希望将命令的输出打印到控制台,则可以通过管道化或将其重定向到Out-Null来丢弃它。例如,两者都可以工作:
$Config | Out-Null
$Config > Out-Null
Run Code Online (Sandbox Code Playgroud)
如果您熟悉类似Unix的操作系统,则Out-Null在概念上等效于/dev/null
。
可能输出不是由赋值语句(一个可以为空的语句)引起的,而是由这一行引起的:
[System.Xml.XmlDocument] $Config;
在PowerShell中,通常所有语句都返回一个值(voidable语句除外).我认为第一次运行脚本时,没有输出会写入控制台.但是,在后续运行中$Config
仍将包含上一次运行的值,并且其值将写入屏幕.
[System.Xml.XmlDocument] $Config | Out-Null
[void][System.Xml.XmlDocument]$Config
$null = $Config
$Config
变量是抑制这种行为的方法.