我对一个xml文件有两个单独的查询,当我分别运行它们时,它们工作得很好。但是,当我在同一个脚本中运行它们时,第二个查询的输出是不正确的。
输入文件看起来像这样:
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<Safex>
<Add>
<User folder="/" name="D2\\[email protected]">
<GroupMembership>ADMINS</GroupMembership>
<GroupMembership>WebService</GroupMembership>
</User>
<User folder="/" name="D2\\[email protected]">
<GroupMembership>WebService</GroupMembership>
</User>
<User folder="/" name="D2\\[email protected]">
<GroupMembership>WebService</GroupMembership>
</User>
<User folder="/" name="D2\\[email protected]">
<GroupMembership>ADMINS</GroupMembership>
</User>
<User folder="/" name="D2\\[email protected]">
<GroupMembership>WebService</GroupMembership>
</User>
</Add>
</Safex>
我的脚本如下:
[xml]$xml = Get-Content $InputPath\test002.xml
$a = $xml.Safex.Add.User | ForEach-Object {
[PSCustomObject]@{
'Name' = $_.name
'Group' = $_.GroupMembership
}
}
$a
$b = $xml.Safex.Add.User | Where-Object { $_.GroupMembership -eq 'WebService' } |
Select-Object @{Name = 'Name'; Expression = {$_.Name}}, GroupMembership
#$b
当我注释掉$b时,$a返回以下内容:
Name Group
---- -----
D2\\[email protected] {ADMINS, WebService}
D2\\[email protected] WebService
D2\\[email protected] WebService
D2\\[email protected] ADMINS
D2\\[email protected] WebService
当我把$a注释掉时,$b返回以下内容:
Name GroupMembership
---- ---------------
D2\\[email protected] {ADMINS, WebService}
D2\\[email protected] WebService
D2\\[email protected] WebService
D2\\[email protected] WebService
当我没有注释$a和$b时,我会得到这样的结果:
Name Group
---- -----
D2\\[email protected] {ADMINS, WebService}
D2\\[email protected] WebService
D2\\[email protected] WebService
D2\\[email protected] ADMINS
D2\\[email protected] WebService
D2\\[email protected]
D2\\[email protected]
D2\\[email protected]
D2\\[email protected]
我似乎不明白为什么当$a和$b都没有注释时,$b的标题不会出现,GroupMembership值也不会出现。
感谢您提供的任何帮助。