【发布时间】:2017-04-17 12:10:52
【问题描述】:
我正在 PowerShell 中处理一个简单的 XML 文件,由于我使用了 GetEnumerator() 方法,因此在使用我的脚本时会看到一些奇怪的事情。当我使用GetEnumerator() 方法将某些内容保存在对象中时,我只能使用该对象一次。之后我必须重新设置才能再次使用它。
我想摆脱这种行为。下面是一个示例脚本,它基本上展示了我如何在脚本中使用它。在函数的真实脚本中,我经常使用变量$ControlObject,并且每次都必须重置它。
我怎样才能以简单的方式防止这种情况发生?
$XMLTargetPath = Join-Path -Path $PSScriptRoot -ChildPath "XMLConfig.xml"
# Save XML in File for easy and fast reproduction
$XMLContentForFile = [xml]@"
<OuterNode>
<BaseSettings>
<Setting1>Blabla</Setting1>
</BaseSettings>
<DynamicSettings>
<item>
<Number>1</Number>
<Name>January</Name>
</item>
<item>
<Number>2</Number>
<Name>February</Name>
</item>
</DynamicSettings>
</OuterNode>
"@
$XMLContentForFile.Save($XMLTargetPath)
function MyFunction {
Param(
[Parameter(Mandatory=$true, Position=0)]
$ControlObject
)
$ControlObject # Output the Object
$ControlObject # PROBLEM - I get no output ...
# I need to make a reset to output the object again ...
$ControlObject.Reset()
$ControlObject
}
[xml]$xml = Get-Content -Path $XMLTargetPath
# Pass the XML-Node "Dynamic-Settings" into Function
MyFunction -ControlObject $xml.OuterNode.DynamicSettings.GetEnumerator()
【问题讨论】:
-
无法重现。为我输出两个项目两次
-
@MathiasR.Jessen OP 期望输出出现三次:重置前两次,重置后一次。
标签: xml powershell enumerator