如何使用Powershell从XML循环和读取所有必需的属性值
我在文件“Test1.XML”中有以下XML数据:如何使用Powershell从XML循环和读取所有必需的属性值,xml,powershell,foreach,Xml,Powershell,Foreach,我在文件“Test1.XML”中有以下XML数据: 来源=开发;Catalog=DEV_DMT;综合安全=SSPI; 来源=实验室;目录=TST_INT10;综合安全=SSPI; 来源=LAB1;目录=TST_INT1;综合安全=SSPI; 来源=LAB10;目录=TST_INT12;综合安全=SSPI; 发展 INT10 INT1 INT15 我希望循环遍历所有属性,并通过传递需要检索的参数,使用PowerShell检索数据 例如:如果我将变量值作为INT10传递,我只需要以下值: Nam
来源=开发;Catalog=DEV_DMT;综合安全=SSPI;
来源=实验室;目录=TST_INT10;综合安全=SSPI;
来源=LAB1;目录=TST_INT1;综合安全=SSPI;
来源=LAB10;目录=TST_INT12;综合安全=SSPI;
发展
INT10
INT1
INT15
我希望循环遍历所有属性,并通过传递需要检索的参数,使用PowerShell检索数据
例如:如果我将变量值作为INT10传递,我只需要以下值:
Name Value
---- -----
Value1 LAB
Environment INT10
$child = 'INT10'
$XmlDocument.SelectNodes("//TextValues[./${child}]") | ForEach-Object {
New-Object -Type PSObject -Property @{
'Name' = $_.Name
'Value' = $_.$child
}
} | Select-Object Name, Value
但是XML标记可能会根据文件每次增加或减少。我需要循环使用现有数据并得到结果
我不知道如何使用
foreach
读取文件中的所有值。您只需通过管道将TextValues
传输到选择对象
,并指定您想要值的属性名称:
[xml]$XmlDocument = Get-Content D:\Roshan\Test1.xml
$XmlDocument.TextValuess.TextValues | Select-Object Name, INT10
您只需通过管道将
TextValues
传输到Select Object
,并指定您想要的属性名称:
[xml]$XmlDocument = Get-Content D:\Roshan\Test1.xml
$XmlDocument.TextValuess.TextValues | Select-Object Name, INT10
从XML结构中选择数据的最通用的方法是。在你的情况下,你会这样做: Name Value ---- ----- Value1 LAB Environment INT10
$child = 'INT10'
$XmlDocument.SelectNodes("//TextValues[./${child}]") | ForEach-Object {
New-Object -Type PSObject -Property @{
'Name' = $_.Name
'Value' = $_.$child
}
} | Select-Object Name, Value
如果希望从子节点提取部分信息,则需要指定如何完成。例如:
($_.$child -split ';')[0] -replace '^Source='
从XML结构中选择数据的最通用的方法是。在你的情况下,你会这样做: Name Value ---- ----- Value1 LAB Environment INT10
$child = 'INT10'
$XmlDocument.SelectNodes("//TextValues[./${child}]") | ForEach-Object {
New-Object -Type PSObject -Property @{
'Name' = $_.Name
'Value' = $_.$child
}
} | Select-Object Name, Value
如果希望从子节点提取部分信息,则需要指定如何完成。例如:
($_.$child -split ';')[0] -replace '^Source='
这是为了得到期望的结果。由于Ansger quirey对我的需求非常方便,我选择了它作为解决方案。这是为了得到期望的结果。由于Ansger quirey对我的要求非常方便,我选择了它作为解决方案。您能否帮助我如何为每次读取在ForEach中为变量赋值。需要类似这样的$child='INT10'$XmlDocument.SelectNodes(“//TextValues[./${child}]”)ForEach对象{New Object-Type PSObject-Property@{$Name=$\\ Name$Value=$.$child}}}选择对象名称,值您还可以帮助我如何为每次读取为ForEach中的变量赋值。需要类似这样的$child='INT10'$XmlDocument.SelectNodes(“//TextValues[./${child}]”)| ForEach对象{New Object-Type PSObject-Property@{$Name=$\\ Name$Value=$.$child}}}选择对象名,值