Select-String
尋找字串和檔案中的文字。
語法
Select-String
[-Culture <String>]
[-Pattern] <String[]>
[-Path] <String[]>
[-SimpleMatch]
[-CaseSensitive]
[-Quiet]
[-List]
[-NoEmphasis]
[-Include <String[]>]
[-Exclude <String[]>]
[-NotMatch]
[-AllMatches]
[-Encoding <Encoding>]
[-Context <Int32[]>]
[<CommonParameters>]
Select-String
[-Culture <String>]
-InputObject <PSObject>
[-Pattern] <String[]>
-Raw
[-SimpleMatch]
[-CaseSensitive]
[-List]
[-NoEmphasis]
[-Include <String[]>]
[-Exclude <String[]>]
[-NotMatch]
[-AllMatches]
[-Encoding <Encoding>]
[-Context <Int32[]>]
[<CommonParameters>]
Select-String
[-Culture <String>]
-InputObject <PSObject>
[-Pattern] <String[]>
[-SimpleMatch]
[-CaseSensitive]
[-Quiet]
[-List]
[-NoEmphasis]
[-Include <String[]>]
[-Exclude <String[]>]
[-NotMatch]
[-AllMatches]
[-Encoding <Encoding>]
[-Context <Int32[]>]
[<CommonParameters>]
Select-String
[-Culture <String>]
[-Pattern] <String[]>
[-Path] <String[]>
-Raw
[-SimpleMatch]
[-CaseSensitive]
[-List]
[-NoEmphasis]
[-Include <String[]>]
[-Exclude <String[]>]
[-NotMatch]
[-AllMatches]
[-Encoding <Encoding>]
[-Context <Int32[]>]
[<CommonParameters>]
Select-String
[-Culture <String>]
[-Pattern] <String[]>
-LiteralPath <String[]>
-Raw
[-SimpleMatch]
[-CaseSensitive]
[-List]
[-NoEmphasis]
[-Include <String[]>]
[-Exclude <String[]>]
[-NotMatch]
[-AllMatches]
[-Encoding <Encoding>]
[-Context <Int32[]>]
[<CommonParameters>]
Select-String
[-Culture <String>]
[-Pattern] <String[]>
-LiteralPath <String[]>
[-SimpleMatch]
[-CaseSensitive]
[-Quiet]
[-List]
[-NoEmphasis]
[-Include <String[]>]
[-Exclude <String[]>]
[-NotMatch]
[-AllMatches]
[-Encoding <Encoding>]
[-Context <Int32[]>]
[<CommonParameters>]
Description
Cmdlet Select-String
會使用正則表達式比對來搜尋輸入字串和檔案中的文字模式。 您可以在 UNIX 或 findstr.exe
Windows 中使用Select-String
類似 grep
。
Select-String
是以文字行為基礎。 根據預設, Select-String
會在每一行中尋找第一個相符專案,並針對每個相符項目顯示檔名、行號,以及包含相符專案之行中的所有文字。 您可以指示 Select-String
每個行尋找多個相符專案、在相符專案前後顯示文字,或顯示布爾值 (True 或 False),指出是否找到相符專案。
Select-String
可以在每個輸入檔中的第一個相符項目之後顯示所有文字相符專案或停止。
Select-String
可用來顯示不符合指定模式的所有文字。
您也可以指定應該 Select-String
預期特定字元編碼,例如當您搜尋 Unicode 文字的檔案時。 Select-String
會使用位元組順序標記 (BOM) 來偵測檔案的編碼格式。 如果檔案沒有 BOM,則會假設編碼方式為 UTF8。
範例
範例 1:尋找區分大小寫的相符專案
此範例會執行將管線向下傳送至 Select-String
Cmdlet 之文字的區分大小寫比對。
'Hello', 'HELLO' | Select-String -Pattern 'HELLO' -CaseSensitive -SimpleMatch
Hello 和 HELLO 文字字串會向下傳送至 Select-String
Cmdlet。
Select-String
會使用 Pattern 參數來指定 HELLO。 CaseSensitive 參數會指定大小寫必須只符合大寫模式。 SimpleMatch 是選擇性參數,並指定模式中的字串不會解譯為正則表達式。
Select-String
會在 PowerShell 控制台中顯示 HELLO 。
範例 2:尋找文字檔中的相符專案
此命令會搜尋目前目錄中擴展名為的所有檔案 .txt
。 輸出會顯示包含指定字串之檔案中的行。
Get-Alias | Out-File -FilePath .\Alias.txt
Get-Command | Out-File -FilePath .\Command.txt
Select-String -Path .\*.txt -Pattern 'Get-'
Alias.txt:8:Alias cat -> Get-Content
Alias.txt:28:Alias dir -> Get-ChildItem
Alias.txt:43:Alias gal -> Get-Alias
Command.txt:966:Cmdlet Get-Acl
Command.txt:967:Cmdlet Get-Alias
在此範例中,Get-Alias
和 Get-Command
會與 Cmdlet 搭配使用,在目前目錄中建立兩個文本檔,Alias.txt和Command.txt。Out-File
Select-String
使用Path參數搭配星號 (*
) 通配符來搜尋目前目錄中擴展名為.txt
的所有檔案。 Pattern 參數會指定要符合 Get-的文字。 Select-String
會在 PowerShell 控制台中顯示輸出。 檔名和行號在包含 Pattern 參數相符的每個內容行前面。
範例 3:尋找模式比對
在此範例中,會搜尋多個檔案,以尋找指定模式的相符專案。 此模式會使用正則表示式數量值。 如需詳細資訊,請參閱 about_Regular_Expressions。
Select-String -Path "$PSHOME\en-US\*.txt" -Pattern '\?'
C:\Program Files\PowerShell\6\en-US\default.help.txt:27: beginning at https://go.microsoft.com/fwlink/?LinkID=108518.
C:\Program Files\PowerShell\6\en-US\default.help.txt:50: or go to: https://go.microsoft.com/fwlink/?LinkID=210614
Cmdlet Select-String
使用兩個參數 Path 和 Pattern。 Path 參數會使用指定 PowerShell 目錄的變數$PSHOME
。 路徑的其餘部分包含 en-US 子目錄,並指定目錄中的每個*.txt
檔案。 Pattern 參數會指定比對每個檔案中的問號 (?
)。 反斜杠 (\
) 用來作為逸出字元,而且是必要的,因為問號 (?
) 是正則表達式數量值。 Select-String
會在 PowerShell 控制台中顯示輸出。 檔名和行號在包含 Pattern 參數相符的每個內容行前面。
範例 4:在函式中使用 Select-String
此範例會建立函式來搜尋PowerShell說明檔中的模式。 在此範例中,函式只存在於PowerShell會話中。 關閉 PowerShell 工作階段時,會刪除函式。 如需詳細資訊,請參閱 about_Functions。
function Search-Help
{
$PSHelp = "$PSHOME\en-US\*.txt"
Select-String -Path $PSHelp -Pattern 'About_'
}
Search-Help
C:\Program Files\PowerShell\7\en-US\default.help.txt:67: The titles of conceptual topics begin with "About_".
C:\Program Files\PowerShell\7\en-US\default.help.txt:70: Get-Help About_<topic-name>
C:\Program Files\PowerShell\7\en-US\default.help.txt:93: Get-Help About_Modules : Displays help about PowerShell modules.
C:\Program Files\PowerShell\7\en-US\default.help.txt:97: about_Updatable_Help
函式會在PowerShell命令行上建立。 命令 Function
會使用名稱 Search-Help
。 按 Enter 鍵開始將語句新增至函式。 >>
從提示中新增每個語句,然後按 Enter,如範例所示。 新增右括弧之後,您就會回到PowerShell提示字元。
函式包含兩個命令。 變數 $PSHelp
會儲存PowerShell說明檔的路徑。 $PSHOME
是 PowerShell 安裝目錄,其子目錄 en-US 會指定目錄中的每個 *.txt
檔案。
函 Select-String
式中的命令會使用 Path 和 Pattern 參數。 Path 參數會$PSHelp
使用 變數來取得路徑。 Pattern 參數會使用字串About_做為搜尋準則。
若要執行函式,請輸入 Search-Help
。 函式的 Select-String
命令會在 PowerShell 控制台中顯示輸出。
範例 5:搜尋 Windows 事件記錄檔中的字串
此範例會在 Windows 事件記錄檔中搜尋字串。 變數 $_
代表管線中的目前物件。 如需詳細資訊,請參閱 about_Automatic_Variables。
$Events = Get-WinEvent -LogName Application -MaxEvents 50
$Events | Select-String -InputObject {$_.message} -Pattern 'Failed'
Cmdlet Get-WinEvent
會使用 LogName 參數來指定應用程式記錄檔。 MaxEvents 參數會從記錄檔取得 50 個最新的事件。 記錄內容會儲存在名為 $Events
的變數中。
變數 $Events
會向下傳送至 Cmdlet 的 Select-String
管線。 Select-String
會使用 InputObject 參數。 變數 $_
代表目前的物件,而 message
是 事件的屬性。 Pattern 參數會指定字串 Failed,並在 中$_.message
搜尋相符專案。 Select-String
會在 PowerShell 控制台中顯示輸出。
範例 6:在子目錄中尋找字串
本範例會搜尋目錄及其所有子目錄是否有特定的文字字串。
Get-ChildItem -Path C:\Windows\System32\*.txt -Recurse |
Select-String -Pattern 'Microsoft' -CaseSensitive
Get-ChildItem
會使用 Path 參數來指定 C:\Windows\System32*.txt。 Recurse 參數包含子目錄。 物件會從管線向下傳送至 Select-String
。
Select-String
會使用 Pattern 參數,並指定字串Microsoft。 CaseSensitive 參數用來比對字串的確切大小寫。 Select-String
會在 PowerShell 控制台中顯示輸出。
注意
視您的許可權而定,您可能會在 輸出中看到拒絕 存取的訊息。
範例 7:尋找不符合模式的字串
此範例示範如何排除不符合模式的數據行。
Get-Command | Out-File -FilePath .\Command.txt
Select-String -Path .\Command.txt -Pattern 'Get', 'Set' -NotMatch
Cmdlet 會將 Get-Command
物件向下傳送至 管線, Out-File
以在目前目錄中建立 Command.txt 檔案。 Select-String
會使用Path參數來指定Command.txt檔案。 Pattern 參數會將 Get 和 Set 指定為搜尋模式。 NotMatch 參數會從結果中排除 Get 和 Set。
Select-String
會在不包含 Get 或 Set 的 PowerShell 控制台中顯示輸出。
範例 8:尋找相符專案前後的行
此範例示範如何取得相符模式前後的行。
Get-Command | Out-File -FilePath .\Command.txt
Select-String -Path .\Command.txt -Pattern 'Get-Computer' -Context 2, 3
Command.txt:986:Cmdlet Get-CmsMessage 6.1.0.0 Microsoft.PowerShell.Security
Command.txt:987:Cmdlet Get-Command 6.1.2.0 Microsoft.PowerShell.Core
> Command.txt:988:Cmdlet Get-ComputerInfo 6.1.0.0 Microsoft.PowerShell.Management
Command.txt:990:Cmdlet Get-Content 6.1.0.0 Microsoft.PowerShell.Management
Command.txt:991:Cmdlet Get-ControlPanelItem 3.1.0.0 Microsoft.PowerShell.Management
Command.txt:992:Cmdlet Get-Credential 6.1.0.0 Microsoft.PowerShell.Security
Cmdlet 會將 Get-Command
物件向下傳送至 管線, Out-File
以在目前目錄中建立 Command.txt 檔案。 Select-String
會使用Path參數來指定Command.txt檔案。 Pattern 參數會Get-Computer
指定為搜尋模式。 Context 參數會在前後使用兩個值,並以角括弧 (>
) 標記輸出中的模式相符專案。 Context 參數會在第一個模式比對之前輸出兩行,並在最後一個模式比對之後輸出三行。
範例 9:尋找所有模式相符專案
此範例示範 AllMatches 參數如何在一行文字中尋找每個模式相符專案。 根據預設, Select-String
只會在文字行中尋找第一個出現的模式。 此範例會使用與 Cmdlet 一起 Get-Member
找到的物件屬性。
$A = Get-ChildItem -Path "$PSHOME\en-US\*.txt" | Select-String -Pattern 'PowerShell'
$A
C:\Program Files\PowerShell\7\en-US\default.help.txt:3: PowerShell Help System
C:\Program Files\PowerShell\7\en-US\default.help.txt:6: Displays help about PowerShell cmdlets and concepts.
C:\Program Files\PowerShell\7\en-US\default.help.txt:9: PowerShell Help describes PowerShell cmdlets
$A.Matches
Groups : {0}
Success : True
Name : 0
Captures : {0}
Index : 4
Length : 10
Value : PowerShell
$A.Matches.Length
8
$B = Get-ChildItem -Path "$PSHOME\en-US\*.txt" | Select-String -Pattern 'PowerShell' -AllMatches
$B.Matches.Length
9
Cmdlet Get-ChildItem
會使用 Path 參數。 Path 參數會使用指定 PowerShell 目錄的變數$PSHOME
。 路徑的其餘部分包含 en-US 子目錄,並指定目錄中的每個*.txt
檔案。 物件 Get-ChildItem
會儲存在變數中 $A
。 變數 $A
會向下傳送至 Cmdlet 的 Select-String
管線。 Select-String
會使用 Pattern 參數來搜尋字串 PowerShell 的每個檔案。
從 PowerShell 命令行顯示 $A
變數內容。 有一行包含兩個出現的字串 PowerShell。
屬性 $A.Matches
會列出每個行上第一次出現的模式 PowerShell 。
屬性 $A.Matches.Length
會計算每個行上第一次出現的模式 PowerShell 。
$B
變數會Get-ChildItem
使用相同的 和 Select-String
Cmdlet,但會新增 AllMatches 參數。 AllMatches 會在每個行上尋找每個模式 的 PowerShell 。 儲存在和 $B
變數中的$A
物件完全相同。
屬性 $B.Matches.Length
會因為每一行而增加,因此會計算每個模式 PowerShell 的出現次數。
範例 10 - 使用 'Out-String' 將管線物件轉換成字串
ToString()
管道對象的結果與 PowerShell 格式化系統所產生的豐富字串表示不同。 因此,您可能需要使用管線將對象傳送至第一個 Out-String
。
管線可將 Out-String
格式化的輸出轉換成單一多行字串物件。 這表示當找到相符專案時 Select-String
,它會輸出整個多行字串。
PS> $hash = @{
Name = 'foo'
Category = 'bar'
}
# !! NO output, due to .ToString() conversion
$hash | Select-String -Pattern 'foo'
# Out-String converts the output to a single multi-line string object
PS> $hash | Out-String | Select-String -Pattern 'foo'
Name Value
---- -----
Name foo
Category bar
# Out-String -Stream converts the output to a multiple single-line string objects
PS> $hash | Out-String -Stream | Select-String -Pattern 'foo'
Name foo
管線可將 Out-String -Stream
格式化的輸出轉換成多個單行字串物件。 這表示當找到相符專案時 Select-String
,它只會輸出相符行。
參數
-AllMatches
指出 Cmdlet 會在每個文字行中搜尋多個相符專案。 如果沒有此參數, Select-String
則只會在每個文字行中尋找第一個相符專案。
當在文字行中找到一個以上的相符專案時 Select-String
,它仍然只會針對該行發出一個 MatchInfo 物件,但 物件的 Matchs 屬性會包含所有相符專案。
注意
搭配 SimpleMatch 參數使用時,會忽略此參數。 如果您想要傳回所有相符專案,以及您要搜尋的模式包含正則表示式字元,您必須逸出這些字元,而不是使用 SimpleMatch。 如需逸出正則表達式的詳細資訊,請參閱 about_Regular_Expressions 。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-CaseSensitive
表示 Cmdlet 相符專案區分大小寫。 根據預設,相符專案不會區分大小寫。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Context
擷取符合模式之行前後的指定行數。
如果您輸入一個數位做為此參數的值,該數位會決定相符專案前後擷取的行數。 如果您輸入兩個數位做為值,則第一個數位會決定相符專案之前的行數,而第二個數位會決定相符專案后的行數。 例如: -Context 2,3
。
在預設顯示器中,具有相符專案的行會以顯示器第一欄的右角括號 () (>
ASCII 62) 表示。 未標記的行是內容。
Context 參數不會變更 所產生的Select-String
物件數目。
Select-String
為每個相符項目產生一個 MatchInfo 物件。 內容會儲存為物件Context屬性中的字串數位。
當命令的 Select-String
輸出從管線向下傳送至另一個 Select-String
命令時,接收命令只會搜尋相符行中的文字。 相符行是 MatchInfo 物件的 Line 屬性值,而不是內容行中的文字。 因此, Context 參數在接收 Select-String
命令上無效。
當內容包含相符專案時, 每個相符專案的 MatchInfo 物件會包含所有內容行,但重疊的行只會在顯示中出現一次。
類型: | Int32[] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Culture
指定符合指定模式的文化特性名稱。 Culture 參數必須與 SimpleMatch 參數搭配使用。 默認行為會使用目前 PowerShell Runspace (session) 的文化特性。
若要取得所有支援文化特性的清單,請使用 Get-Culture -ListAvailable
命令。
此外,此參數接受下列自變數:
- CurrentCulture,預設值為 ;
- 序數,即非語言二進位比較;
- 不因文化特性而異的比較。
使用 Select-String -Culture Ordinal -CaseSensitive -SimpleMatch
命令,您取得最快的二進位比較。
Culture 參數會使用 Tab 鍵自動完成來捲動指定可用文化特性的自變數清單。 若要列出所有可用的自變數,請使用下列命令:
(Get-Command Select-String).Parameters.Culture.Attributes.ValidValues
如需 .NET CultureInfo.Name 屬性的詳細資訊,請參閱 CultureInfo.Name。
Culture 參數是在 PowerShell 7 中引進的。
類型: | String |
Position: | Named |
預設值: | Culture of the current PowerShell session |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Encoding
指定目標檔案的編碼類型。 預設值是 utf8NoBOM
。
此參數可接受的值如下:
ascii
:使用 ASCII (7 位) 字元集的編碼方式。ansi
:針對目前文化特性的 ANSI 代碼頁,使用 的編碼方式。 此選項已在PowerShell 7.4中新增。bigendianunicode
:使用 big-endian 位元組順序以 UTF-16 格式編碼。bigendianutf32
:使用 big-endian 位元組順序以 UTF-32 格式編碼。oem
:使用 MS-DOS 和控制台程式的預設編碼方式。unicode
:使用位元組順序以UTF-16格式編碼。utf7
:以 UTF-7 格式編碼。utf8
:以 UTF-8 格式編碼。utf8BOM
:使用位元節順序標記以 UTF-8 格式編碼 (BOM)utf8NoBOM
:以 UTF-8 格式編碼,不含位元組順序標記 (BOM)utf32
:以 UTF-32 格式編碼。
從 PowerShell 6.2 開始,Encoding 參數也允許已註冊代碼頁的數值識別元(例如 -Encoding 1251
)或已註冊代碼頁的字串名稱(例如 )。-Encoding "windows-1251"
如需詳細資訊,請參閱 Encoding.CodePage 的 .NET 檔。
從 PowerShell 7.4 開始,您可以使用 Ansi
Encoding 參數的值,傳遞目前文化特性 ANSI 代碼頁的數值標識碼,而不需要手動指定它。
注意
不再建議使用UTF-7* 。 自 PowerShell 7.1 起,如果您為 Encoding 參數指定utf7
,則會撰寫警告。
類型: | Encoding |
接受的值: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
預設值: | UTF8NoBOM |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Exclude
排除指定的專案。 此參數的值會 限定Path 參數。 輸入路徑專案或模式,例如 *.txt
。 允許通配符。
類型: | String[] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | True |
-Include
包含指定的專案。 此參數的值會 限定Path 參數。 輸入路徑專案或模式,例如 *.txt
。 允許通配符。
類型: | String[] |
Position: | Named |
預設值: | None |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | True |
-InputObject
指定要搜尋的文字。 輸入包含文字的變數,或輸入取得文字的命令或表達式。
使用 InputObject 參數與將字串向下傳送至 Select-String
的字串不同。
當您使用管線將多個字串傳送至 Select-String
Cmdlet 時,它會搜尋每個字串中的指定文字,並傳回包含搜尋文字的每個字串串。
當您使用 InputObject 參數提交字串集合時, Select-String
會將集合視為單一合併字串。 Select-String
如果字串在任何字串中尋找搜尋文字,則會以單位的形式傳回字串。
FileInfo 物件會被視為檔案的路徑。 指定檔案路徑時, Select-String
搜尋檔案的內容,而不是 ToString()
物件的表示。
類型: | PSObject |
Position: | Named |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-List
每個輸入檔只會傳回相符文字的第一個實例。 這是擷取具有符合正則表達式內容的檔案清單最有效率的方式。
根據預設, Select-String
會針對所找到的每個相符專案傳回 MatchInfo 物件。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-LiteralPath
指定要搜尋之檔案的路徑。 LiteralPath 參數的值會完全依照其類型一樣使用。 不會將任何字元解譯為通配符。 如果路徑包含逸出字元,請以單引弧括住它。 單引號會告知PowerShell不要將任何字元解譯為逸出序列。 如需詳細資訊,請參閱 about_Quoting_Rules。
類型: | String[] |
別名: | PSPath, LP |
Position: | Named |
預設值: | None |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | False |
-NoEmphasis
根據預設,Select-String
反白顯示符合您使用 Pattern 參數搜尋之模式的字串。 NoEmphasis 參數會停用醒目提示。
強調會根據您的PowerShell背景和文字色彩使用負色。 例如,如果您的PowerShell色彩是黑色背景,且有白色文字。 強調的是具有黑色文字的白色背景。
此參數是在 PowerShell 7 中引進的。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-NotMatch
NotMatch 參數會尋找不符合指定模式的文字。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Path
指定要搜尋之檔案的路徑。 允許通配符。 預設位置是本機目錄。
指定目錄中的檔案,例如 log1.txt
、 *.doc
或 *.*
。 如果您只指定目錄,命令會失敗。
類型: | String[] |
Position: | 1 |
預設值: | Local directory |
必要: | True |
接受管線輸入: | True |
接受萬用字元: | True |
-Pattern
指定要在每個行上尋找的文字。 模式值會被視為正則表達式。
若要瞭解正則表達式,請參閱 about_Regular_Expressions。
類型: | String[] |
Position: | 0 |
預設值: | None |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-Quiet
指出 Cmdlet 會傳回簡單的回應,而不是 MatchInfo 物件。 如果找到模式,或$null
找不到模式,則傳回的值$true
為 。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
-Raw
讓 Cmdlet 只輸出相符的字串,而不是 MatchInfo 物件。 這是與 Unix grep 或 Windows findstr.exe 命令最類似的行為。
此參數是在 PowerShell 7 中引進的。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | True |
接受管線輸入: | False |
接受萬用字元: | False |
-SimpleMatch
指出 Cmdlet 使用簡單比對,而不是正則表示式比對。 在簡單的比對中,Select-String
搜尋 Pattern 參數中的文字輸入。 它不會將 Pattern 參數的值解譯為正則表達式語句。
此外,使用 SimpleMatch 時,傳回的 MatchInfo 物件的 Matchs 屬性是空的。
注意
當此參數與 AllMatches 參數搭配使用時,會忽略 AllMatches。
類型: | SwitchParameter |
Position: | Named |
預設值: | False |
必要: | False |
接受管線輸入: | False |
接受萬用字元: | False |
輸入
您可以使用管線將具有 ToString()
方法的任何物件傳送至這個 Cmdlet。
輸出
根據預設,此 Cmdlet 會針對找到的每個相符項目傳 回 MatchInfo 物件。
當您使用 Quiet 參數時,這個 Cmdlet 會 傳回布爾 值,指出是否已找到模式。
當您使用 Raw 參數時,這個 Cmdlet 會傳回一組符合模式的 String 物件。
備註
PowerShell 包含下列的 Select-String
別名:
- 所有平臺:
sls
Select-String
類似於 grep
UNIX 或 findstr.exe
Windows 中的 。
sls
Cmdlet 的Select-String
別名是在 PowerShell 3.0 中引進的。
注意
根據 PowerShell 命令的已核准動詞,Cmdlet 的官方別名前置詞 Select-*
為 sc
,而不是 sl
。 因此,的適當別名 Select-String
應該是 scs
,而不是 sls
。 這是此規則的例外狀況。
將物件傳送至 Select-String
時:
- FileInfo 物件會被視為檔案的路徑。 指定檔案路徑時,
Select-String
搜尋檔案的內容,而不是ToString()
物件的表示。 ToString()
管道對象的結果與 PowerShell 格式化系統所產生的豐富字串表示不同。 因此,您可能需要使用管線將對象傳送至第一個Out-String
。 如需詳細資訊,請參閱範例 10。
若要使用 Select-String
,請輸入您想要尋找的文字做為 Pattern 參數的值。 若要指定要搜尋的文字,請使用下列準則:
- 在引號字串中輸入文字,然後將它傳送至
Select-String
。 - 將文字字串儲存在變數中,然後將變數指定為 InputObject 參數的值。
- 如果文字儲存在檔案中,請使用 Path 參數來指定檔案的路徑。
根據預設,Select-String
將 Pattern 參數的值解譯為正則表達式。 如需詳細資訊,請參閱 about_Regular_Expressions。 您可以使用 SimpleMatch 參數來覆寫正規表示式比對。 SimpleMatch 參數會在輸入中尋找 Pattern 參數值的實例。
的預設輸出 Select-String
是 MatchInfo 物件,其中包含相符專案的詳細資訊。 當您在檔案中搜尋文字時,對象中的資訊很有用,因為 MatchInfo 物件具有檔名和 Line 等屬性。 當輸入不是來自檔案時,這些參數的值會是 InputStream。
如果您不需要 MatchInfo 物件中的資訊,請使用 Quiet 參數。 Quiet 參數會傳回 Boolean 值 (True 或 False),指出它是否找到相符專案,而不是 MatchInfo 物件。
比對片語時, Select-String
會使用為系統設定的目前文化特性。 若要尋找目前的文化特性,請使用 Get-Culture
Cmdlet。
若要尋找 MatchInfo 物件的屬性,請輸入下列命令:
Select-String -Path test.txt -Pattern 'test' | Get-Member | Format-List -Property *