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 でも findstr.exe Windows でも同様にgrep使用Select-Stringできます。

Select-String はテキスト行に基づいています。 既定では、 Select-String 各行で最初の一致を検索し、一致するたびに、ファイル名、行番号、および一致を含む行内のすべてのテキストが表示されます。 1 行に複数の一致を検索するように指示 Select-String したり、一致の前後にテキストを表示したり、一致が見つかったかどうかを示すブール値 (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

テキスト文字列 HelloHELLO は、パイプラインからコマンドレットにSelect-String送信されます。 Select-StringPattern パラメーター を使用して 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-Command共に使用して、Get-Alias現在のOut-Fileディレクトリに 2 つのテキスト ファイル (Alias.txtCommand.txt) を作成します。

Select-Stringパス パラメーターとアスタリスク (*) ワイルドカードを使用して、現在のディレクトリ内のすべてのファイルをファイル名拡張子.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パスパターンの 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-HelpEnter キーを押して、関数へのステートメントの追加を開始します。 プロンプトから各ステートメントを >> 追加し、例に示すように Enter キーを押します。 右かっこを追加すると、PowerShell プロンプトに戻ります。

この関数には、2 つのコマンドが含まれています。 この変数には $PSHelp 、PowerShell ヘルプ ファイルへのパスが格納されます。 $PSHOMEは、ディレクトリ内の各*.txtファイルを指定するサブディレクトリ en-US を含む PowerShell インストール ディレクトリです。

関数のコマンドでは Select-StringPath パラメーターと 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 パラメーターは、失敗した文字列を種指定し、..$_.message Select-String は PowerShell コンソールに出力を表示します。

例 6: サブディレクトリで文字列を検索する

次の使用例は、ディレクトリとそのすべてのサブディレクトリで特定のテキスト文字列を検索します。

Get-ChildItem -Path C:\Windows\System32\*.txt -Recurse | Select-String -Pattern 'Microsoft' -CaseSensitive

Get-ChildItemPath パラメーターを使用して C:\Windows\System32*.txtを指定します。 Recurse パラメーターには、サブディレクトリが含まれています。 オブジェクトはパイプライン Select-Stringの下に送信されます。

Select-StringPattern パラメーターを使用し、 文字列 Microsoft を指定します。 CaseSensitive パラメーターは、文字列の正確な大文字と小文字を一致させるために使用されます。 Select-String は PowerShell コンソールに出力を表示します。

注意

アクセス許可によっては、アクセス 拒否メッセージが 出力に表示される場合があります。

例 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 パラメーターは、検索パターンとして GetSet を指定します。 NotMatch パラメーターは、結果から GetSet を除外します。 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-ComputerContext パラメーターは、前と後の 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-ChildItemPath パラメーターを使用します。 Path パラメーターは、PowerShell ディレクトリを指定する変数$PSHOMEを使用します。 パスの残りの部分には、 en-US サブディレクトリが含まれており、ディレクトリ内の各 *.txt ファイルを指定します。 オブジェクトは Get-ChildItem 変数に $A 格納されます。 変数は $A パイプラインからコマンドレットに Select-String 送信されます。 Select-String では、 Pattern パラメーターを使用して、文字列 PowerShell の各ファイルを検索します。

PowerShell コマンド ラインから、変数の $A 内容が表示されます。 PowerShell という文字列が 2 回出現する行があります。

このプロパティは $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 テキストの各行で最初の一致のみが検索されます。

Select-Stringテキスト行で複数の一致が見つかると、その行に対して 1 つの MatchInfo オブジェクトのみが出力されますが、オブジェクトの Matchs プロパティにはすべての一致が含まれます。

注意

SimpleMatch パラメーターと組み合わせて使用する場合、このパラメーターは無視されます。 すべての一致を返し、検索するパターンに正規表現文字が含まれている場合は、 SimpleMatch を使用するのではなく、それらの文字をエスケープする必要があります。 正規表現 エスケープの詳細については、about_Regular_Expressionsを参照してください。

Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

-CaseSensitive

コマンドレットの一致で大文字と小文字が区別されることを示します。 既定では、一致では大文字と小文字は区別されません。

Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

-Context

パターンに一致する行の前後に指定された行数をキャプチャします。

このパラメーターの値として 1 つの数値を入力すると、その数値が一致の前後でキャプチャされる行数となります。 値として 2 つの数値を入力すると、最初の数値が一致の前の行数となり、2 番目の数値が一致の後の行数となります。 たとえば、-Context 2,3 のようにします。

既定の表示では、一致する行は、ディスプレイの最初の列に右山かっこ () (>ASCII 62) で示されます。 マークされていない行は、コンテキストです。

Context パラメーターによって生成されるSelect-Stringオブジェクトの数は変更されません。 Select-String は、一致ごとに 1 つの MatchInfo オブジェクトを生成します。 コンテキストは、オブジェクトの Context プロパティに文字列の配列として格納されます。

コマンドの出力がパイプラインから別Select-StringSelect-Stringコマンドに送信されると、受信コマンドは一致した行のテキストのみを検索します。 一致する行は、コンテキスト行のテキストではなく、MatchInfo オブジェクトの Line プロパティの値です。 その結果、 Context パラメーターは、受信 Select-String コマンドでは有効ではありません。

コンテキストに一致が含まれている場合、各一致の MatchInfo オブジェクトにはすべてのコンテキスト行が含まれますが、重複する行はディスプレイに 1 回だけ表示されます。

Type:Int32[]
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters: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 で導入されました。

Type:String
Position:Named
Default value:Culture of the current PowerShell session
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

ターゲット ファイルのエンコードの種類を指定します。 既定値は utf8NoBOM です。

このパラメーターに使用できる値は次のとおりです。

  • ascii: ASCII (7 ビット) 文字セットのエンコードを使用します。
  • 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 ドキュメントを参照してください。

注意

UTF-7* を使用することは推奨されなくなりました。 PowerShell 7.1 以降では、Encoding パラメーターに指定utf7すると警告が書き込まれます。

Type:Encoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Default value:UTF8NoBOM
Accept pipeline input:False
Accept wildcard characters:False

-Exclude

指定された項目を除外します。 このパラメーターの値は、Path パラメーターを修飾します。 path 要素またはパターンを入力します 。次に例を示します *.txt。 ワイルドカードを使用できます。

Type:String[]
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:True

-Include

指定した項目を処理対象に含めます。 このパラメーターの値は、Path パラメーターを修飾します。 path 要素またはパターンを入力します 。次に例を示します *.txt。 ワイルドカードを使用できます。

Type:String[]
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:True

-InputObject

検索するテキストを指定します。 テキストが格納されている変数を入力するか、テキストを取得するコマンドまたは式を入力します。

InputObject パラメーターの使用は、パイプラインの下に文字列を送信するSelect-Stringのと同じではありません。

コマンドレットに複数の文字列を Select-String パイプ処理すると、各文字列内の指定されたテキストが検索され、検索テキストを含む各文字列が返されます。

InputObject パラメーターを使用して文字列のコレクションを送信する場合、Select-Stringコレクションは単一の結合文字列として扱われます。 Select-String は、文字列内の検索テキストが見つかると、文字列を単位として返します。

FileInfo オブジェクトは、ファイルへのパスとして扱われます。 ファイル パスが指定されている場合は、 Select-String オブジェクトの表現ではなく、ファイルの内容を ToString() 検索します。

Type:PSObject
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False

-List

一致するテキストの最初のインスタンスのみが各入力ファイルから返されます。 これは、正規表現に一致する内容を持つファイルの一覧を取得する最も効率的な方法です。

既定では、 Select-String 検出された一致ごとに MatchInfo オブジェクトを返します。

Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

-LiteralPath

検索するファイルへのパスを指定します。 LiteralPath パラメーターの値は、型指定されたとおりに使用されます。 ワイルドカードとして解釈される文字はありません。 パスにエスケープ文字が含まれている場合は、単一引用符で囲みます。 単一引用符は、文字をエスケープ シーケンスとして解釈しないように PowerShell に指示します。 詳細については、「about_Quoting_Rules」 参照してください。

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False

-NoEmphasis

既定では、 Select-StringPattern パラメーターで検索したパターンと一致する文字列が強調表示されます。 NoEmphasis パラメーターは強調表示を無効にします。

強調では、PowerShell の背景とテキストの色に基づいて負の色を使用します。 たとえば、PowerShell の色が白いテキストを含む黒の背景である場合などです。 強調は、黒いテキストを含む白い背景です。

このパラメーターは PowerShell 7 で導入されました。

Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

-NotMatch

NotMatch パラメーターは、指定したパターンと一致しないテキストを検索します。

Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

-Path

検索するファイルのパスを指定します。 ワイルドカードを使用できます。 既定の場所は、ローカル ディレクトリです。

ディレクトリ内のファイルを指定します (例: log1.txt, *.doc*.*. ディレクトリのみを指定すると、コマンドは失敗します。

Type:String[]
Position:1
Default value:Local directory
Accept pipeline input:True
Accept wildcard characters:True

-Pattern

各行で検索するテキストを指定します。 パターン値は正規表現として扱われます。

正規表現の詳細については、 about_Regular_Expressionsを参照してください。

Type:String[]
Position:0
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-Quiet

コマンドレットが MatchInfo オブジェクトではなくブール値 (True または False) を返すかどうかを示します。 パターンが見つかった場合、値は True です。それ以外の場合、値は False です。

Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

-Raw

コマンドレットが MatchInfo オブジェクトではなく、一致する文字列のみを出力します。 これは、Unix grep または Windows findstr.exe コマンドに最も似た動作になります。

このパラメーターは PowerShell 7 で導入されました。

Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

-SimpleMatch

コマンドレットが正規表現の一致ではなく単純な一致を使用することを示します。 単純な一致では、 Select-StringPattern パラメーター内のテキストを入力で検索します。 Pattern パラメーターの値は正規表現ステートメントとして解釈されません。

また、 SimpleMatch を使用する場合、返される MatchInfo オブジェクトの Matchs プロパティは空です。

注意

このパラメーターを AllMatches パラメーターと共に使用すると、 AllMatches は無視されます。

Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

入力

PSObject

メソッドSelect-Stringを持つ任意のオブジェクトをToString()パイプ処理できます。

出力

Microsoft.PowerShell.Commands.MatchInfo, System.Boolean, System.String

既定では、出力は MatchInfo オブジェクトのセットであり、検出された一致ごとに 1 つになります。 Quiet パラメーターを使用する場合、出力はパターンが見つかったかどうかを示すブール値です。 Raw パラメーターを使用する場合、出力はパターンに一致する文字列オブジェクトのセットです。

メモ

Select-Stringは UNIX または Windows の場合とfindstr.exe似ていますgrep

コマンドレットのSelect-Stringエイリアスはsls、PowerShell 3.0 で導入されました。

注意

PowerShell コマンドの承認済み動詞によると、コマンドレットの正式なエイリアス プレフィックスSelect-*sc、ではありませんsl。 したがって、適切なエイリアス Select-Stringscs、ではなく sls、にする必要があります。 これは、この規則の例外です。

オブジェクトを次の値にパイプ処理する Select-String場合:

  • FileInfo オブジェクトは、ファイルへのパスとして扱われます。 ファイル パスが指定されている場合は、 Select-String オブジェクトの表現ではなく、ファイルの内容を ToString() 検索します。
  • パイプされたオブジェクトの結果は ToString() 、PowerShell の書式設定システムによって生成されるリッチ文字列表現と同じではありません。 そのため、最初にオブジェクト Out-String のパイプ処理が必要になる場合があります。 詳細については、例 10 を参照してください。

使用 Select-Stringするには、検索するテキストを Pattern パラメーターの値として入力します。 検索するテキストを指定するには、次の条件を使用します。

  • 引用符で囲まれた文字列にテキストを入力し、パイプで囲 Select-Stringみます。
  • テキスト文字列を変数に格納し、 InputObject パラメーターの値として変数を指定します。
  • テキストがファイルに格納されている場合は、 Path パラメーターを使用してファイルへのパスを指定します。

既定では、 Select-StringPattern パラメーターの値が正規表現として解釈されます。 詳細については、 about_Regular_Expressionsを参照してください。 SimpleMatch パラメーターを使用して、正規表現の一致をオーバーライドできます。 SimpleMatch パラメーターは、入力内の Pattern パラメーターの値のインスタンスを検索します。

既定の Select-String 出力は MatchInfo オブジェクトであり、一致に関する詳細情報が含まれます。 MatchInfo オブジェクトには FilenameLine などのプロパティがあるため、オブジェクト内の情報はファイル内のテキストを検索する場合に便利です。 入力がファイルからでない場合、これらのパラメーターの値は InputStream です

MatchInfo オブジェクトに情報が必要ない場合は、Quiet パラメーターを使用します。 Quiet パラメーターはブール値 (True または False) を返し、MatchInfo オブジェクトではなく一致が見つかったかどうかを示します。

語句を照合する場合は、 Select-String システムに設定されている現在のカルチャを使用します。 現在のカルチャを見つけるには、コマンドレットを Get-Culture 使用します。

MatchInfo オブジェクトのプロパティを検索するには、次のコマンドを入力します。

Select-String -Path test.txt -Pattern 'test' | Get-Member | Format-List -Property *