如何从 XML 属性 中提取字符串
How to Extract string from XML Property
我试图使用 PowerShell 从 XML 文件中提取 Value=""
的内容,这些内容可能是 Production
或 Training
。这是 XML 文件的片段:
<ParameterGroup TestRequired="false" Name="CommonSystemConfig" xmlns="http://www...">
<Parameter Name="DefaultEnvironmentId" Text="DefaultEnvironmentId" ParameterType="List">
<Value UseFunction="false" Value="Training">
<ValueList>
<string>Production</string>
<string>Training</string>
<string>Staging</string>
我目前的脚本如下:
$XMLfile = "\$pchostname$xmlPath"
[XML]$paramBackup = Get-Content $XMLfile
$paramBackup.ParametersInfo.ParameterGroup.parameter | Where-Object {$_.Name -eq 'DefaultEnvironmentId'} | Select-object -ExpandProperty 'Value'
脚本给我:
UseFunction Value ValueList
----------- ----- ---------
false Production ValueList
我如何输出 Production
或 Training
以便我可以用相应的计算机主机名填充 xls?
谢谢
正如您现在所拥有的,您的名为 Value
的 object 有 3 个属性,UseFunction
、Value
和 ValueList
,您需要select child 属性 名为 Value
,其值为 Training
。
您实际上可以通过添加另一个管道和 select 到末尾来复制您已有的内容
| Select-Object -ExpandProperty 'Value'
所以整行是
$paramBackup.ParametersInfo.ParameterGroup.parameter | Where-Object {$_.Name -eq 'DefaultEnvironmentId'} | Select-object -ExpandProperty 'Value' | Select-object -ExpandProperty 'Value'
另外一种方法 dot-notation
($paramBackup.ParametersInfo.ParameterGroup.parameter | Where-Object {$_.Name -eq 'DefaultEnvironmentId'}).Value | Select-object -ExpandProperty 'Value'
我试图使用 PowerShell 从 XML 文件中提取 Value=""
的内容,这些内容可能是 Production
或 Training
。这是 XML 文件的片段:
<ParameterGroup TestRequired="false" Name="CommonSystemConfig" xmlns="http://www...">
<Parameter Name="DefaultEnvironmentId" Text="DefaultEnvironmentId" ParameterType="List">
<Value UseFunction="false" Value="Training">
<ValueList>
<string>Production</string>
<string>Training</string>
<string>Staging</string>
我目前的脚本如下:
$XMLfile = "\$pchostname$xmlPath"
[XML]$paramBackup = Get-Content $XMLfile
$paramBackup.ParametersInfo.ParameterGroup.parameter | Where-Object {$_.Name -eq 'DefaultEnvironmentId'} | Select-object -ExpandProperty 'Value'
脚本给我:
UseFunction Value ValueList
----------- ----- ---------
false Production ValueList
我如何输出 Production
或 Training
以便我可以用相应的计算机主机名填充 xls?
谢谢
正如您现在所拥有的,您的名为 Value
的 object 有 3 个属性,UseFunction
、Value
和 ValueList
,您需要select child 属性 名为 Value
,其值为 Training
。
您实际上可以通过添加另一个管道和 select 到末尾来复制您已有的内容
| Select-Object -ExpandProperty 'Value'
所以整行是
$paramBackup.ParametersInfo.ParameterGroup.parameter | Where-Object {$_.Name -eq 'DefaultEnvironmentId'} | Select-object -ExpandProperty 'Value' | Select-object -ExpandProperty 'Value'
另外一种方法 dot-notation
($paramBackup.ParametersInfo.ParameterGroup.parameter | Where-Object {$_.Name -eq 'DefaultEnvironmentId'}).Value | Select-object -ExpandProperty 'Value'