如何禁止PowerShell Get-Content输出

时间:2012-01-24 09:54:05

标签: 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

config.xml中

<Configuration>
</Configuration>

稍后在脚本中我正在使用$ Config变量。当我运行此脚本时,它将输出写入控制台,其中包含xml的根元素。类似的东西:

Configuration
--------------

是否存在如何抑制此输出的方法?

感谢。

2 个答案:

答案 0 :(得分: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
  • 或者根本就没有宣布&#39; $Config变量

是抑制此行为的方法。

答案 1 :(得分:0)

某处您正在从脚本中转储变量。当它从管道中掉出来时会被传递给Out-Host,这将产生你看到的输出。

实际的解决方案是确保您不从脚本中返回任何内容。因为我看不到你的代码我不能指向哪里,但某处有一个管道或语句将对象泄漏到输出中。您确定在所需的每个地方都使用了作业吗?