如何禁止PowerShell Get-Content输出

zos*_*sim 8 powershell

我有一个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)

有没有办法如何抑制这个输出?

谢谢.

Enr*_*lio 6

如果您不希望将命令的输出打印到控制台,则可以通过管道化重定向Out-Null丢弃它。例如,两者都可以工作:

$Config | Out-Null
$Config > Out-Null
Run Code Online (Sandbox Code Playgroud)

如果您熟悉类似Unix的操作系统,则Out-Null概念上等效于/dev/null


jon*_*n Z 6

可能输出不是由赋值语句(一个可以为空的语句)引起的,而是由这一行引起的:

[System.Xml.XmlDocument] $Config;

在PowerShell中,通常所有语句都返回一个值(voidable语句除外).我认为第一次运行脚本时,没有输出会写入控制台.但是,在后续运行中$Config仍将包含上一次运行的值,并且其值将写入屏幕.

  • 管道到Out-Null cmdlet: [System.Xml.XmlDocument] $Config | Out-Null
  • 铸成无效: [void][System.Xml.XmlDocument]$Config
  • 分配给$ null: $null = $Config
  • 或者根本就不是"声明" $Config变量

是抑制这种行为的方法.