如何从 XML 属性 中提取字符串

How to Extract string from XML Property

我试图使用 PowerShell 从 XML 文件中提取 Value="" 的内容,这些内容可能是 ProductionTraining。这是 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

我如何输出 ProductionTraining 以便我可以用相应的计算机主机名填充 xls?

谢谢

正如您现在所拥有的,您的名为 Value 的 object 有 3 个属性,UseFunctionValueValueList,您需要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'