Powershell 数组未正确加载

Powershell 数组未正确加载,powershell,Powershell,我有一个命令,可以将经过筛选的服务器列表加载到一个变量中: $Computers = Get-adcomputer -filter "OperatingSystem -notlike '*server*'" -properties * |Where-Object {$_.LastLogonDate -gt $time -and ($_.Enabled -eq $true) -and ($_.name -ne 'Rose*')} |select name 我想用For-eac

我有一个命令,可以将经过筛选的服务器列表加载到一个变量中:

$Computers = Get-adcomputer -filter "OperatingSystem -notlike '*server*'" -properties * |Where-Object {$_.LastLogonDate -gt $time -and ($_.Enabled -eq $true) -and ($_.name -ne 'Rose*')} |select name
我想用For-each循环来处理那些计算机名。当我刚输入命令时,我得到一个顶部有“name”的列表和一个computername列表

但是,当我使用Write out循环写出$computerin的内容时,我会得到一个@name=Computer1}


发生了什么事?为什么我不能获得一个干净的计算机阵列来使用?

对于每个通过管道传输到
选择名称
的输入对象,它将创建一个新对象,该对象具有单个属性
名称
,其值从输入对象上的相应属性复制而来

要仅获取输入对象的
名称
属性值,请使用
选择对象
-ExpandProperty
参数:

$Computers = Get-adcomputer -filter "OperatingSystem -notlike '*server*'" -properties * |Where-Object {$_.LastLogonDate -gt $time -and ($_.Enabled -eq $true) -and ($_.name -ne 'Rose*')} |Select -ExpandProperty Name

现在,
$computers
将是一个字符串数组,而不是一个具有
名称
属性的对象数组

对于通过管道传输到
选择名称
的每个输入对象,它将创建一个具有单个属性
名称
的新对象,其值将从输入对象上的相应属性复制

要仅获取输入对象的
名称
属性值,请使用
选择对象
-ExpandProperty
参数:

$Computers = Get-adcomputer -filter "OperatingSystem -notlike '*server*'" -properties * |Where-Object {$_.LastLogonDate -gt $time -and ($_.Enabled -eq $true) -and ($_.name -ne 'Rose*')} |Select -ExpandProperty Name

现在,
$computers
将是一个字符串数组,而不是一个带有
名称
属性的对象数组

该死,我忘了-ExpandedProperty了。这很有效,谢谢你!该死,我忘了-ExpandedProperty。这很有效,谢谢你!