2017-09-14 75 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天的研究,您在短短几分鐘內解決了我的問題。榮譽。 –

相關問題