1
我無法理解我應該如何訪問由PowerShell輸出的XML格式。我正在Python中用etree來做這件事。Python ETREE解析Windows XML輸出
的XML是這些繼承,我可以通過itering在根得到:
<Obj RefId="3">
<TNRef RefId="0" />
<ToString>CN=Guest,CN=Users,DC=xxx,DC=xx</ToString>
<Props>
<S N="DistinguishedName">CN=Guest,CN=Users,DC=xxx,DC=xx</S>
<B N="Enabled">false</B>
<Nil N="GivenName" />
<Obj N="MemberOf" RefId="4">
<TNRef RefId="1" />
<LST>
<S>CN=Guests,CN=Builtin,DC=xxx,DC=xx</S>
</LST>
</Obj>
<S N="Name">Guest</S>
<S N="ObjectClass">user</S>
<G N="ObjectGUID">xxxxxxx-xxxx-xxxx-xxxx-xxxxxx</G>
<S N="SamAccountName">Guest</S>
<Obj N="SID" RefId="5">
<TNRef RefId="2" />
<ToString>S-1-5-21-1111111-11111-111111111-111</ToString>
<Props>
<I32 N="BinaryLength">28</I32>
<S N="AccountDomainSid">S-2-2-2-22222-222-22222</S>
<S N="Value">S-2-2-22-2222222-222222-22222-2222</S>
</Props>
</Obj>
<Nil N="Surname" />
<Nil N="UserPrincipalName" />
</Props>
</Obj>
我能夠做去的「道具」元素:
tree = etree.parse(file)
root = tree.getroot()
props = root.find('Props')
現在讓我們說我想獲得「SamAccountName」,我不明白如何達到它。如果我打印的元素的鍵,我得到非唯一鍵:
['N']
['N']
['N']
['RefId', 'N']
['N']
['N']
['N']
['N']
['RefId', 'N']
['N']
['N']
的項目方法給我元組,它看起來像唯一標識符我後:
[('N', 'DistinguishedName')]
[('N', 'Enabled')]
[('N', 'GivenName')]
[('RefId', '4'), ('N', 'MemberOf')]
[('N', 'Name')]
[('N', 'ObjectClass')]
[('N', 'ObjectGUID')]
[('N', 'SamAccountName')]
[('RefId', '5'), ('N', 'SID')]
[('N', 'Surname')]
[('N', 'UserPrincipalName')]
我嘗試了沿線的一堆不同的東西:
props.find('{N}SamAccountName')
props.find('S N="SamAccountName"')
但是,如果找不到任何東西。我可以得到與實際值的唯一方法是:
chicken = props[7]
print(chicken.text)
我敢肯定有一個更強大的方式來獲得,但我無法找到正確的方法。
太棒了!我會通過我需要的其他方式來工作。 – zlr