我有一个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
--------------
是否存在如何抑制此输出的方法?
感谢。
答案 0 :(得分:6)
输出可能不是由赋值语句(一个可以为空的语句)引起的,而是由这一行引起的:
[System.Xml.XmlDocument] $Config;
在PowerShell中,通常,所有语句都返回一个值(voidable语句除外)。我认为,第一次运行脚本时,没有输出将写入控制台。但是在后续运行中,$Config
仍将包含上一次运行的值,并且其值将写入屏幕。
[System.Xml.XmlDocument] $Config | Out-Null
[void][System.Xml.XmlDocument]$Config
$null = $Config
$Config
变量是抑制此行为的方法。
答案 1 :(得分:0)
某处您正在从脚本中转储变量。当它从管道中掉出来时会被传递给Out-Host,这将产生你看到的输出。
实际的解决方案是确保您不从脚本中返回任何内容。因为我看不到你的代码我不能指向哪里,但某处有一个管道或语句将对象泄漏到输出中。您确定在所需的每个地方都使用了作业吗?