選取單一物件或一組物件的指定屬性。它也可以從物件陣列選取未重複的物件,或從物件陣列的開頭或結尾選取指定個數的物件。
語法
Select-Object [[-Property] <Object[]>] [-ExcludeProperty <string[]>] [-ExpandProperty <string>] [-First <int>] [-InputObject <psobject>] [-Last <int>] [-Skip <int>] [-Unique] [<CommonParameters>] Select-Object [-Index <Int32[]>] [-InputObject <psobject>] [-Unique] [<CommonParameters>]
描述
Select-Object Cmdlet 只會取得一個物件或一組物件的指定屬性。它也可以從物件陣列選取未重複的物件,或從物件陣列的開頭或結尾選取指定個數的物件。
如果您使用 Select-Object 來選取指定的屬性,它就會從輸入物件複製那些屬性的值,並建立具有指定屬性與複製值的新物件。
請使用 Property 參數指定要選取的屬性,或是使用 First、Last、Unique、Skip 和 Index 參數從輸入物件的陣列選取特定物件。若要篩選出更明確的物件,請使用 Where-Object Cmdlet。
參數
-ExcludeProperty <string[]>
從選取範圍中移除指定的屬性。允許使用萬用字元。只有當命令也包含 Property 參數時,這個參數才有作用。
Property 參數的值可以是計算屬性,亦即指定名稱並針對屬性顯示計算值的雜湊表。有效的索引鍵包括:
-- Name 或 Label <字串>
-- Expression <字串> 或 <指令碼區塊>
如需詳細資訊,請參閱範例。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
true |
-ExpandProperty <string>
指定要選取的屬性,並表示應嘗試展開該屬性。允許在屬性名稱中使用萬用字元。
例如,若指定的屬性是陣列,在輸出中會包含該陣列的每個值。若屬性包含物件,在輸出中則會顯示該物件的屬性。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
true |
-First <int>
指定要從輸入物件陣列開頭選取的物件個數。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Index <Int32[]>
根據物件的索引值,從陣列選取物件。請以逗號分隔的清單輸入索引。
陣列中的索引以 0 為起始,其中 0 代表第一個值,(n-1) 代表最後一個值。
必要? |
false |
位置? |
named |
預設值 |
無 |
接受管線輸入? |
false |
接受萬用字元? |
false |
-InputObject <psobject>
指定要透過管線傳送給 Cmdlet 的物件。此參數可讓您經由管道將物件輸出至 Select-Object。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
true (ByValue) |
接受萬用字元? |
false |
-Last <int>
指定要從輸入物件陣列結尾選取的物件個數。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Property <Object[]>
指定要選取的屬性。允許使用萬用字元。
Property 參數的值可以是新的計算屬性。若要建立計算屬性,請使用雜湊表。有效的索引鍵包括:
-- Name (或 Label) <字串>
-- Expression <字串> 或 <指令碼區塊>
必要? |
false |
位置? |
1 |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
true |
-Skip <int>
略過 (不選取) 指定的項目數。根據預設,Skip 參數會從陣列或物件清單的開頭開始計數,但如果命令使用 Last 參數,則會從清單或陣列的結尾開始計數。
不像 Index 參數是從 0 開始計數,Skip 參數是起始於 1。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Unique
指定一旦輸入物件的子集具有相同的屬性和值,則僅選取單一子集成員。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
<CommonParameters>
這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.
輸入和輸出
輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。
輸入 |
System.Management.Automation.PSObject 您可經由管道將任何物件輸出至 Select-Object。 |
輸出 |
System.Management.Automation.PSObject |
附註
您也可以利用內建的別名 "select" 來參照 Select-Object。如需詳細資訊,請參閱 about_Aliases。
範例 1
C:\PS>get-process | select-object ProcessName,Id,WS 描述 ----------- 這個命令顯示處理序的清單。只會顯示處理序的名稱、識別碼及工作組 (WS) 屬性。
範例 2
C:\PS>get-process | select-object processname -expandproperty modules | format-list ProcessName : 00THotkey Size : 256 Company : TOSHIBA Corporation FileVersion : 1, 0, 0, 27 ProductVersion : 6, 2, 0, 0 Description : THotkey Product : TOSHIBA THotkey ModuleName : 00THotkey.exe FileName : C:\WINDOWS\system32\00THotkey.exe BaseAddress : 4194304 描述 ----------- 這個命令顯示電腦上執行的處理序所使用之模組的相關資訊。它使用 ExpandProperty 參數來顯示模組屬性內含的詳細資料。
範例 3
C:\PS>get-process | sort-object -property WS | select-object -Last 5 Handles NPM(K) PM(K) WS(K) VS(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 2866 320 33432 45764 203 222.41 1292 svchost 577 17 23676 50516 265 50.58 4388 WINWORD 826 11 75448 76712 188 19.77 3780 Ps 1367 14 73152 88736 216 61.69 676 Ps 1612 44 66080 92780 380 900.59 6132 INFOPATH 描述 ----------- 這個命令會顯示使用最多記憶體的五個處理序。Sort-Object Cmdlet 用於依記憶體 (工作組) 使用量排序處理序,而 Select-Object Cmdlet 則用來僅選取結果物件陣列的最後五個成員。
範例 4
C:\PS>get-process | select-object -property ProcessName,@{Name="Start Day"; Expression = {$_.StartTime.DayOfWeek}} ProcessName StartDay ---- -------- alg Wednesday ati2evxx Wednesday ati2evxx Thursday ... 描述 ----------- 這個命令顯示電腦上執行之處理序的名稱與開始日期。 Property 參數的值為 ProcessName 以及名為 "Start Day" 的計算屬性。"Start Day" 屬性是使用雜湊表搭配 Name 和 Expression 索引鍵加入的。
範例 5
C:\PS>"a","b","c","a","a","a" | select-object -unique a b c 描述 ----------- 這個命令顯示字元陣列中的唯一字元。
範例 6
C:\PS>$a = get-eventlog -log "Windows PowerShell" C:\PS> $a | select-object -index 0, ($a.count - 1) 描述 ----------- 這些命令會取得 Windows PowerShell 事件記錄檔中的第一筆 (最新) 和最後一筆 (最舊) 事件。 第一個命令會使用 Get-EventLog Cmdlet 取得 Windows PowerShell 記錄檔中的所有事件,然後將這些事件儲存到 $a 變數。 第二個命令會使用管線運算子 (|) 將 $a 中的事件傳送給 Select-Object Cmdlet。Select-Object 命令會使用 Index 參數,依照項目的索引編號選取項目。第一個事件的索引為 0。最後一個事件的索引則是 $a 中的項目數減去 1。
範例 7
C:\PS>new-pssession -computername (get-content servers.txt | select-object -skip 1) 描述 ----------- 這個命令會在 Servers.txt 檔案所列出的每個電腦上建立新的 PSSession,但第一個除外。 這個命令會使用 Select-Object Cmdlet 選取電腦名稱清單中第一個以外的所有電腦,然後將產生的電腦清單設為 New-PSSession Cmdlet 的 ComputerName 參數值。
請參閱