powershell 管道到数组 returns 作为字符数组

powershell pipe to array returns as character array

我正在尝试使用以下 powershell 脚本的结果构建一个数组。然后我只想输出该数组中的唯一结果(我期待重复)。我试过了,但没有用。我注意到的一件事是我的数组正在转换为字符数组。因此,如果我在数组 ($array[1]) 中调用单个对象,它只会显示一个字符,这可能就是 select -unique 不起作用的原因。

请帮忙。

$servers="Server1","server2"
$regex="(\.\d\d\d.*\()"
$path = "SomePath"
$yesterday = (get-date).Date.AddDays(-1)
Foreach ($server in $servers) {Get-ChildItem -Path $path -recurse | where { $_.LastWriteTime -le $yesterday } | ForEach-Object { Get-Content -Path "$_" -TotalCount 2 | select-string $regex | % { $_.Matches } | % { $array += $_.Value.Substring(5,6) } }}
$array|select -Unique

如果您将 $array 值初始化为一个数组,那么您的代码将起作用。如果不了解这些知识,PowerShell 会将 $array += 视为将字符串连接在一起。

$array = @()
$servers="Server1","server2"
$regex="(\.\d\d\d.*\()"
$path = "SomePath"
$yesterday = (get-date).Date.AddDays(-1)
Foreach ($server in $servers) {Get-ChildItem -Path $path -recurse | where { $_.LastWriteTime -le $yesterday } | ForEach-Object { Get-Content -Path "$_" -TotalCount 2 | select-string $regex | % { $_.Matches } | % { $array += $_.Value.Substring(5,6) } }}
$array|select -Unique