2017-09-14 86 views
3

我想创建我可以使用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}} 

回答

3

$ComputerList1含有包含一个字符串数组对象。 $ComputerList2包含由Get-ADComputer返回的自定义PowerShell对象,然后将其过滤为仅包含它的Name属性。

通过将每个管道连接到Get-Member,您可以看到两者之间的区别。

$ComputerList1 | Get-Member 
$ComputerList2 | Get-Member 

每对方的回答,您可以使用-ExpandProperty开关Select-Object cmdlet的拍摄物体的一个属性,并为它的类型的新对象返回其内容。例如,如果该属性包含一个字符串,则会得到一个字符串对象。 E.g:

$ComputerList2 = Get-ADComputer -Filter {Name -like "WS7-HUR*"} | Select ExpandProperty Name 

或者你也可以做到这一点直接访问属性,并将其分配给一个变量:

$ComputerList2 = (Get-ADComputer -Filter {Name -like "WS7-HUR*"}).Name 
1
$ComputerList2 = Get-ADComputer -Filter {Name -like "WS7-HUR*"} | Select -ExpandProperty Name 
+1

谢谢,伙计们。你太棒了。经过3天的研究,您在短短几分钟内解决了我的问题。荣誉。 –

相关问题