Powershell 5.1:无法使用 Get-Unique 对提取的 XML 属性名称进行排序

Powershell 5.1: unable to sort extracted XML attribute names with Get-Unique

我正在尝试从以下示例文件中提取存储在 <input> 元素的属性 className 中的所有唯一值:

<?xml version="1.0" encoding="UTF-8"?>

<config>
    <input name="reutersIn" className="com.ib.feed.csv.TarCsvFileInput">
        <useOutputMarketConfig>true</useOutputMarketConfig>
        <optional>false</optional>
        <archiveOnly>true</archiveOnly>
    </input>

    <input name="fidessaIn" className="com.ib.feed.csv.TarCsvFileInput">
        <useOutputMarketConfig>true</useOutputMarketConfig>
        <optional>false</optional>
        <archiveOnly>true</archiveOnly>
    </input>

    <input name="iceIn" className="com.ib.feed.csv.TarCsvFileInput">
        <useOutputMarketConfig>true</useOutputMarketConfig>
        <optional>false</optional>
        <archiveOnly>true</archiveOnly>
    </input>
</config>

如上面的 XML 文件示例所示,具有相同值的 className 属性出现了 3 次。

我试图提取 className 个值并只显示一个唯一的值:

[xml]$file = get-content C:\ps_scripts\configs\test.xml


$xmlProperties = $file.SelectNodes("//input")
Foreach ($xmlProperty in $xmlProperties) {
    
        Echo $xmlProperty.className | Get-Unique
    }

但是,当我 运行 脚本时,我得到相同的 className 值打印了 3 次而不是预期的 1 次:

PS C:\ps_scripts> .\xml2.ps1
com.ib.feed.csv.TarCsvFileInput
com.ib.feed.csv.TarCsvFileInput
com.ib.feed.csv.TarCsvFileInput

在这种情况下如何正确显示唯一的 className 值?

脚本的最终目的是遍历多个 XML 文件并提取 <input> 元素内的所有唯一 className 值(我不知道 className 值存储在大多数文件中)

很简单,改一下就可以了

$xmlProperties = $file.SelectNodes("//input")
Foreach ($xmlProperty in $xmlProperties) {
    
        Echo $xmlProperty.className | Get-Unique
    }

$xmlProperties = $input.SelectNodes("//input") | Get-Unique
Foreach ($xmlProperty in $xmlProperties) {      
        echo $xmlProperty.className 
    }

输出:

com.ib.feed.csv.TarCsvFileInput