我正在尝试创建我可以使用 Get-Computer 处理的计算机列表。
以下是创建列表的两种方法。
我不明白为什么它们不同,或者我如何才能使两种方法的结果具有相同的值。
我的代码是:
$ComputerList1 = "WS7-HUR-MANAGER","WS7-HUR-NURSE"
$ComputerList2 = Get-ADComputer -Filter {Name -like "WS7-HUR*"} | Select` Name
Get-Variable ComputerList1 | Select Name, Value
Get-Variable ComputerList2 | Select Name, Value
输出:
Name Value
---- -----
ComputerList1 {WS7-HUR-MANAGER, WS7-HUR-NURSE}
ComputerList2 {@{Name=WS7-HUR-MANAGER}, @{Name=WS7-HUR-NURSE}}
最佳答案
$ComputerList1
包含一个包含字符串的数组对象。$ComputerList2
包含一个自定义 PowerShell 对象,该对象由 Get-ADComputer 返回,然后经过过滤以仅包含它的 Name
属性。
您可以通过将每个管道传递给 Get-Member 来查看两者之间的差异。
$ComputerList1 | Get-Member
$ComputerList2 | Get-Member
根据另一个答案,您可以使用
-ExpandProperty
cmdlet 的 Select-Object
开关来获取对象的一个属性并将其内容作为其类型的新对象返回。例如,如果该属性包含一个字符串,则您将获得一个字符串对象。例如: $ComputerList2 = Get-ADComputer -Filter {Name -like "WS7-HUR*"} | Select ExpandProperty Name
或者您也可以这样做以直接访问该属性并将其分配给一个变量:
$ComputerList2 = (Get-ADComputer -Filter {Name -like "WS7-HUR*"}).Name
关于arrays - 我不明白为什么我的数组产生我不能使用的输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46226596/