Powershell从GCI和XPATH返回对象

时间:2016-07-21 10:59:38

标签: powershell xpath

我有这个简单的脚本来返回给定目录中的所有xmls,列出名称和lastwritetime。

$xmlfiles = gci c:\temp\importexport\JDW*EmployeeImport*.xml |
Select-Object Name, LastWriteTime  

我还希望进一步将列表过滤到包含名为密码的特定属性的列表:

$Password = $xmlfiles | Select-Xml -XPATH "//User" | 
Select -expandproperty node | where {$_.password} |
Select id, firstName, lastName, statusCode

我遇到的问题是我想要将第一个GCI查询中的 Name LastWriteTime 与来自XPATH查询的其他四个对象结合起来。当我尝试包含所有六个对象时,我得不到任何结果:

$xmlfiles = gci c:\temp\importexport\JDW*EmployeeImport*.xml |
Select-Object Name, LastWriteTime  
$Password = $xmlfiles | Select-Xml -XPATH "//User" | 
Select -expandproperty node | where {$_.password} |
Select id, firstName, lastName, statusCode

如果我删除 Select-Object Name,LastWriteTime ,我会得到结果,但没有Name和LastWriteTime。如果我将此查询与其他四个对象一起添加到最后一行,那么它也不会返回任何内容

$xmlfiles = gci c:\temp\importexport\JDW*EmployeeImport*.xml |
$Password = $xmlfiles | Select-Xml -XPATH "//User" | 
Select -expandproperty node | where {$_.password} |
Select Name, LastWriteTime, id, firstName, lastName, statusCode

我也尝试了$ xmlfiles.Name和$ xmlfiles.LastWriteTime。

这是xml

<EnterpriseDocument InterfaceName="Employee Interface">
 <BusinessUnitList>
  <BusinessUnit id="1234">
   <User id="1234567" password="anypassword" firstName="John" lastName="Doe">
     <RoleList><Role id="Associate"></Role></RoleList>
     <OrgList><Organization id="0289"/></OrgList>
   </User>
 </BusinessUnit>
</BusinessUnitList>
</Ente‌​rpriseDocument>

有什么想法吗?

由于

0 个答案:

没有答案