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>]
説明
Select-String
コマンドレットは、正規表現の照合を使用して、入力文字列とファイル内のテキスト パターンを検索します。 UNIX のgrep
や Windows のfindstr.exe
と同様のSelect-String
を使用できます。
Select-String
はテキスト行に基づいています。 既定では、 Select-String
は各行で最初の一致を検索し、一致するたびに、ファイル名、行番号、および一致を含む行内のすべてのテキストが表示されます。 Select-String
を指定して、1 行に複数の一致を検索したり、一致の前後にテキストを表示したり、一致が見つかったかどうかを示すブール値 (True または False) を表示したりできます。
Select-String
では、すべてのテキストの一致を表示したり、各入力ファイルの最初の一致後に停止したりできます。
Select-String
は、指定したパターンと一致しないすべてのテキストを表示するために使用できます。
また、Unicode テキストのファイルを検索する場合など、 Select-String
に特定の文字エンコードを想定するように指定することもできます。 Select-String
では、バイトオーダー マーク (BOM) を使用してファイルのエンコード形式を検出します。 ファイルに BOM がない場合は、エンコードが UTF8 であると見なされます。
例
例 1: 大文字と小文字が区別される一致を検索する
この例では、パイプラインから Select-String
コマンドレットに送信されたテキストの大文字と小文字が区別されます。
'Hello', 'HELLO' | Select-String -Pattern 'HELLO' -CaseSensitive -SimpleMatch
テキスト文字列 Hello と HELLO は、パイプラインから Select-String
コマンドレットに送信されます。
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
を Out-File
コマンドレットと共に使用して、現在のディレクトリに 2 つのテキスト ファイル ( Alias.txt と Command.txt) を作成します。
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
Select-String
コマンドレットは、Path と Pattern の 2 つのパラメーターを使用します。 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 プロンプトに戻ります。
この関数には、2 つのコマンドが含まれています。 $PSHelp
変数には、PowerShell ヘルプ ファイルへのパスが格納されます。 $PSHOME
は、ディレクトリ内の各*.txt
ファイルを指定するサブディレクトリ en-US を含む PowerShell インストール ディレクトリです。
関数の 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'
Get-WinEvent
コマンドレットは、LogName パラメーターを使用してアプリケーション ログを指定します。 MaxEvents パラメーターは、ログから最新の 50 個のイベントを取得します。 ログの内容は、 $Events
という名前の変数に格納されます。
$Events
変数は、パイプラインから 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 コンソールに出力を表示します。
Note
アクセス許可によっては、 Access が拒否 メッセージが出力に表示されることがあります。
例 7: パターンと一致しない文字列を検索する
この例では、パターンに一致しないデータ行を除外する方法を示します。
Get-Command | Out-File -FilePath .\Command.txt
Select-String -Path .\Command.txt -Pattern 'Get', 'Set' -NotMatch
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
Get-Command
コマンドレットは、パイプラインの下にあるオブジェクトをOut-File
に送信して、現在のディレクトリにCommand.txt ファイルを作成します。 Select-String
では、 Path パラメーターを使用して、 Command.txt ファイルを指定します。 Pattern パラメーターは、検索パターンとしてGet-Computer
を指定します。 Context パラメーターは、前と後の 2 つの値を使用し、山かっこ (>
) で出力内のパターンの一致をマークします。 Context パラメーターは、最初のパターンが一致する前の 2 行と、最後のパターン一致の後の 3 行を出力します。
例 9: すべてのパターン一致を検索する
この例では、 AllMatches パラメーターがテキスト行で各パターンの一致を検索する方法を示します。 既定では、 Select-String
はテキスト行内のパターンの最初の出現のみを検索します。 この例では、 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
Get-ChildItem
コマンドレットでは、Path パラメーターを使用します。 Path パラメーターは、PowerShell ディレクトリを指定する変数$PSHOME
を使用します。 パスの残りの部分には、サブディレクトリ en-US が含まれており、ディレクトリ内の各 *.txt
ファイルを指定します。 Get-ChildItem
オブジェクトは、$A
変数に格納されます。 $A
変数は、パイプラインから Select-String
コマンドレットに送信されます。 Select-String
では、 Pattern パラメーターを使用して、各ファイルで文字列 PowerShell を検索します。
PowerShell コマンド ラインから、 $A
変数の内容が表示されます。 2 回出現する文字列を含む行 PowerShell。
$A.Matches
プロパティは、各行でパターン PowerShell の最初の出現箇所を一覧表示します。
$A.Matches.Length
プロパティは、各行でパターン PowerShell の最初の出現回数をカウントします。
$B
変数は、同じGet-ChildItem
コマンドレットとSelect-String
コマンドレットを使用しますが、AllMatches パラメーターを追加します。 AllMatches では、各行にパターン PowerShell が出現するたびに検索されます。 $A
変数と$B
変数に格納されているオブジェクトは同じです。
$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
コマンドレットがテキストの各行で複数の一致を検索することを示します。 このパラメーターを指定しない場合、 Select-String
はテキストの各行で最初の一致のみを検索します。
1 行 Select-String
複数の一致が見つかると、その行に対して 1 つの MatchInfo オブジェクトのみが出力されますが、オブジェクトの Matches プロパティにはすべての一致が含まれます。
Note
このパラメーターは、 SimpleMatch パラメーターと組み合わせて使用する場合は無視されます。 すべての一致を返し、検索するパターンに正規表現文字が含まれている場合は、 SimpleMatch を使用するのではなく、それらの文字をエスケープする必要があります。 正規表現のエスケープの詳細については、 about_Regular_Expressions を参照してください。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-CaseSensitive
コマンドレットの一致で大文字と小文字が区別されることを示します。 既定では、一致では大文字と小文字は区別されません。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Context
パターンに一致する行の前後に指定された行数をキャプチャします。
このパラメーターの値として 1 つの数値を入力すると、その数値が一致の前後でキャプチャされる行数となります。 値として 2 つの数値を入力すると、最初の数値が一致の前の行数となり、2 番目の数値が一致の後の行数となります。 たとえば、-Context 2,3
のようにします。
既定の表示では、一致する行は、ディスプレイの最初の列の右山かっこ (>
) (ASCII 62) で示されます。 マークされていない行は、コンテキストです。
Context パラメーターは、Select-String
によって生成されるオブジェクトの数を変更しません。
Select-String
では、一致するたびに 1 つの MatchInfo オブジェクトが生成されます。 コンテキストは、オブジェクトの Context プロパティに文字列の配列として格納されます。
Select-String
コマンドの出力がパイプラインから別のSelect-String
コマンドに送信されると、受信コマンドは一致した行のテキストのみを検索します。 一致する行は、コンテキスト行のテキストではなく、MatchInfo オブジェクトの Line プロパティの値です。 その結果、 Context パラメーターは、受信側の Select-String
コマンドでは有効ではありません。
コンテキストに一致が含まれている場合、各一致の MatchInfo オブジェクトにはすべてのコンテキスト行が含まれますが、重複する行はディスプレイに 1 回だけ表示されます。
型: | Int32[] |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Culture
指定したパターンに一致するカルチャ名を指定します。 Culture パラメーターは、SimpleMatch パラメーターと共に使用する必要があります。 既定の動作では、現在の PowerShell 実行空間 (セッション) のカルチャが使用されます。
サポートされているすべてのカルチャの一覧を取得するには、 Get-Culture -ListAvailable
コマンドを使用します。
さらに、このパラメーターは次の引数を受け取ります。
- CurrentCulture(既定値)。
- 序数。これは非言語的二項比較です。
- インバリアント。つまり、カルチャに依存しない比較です。
Select-String -Culture Ordinal -CaseSensitive -SimpleMatch
コマンドを使用すると、最速のバイナリ比較を取得します。
Culture パラメーターは、タブ補完を使用して、使用可能なカルチャを指定する引数の一覧をスクロールします。 使用可能なすべての引数を一覧表示するには、次のコマンドを使用します。
(Get-Command Select-String).Parameters.Culture.Attributes.ValidValues
.NET CultureInfo.Name プロパティの詳細については、「 CultureInfo.Name」を参照してください。
Culture パラメーターは PowerShell 7 で導入されました。
型: | String |
配置: | Named |
規定値: | Culture of the current PowerShell session |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Encoding
ターゲット ファイルのエンコードの種類を指定します。 既定値は utf8NoBOM
です。
このパラメーターに使用できる値は次のとおりです。
ascii
: ASCII (7 ビット) 文字セットのエンコードを使用します。ansi
: 現在のカルチャの ANSI コード ページのエンコードを使用します。 このオプションは PowerShell 7.4 で追加されました。bigendianunicode
: ビッグ エンディアンバイト順を使用して UTF-16 形式でエンコードします。bigendianutf32
: ビッグ エンディアンバイト順を使用して UTF-32 形式でエンコードします。oem
: MS-DOS およびコンソール プログラムの既定のエンコードを使用します。unicode
: リトル エンディアンバイト順を使用して UTF-16 形式でエンコードします。utf7
: UTF-7 形式でエンコードします。utf8
: UTF-8 形式でエンコードします。utf8BOM
: バイト オーダー マーク (BOM) を使用して UTF-8 形式でエンコードします。utf8NoBOM
: バイト オーダー マーク (BOM) を使用せずに UTF-8 形式でエンコードします。utf32
: UTF-32 形式でエンコードします。
PowerShell 6.2 以降では、 Encoding パラメーターを使用すると、登録済みのコード ページの数値 ID ( -Encoding 1251
など) や登録済みコード ページの文字列名 ( -Encoding "windows-1251"
など) も使用できます。 詳細については、 Encoding.CodePage の .NET ドキュメントを参照してください。
PowerShell 7.4 以降では、Encoding パラメーターのAnsi
値を使用して、手動で指定しなくても、現在のカルチャの ANSI コード ページの数値 ID を渡すことができます。
Note
UTF-7* を使用することは推奨されなくなりました。 PowerShell 7.1 の時点で、Encoding パラメーターにutf7
を指定すると警告が書き込まれます。
型: | Encoding |
指定可能な値: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
配置: | Named |
規定値: | UTF8NoBOM |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Exclude
指定された項目を除外します。 このパラメーターの値は、 Path パラメーターを修飾します。 パス要素またはパターン ( *.txt
など) を入力します。 ワイルドカードを使用できます。
型: | String[] |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | True |
-Include
指定した項目を処理対象に含めます。 このパラメーターの値は、 Path パラメーターを修飾します。 パス要素またはパターン ( *.txt
など) を入力します。 ワイルドカードを使用できます。
型: | String[] |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | True |
-InputObject
検索するテキストを指定します。 テキストが格納されている変数を入力するか、テキストを取得するコマンドまたは式を入力します。
InputObject パラメーターを使用することは、パイプラインからSelect-String
に文字列を送信するのと同じではありません。
複数の文字列を Select-String
コマンドレットにパイプすると、各文字列内の指定されたテキストが検索され、検索テキストを含む各文字列が返されます。
InputObject パラメーターを使用して文字列のコレクションを送信すると、Select-String
はコレクションを 1 つの結合文字列として扱います。 Select-String
は、文字列内の検索テキストが見つかると、文字列を単位として返します。
FileInfo オブジェクトは、ファイルへのパスとして扱われます。 ファイル パスを指定すると、 Select-String
はオブジェクトの ToString()
表現ではなく、ファイルの内容を検索します。
型: | PSObject |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-List
一致するテキストの最初のインスタンスのみが各入力ファイルから返されます。 これは、正規表現に一致する内容を持つファイルの一覧を取得する最も効率的な方法です。
既定では、 Select-String
は、検出された一致ごとに MatchInfo オブジェクトを返します。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-LiteralPath
検索するファイルへのパスを指定します。 LiteralPath パラメーターの値は、型指定されたとおりに使用されます。 ワイルドカードとして解釈される文字はありません。 パスにエスケープ文字が含まれている場合は、単一引用符で囲みます。 単一引用符は、エスケープ シーケンスとして文字を解釈しないように PowerShell に指示します。 詳細については、「 about_Quoting_Rules」を参照してください。
型: | String[] |
Aliases: | PSPath, LP |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-NoEmphasis
既定では、 Select-String
は検索したパターンに一致する文字列を Pattern パラメーターで強調表示します。 NoEmphasis パラメーターは強調表示を無効にします。
強調では、PowerShell の背景とテキストの色に基づいて負の色が使用されます。 たとえば、PowerShell の色が白いテキストを含む黒の背景である場合です。 強調は、黒いテキストを含む白い背景です。
このパラメーターは PowerShell 7 で導入されました。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-NotMatch
NotMatch パラメーターは、指定したパターンと一致しないテキストを検索します。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Path
検索するファイルへのパスを指定します。 ワイルドカードを使用できます。 既定の場所は、ローカル ディレクトリです。
log1.txt
、*.doc
、*.*
など、ディレクトリ内のファイルを指定します。 ディレクトリのみを指定すると、コマンドは失敗します。
型: | String[] |
配置: | 1 |
規定値: | Local directory |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | True |
-Pattern
各行で検索するテキストを指定します。 パターン値は正規表現として扱われます。
正規表現の詳細については、 about_Regular_Expressionsを参照してください。
型: | String[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Quiet
コマンドレットが MatchInfo オブジェクトの代わりに単純な応答を返したことを示します。 返される値は、パターンが見つかった場合は $true
、パターンが見つからない場合は $null
されます。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-Raw
コマンドレットで、 MatchInfo オブジェクトではなく、一致する文字列のみを出力します。 これは、Unix grep または Windows findstr.exe コマンドに最も似た動作になります。
このパラメーターは PowerShell 7 で導入されました。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | True |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-SimpleMatch
コマンドレットが正規表現の一致ではなく単純な一致を使用することを示します。 単純な一致では、 Select-String
は、 Pattern パラメーター内のテキストの入力を検索します。 Pattern パラメーターの値は正規表現ステートメントとして解釈されません。
また、SimpleMatch を使用すると、返される MatchInfo オブジェクトの Matches プロパティは空になります。
Note
このパラメーターを AllMatches パラメーターと共に使用すると、 AllMatches は無視されます。
型: | SwitchParameter |
配置: | Named |
規定値: | False |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
入力
ToString()
メソッドを持つ任意のオブジェクトをこのコマンドレットにパイプできます。
出力
既定では、このコマンドレットは見つかった各一致の MatchInfo オブジェクトを返します。
Quiet パラメーターを使用すると、パターンが見つかったかどうかを示す Boolean 値が返されます。
Raw パラメーターを使用すると、このコマンドレットはパターンに一致する一連の String オブジェクトを返します。
メモ
PowerShell には、 Select-String
の次のエイリアスが含まれています。
- すべてのプラットフォーム:
sls
Select-String
は、UNIX の grep
や Windows の findstr.exe
に似ています。
Select-String
コマンドレットのsls
エイリアスは、PowerShell 3.0 で導入されました。
Note
PowerShell コマンド用のアプリの動詞によるとSelect-*
コマンドレットの公式エイリアス プレフィックスはsl
ではなくsc
。 そのため、sls
ではなく、Select-String
の適切なエイリアスをscs
する必要があります。 これは、この規則の例外です。
オブジェクトをパイプ処理して 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 オブジェクトには Filename や Line などのプロパティがあるため、オブジェクト内の情報はファイル内のテキストを検索するときに便利です。 入力がファイルからでない場合、これらのパラメーターの値は InputStream です。
MatchInfo オブジェクトに情報が必要ない場合は、Quiet パラメーターを使用します。 Quiet パラメーターは、ブール値 (True または False) を返し、MatchInfo オブジェクトではなく、一致が見つかったかどうかを示します。
語句を照合する場合、 Select-String
はシステムに設定されている現在のカルチャを使用します。 現在のカルチャを検索するには、 Get-Culture
コマンドレットを使用します。
MatchInfo オブジェクトのプロパティを検索するには、次のコマンドを入力します。
Select-String -Path test.txt -Pattern 'test' | Get-Member | Format-List -Property *
関連リンク
PowerShell