次の方法で共有


Select-String

文字列とファイル内のテキストを検索します。

構文

File (既定)

Select-String
    [-Pattern] <String[]>
    [-Path] <String[]>
    [-Culture <String>]
    [-SimpleMatch]
    [-CaseSensitive]
    [-Quiet]
    [-List]
    [-NoEmphasis]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-NotMatch]
    [-AllMatches]
    [-Encoding <Encoding>]
    [-Context <Int32[]>]
    [<CommonParameters>]

ObjectRaw

Select-String
    [-Pattern] <String[]>
    -InputObject <PSObject>
    -Raw
    [-Culture <String>]
    [-SimpleMatch]
    [-CaseSensitive]
    [-List]
    [-NoEmphasis]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-NotMatch]
    [-AllMatches]
    [-Encoding <Encoding>]
    [-Context <Int32[]>]
    [<CommonParameters>]

Object

Select-String
    [-Pattern] <String[]>
    -InputObject <PSObject>
    [-Culture <String>]
    [-SimpleMatch]
    [-CaseSensitive]
    [-Quiet]
    [-List]
    [-NoEmphasis]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-NotMatch]
    [-AllMatches]
    [-Encoding <Encoding>]
    [-Context <Int32[]>]
    [<CommonParameters>]

FileRaw

Select-String
    [-Pattern] <String[]>
    [-Path] <String[]>
    -Raw
    [-Culture <String>]
    [-SimpleMatch]
    [-CaseSensitive]
    [-List]
    [-NoEmphasis]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-NotMatch]
    [-AllMatches]
    [-Encoding <Encoding>]
    [-Context <Int32[]>]
    [<CommonParameters>]

LiteralFileRaw

Select-String
    [-Pattern] <String[]>
    -LiteralPath <String[]>
    -Raw
    [-Culture <String>]
    [-SimpleMatch]
    [-CaseSensitive]
    [-List]
    [-NoEmphasis]
    [-Include <String[]>]
    [-Exclude <String[]>]
    [-NotMatch]
    [-AllMatches]
    [-Encoding <Encoding>]
    [-Context <Int32[]>]
    [<CommonParameters>]

LiteralFile

Select-String
    [-Pattern] <String[]>
    -LiteralPath <String[]>
    [-Culture <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 は各行で最初の一致を検索し、一致ごとに、一致を含む行のファイル名、行番号、およびすべてのテキストを表示します。 1 行に複数の一致を検索したり、一致の前後にテキストを表示したり、一致が見つかったかどうかを示すブール値 (True または False) を表示したりするように Select-String に指示できます。

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-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-AliasGet-CommandOut-File コマンドレットと共に使用して、現在のディレクトリに Alias.txtCommand.txtの 2 つのテキスト ファイルを作成します。

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 コマンドレットでは、PathPattern の 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 を持つ 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 パラメーターは、失敗した文字列を指定し、$_.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

Get-Command コマンドレットは、オブジェクトをパイプラインから Out-File に送信し、現在のディレクトリに Command.txtID ファイルを作成します。 Select-String は Path パラメータを使用して Command.txt ファイルを指定します。 Pattern パラメーターは、検索パターンとして GetSet を指定します。 NotMatch パラメーターは、結果から GetSet を除外します。 Select-String PowerShell コンソールに Get または Set を含まない出力を表示します。

例 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.txtID ファイルを作成します。 Select-String は Path パラメータを使用して Command.txt ファイルを指定します。 Pattern パラメーターは、検索パターンとしてGet-Computerを指定します。 Context パラメーターは、before と after の 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 変数の内容が表示されます。 文字列 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を参照してください。

パラメーターのプロパティ

型:SwitchParameter
規定値:False
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

(All)
配置:Named
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-CaseSensitive

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

パラメーターのプロパティ

型:SwitchParameter
規定値:False
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

(All)
配置: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 オブジェクトにはすべてのコンテキスト行が含まれますが、重なり合う行は表示に一度だけ表示されます。

パラメーターのプロパティ

型:

Int32[]

規定値:None
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

(All)
配置:Named
必須:False
パイプラインからの値: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
規定値:Culture of the current PowerShell session
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

(All)
配置:Named
必須:False
パイプラインからの値: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 パラメーターを使用すると、登録済みのコード ページ (-Encoding 1251など) の数値 ID や、登録されたコード ページの文字列名 (-Encoding "windows-1251"など) も使用できます。 詳細については、Encoding.CodePageの .NET ドキュメントを参照してください。

PowerShell 7.4 以降では、Ansi パラメーターの 値を使用して、手動で指定しなくても、現在のカルチャの ANSI コード ページの数値 ID を渡すことができます。

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

パラメーターのプロパティ

型:Encoding
規定値:UTF8NoBOM
指定可能な値:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

(All)
配置:Named
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-Exclude

指定した項目を除外します。 このパラメーターの値は、Path パラメーターを修飾します。 パス要素またはパターン (*.txtなど) を入力します。 ワイルドカードを使用できます。

パラメーターのプロパティ

型:

String[]

規定値:None
ワイルドカードのサポート:True
DontShow:False

パラメーター セット

(All)
配置:Named
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-Include

指定した項目が含まれます。 このパラメーターの値は、Path パラメーターを修飾します。 パス要素またはパターン (*.txtなど) を入力します。 ワイルドカードを使用できます。

パラメーターのプロパティ

型:

String[]

規定値:None
ワイルドカードのサポート:True
DontShow:False

パラメーター セット

(All)
配置:Named
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-InputObject

検索するテキストを指定します。 テキストを含む変数を入力するか、テキストを取得するコマンドまたは式を入力します。

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

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

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

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

パラメーターのプロパティ

型:PSObject
規定値:None
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

Object
配置:Named
必須:True
パイプラインからの値:True
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False
ObjectRaw
配置:Named
必須:True
パイプラインからの値:True
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-List

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

デフォルトでは、 Select-String は一致が見つかったたびに MatchInfo オブジェクトを返します。

パラメーターのプロパティ

型:SwitchParameter
規定値:False
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

(All)
配置:Named
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-LiteralPath

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

パラメーターのプロパティ

型:

String[]

規定値:None
ワイルドカードのサポート:False
DontShow:False
Aliases:PSPath, LP

パラメーター セット

LiteralFileRaw
配置:Named
必須:True
パイプラインからの値:False
プロパティ名別のパイプラインからの値:True
残りの引数からの値:False
LiteralFile
配置:Named
必須:True
パイプラインからの値:False
プロパティ名別のパイプラインからの値:True
残りの引数からの値:False

-NoEmphasis

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

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

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

パラメーターのプロパティ

型:SwitchParameter
規定値:False
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

(All)
配置:Named
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-NotMatch

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

パラメーターのプロパティ

型:SwitchParameter
規定値:False
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

(All)
配置:Named
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-Path

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

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

パラメーターのプロパティ

型:

String[]

規定値:Local directory
ワイルドカードのサポート:True
DontShow:False

パラメーター セット

File
配置:1
必須:True
パイプラインからの値:False
プロパティ名別のパイプラインからの値:True
残りの引数からの値:False
FileRaw
配置:1
必須:True
パイプラインからの値:False
プロパティ名別のパイプラインからの値:True
残りの引数からの値:False

-Pattern

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

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

パラメーターのプロパティ

型:

String[]

規定値:None
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

(All)
配置:0
必須:True
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-Quiet

コマンドレットが MatchInfo オブジェクトではなく単純な応答を返したことを示します。 返される値は、パターンが見つかった場合は $true 、パターンが見つからない場合は $null されます。

パラメーターのプロパティ

型:SwitchParameter
規定値:False
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

File
配置:Named
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False
Object
配置:Named
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False
LiteralFile
配置:Named
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-Raw

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

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

パラメーターのプロパティ

型:SwitchParameter
規定値:False
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

ObjectRaw
配置:Named
必須:True
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False
FileRaw
配置:Named
必須:True
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False
LiteralFileRaw
配置:Named
必須:True
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

-SimpleMatch

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

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

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

パラメーターのプロパティ

型:SwitchParameter
規定値:False
ワイルドカードのサポート:False
DontShow:False

パラメーター セット

(All)
配置:Named
必須:False
パイプラインからの値:False
プロパティ名別のパイプラインからの値:False
残りの引数からの値:False

CommonParameters

このコマンドレットでは、一般的なパラメーター -Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction、-WarningVariable の各パラメーターがサポートされています。 詳細については、about_CommonParametersを参照してください。

入力

PSObject

ToString() メソッドを持つ任意のオブジェクトをこのコマンドレットにパイプできます。

出力

MatchInfo

既定では、このコマンドレットは見つかった各一致に対して MatchInfo オブジェクトを返します。

Boolean

Quiet パラメーターを使用すると、パターンが見つかったかどうかを示すブール値が返されます。

String

Raw パラメーターを使用すると、このコマンドレットはパターンに一致する文字列オブジェクトのセットを返します。

メモ

PowerShell には、Select-Stringの次のエイリアスが含まれています。

  • すべてのプラットフォーム:
    • sls

Select-String は、Unix の grep や Windows の findstr.exe に似ています。

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

「Approved Verbs for PowerShell Commands」によると、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-StringPattern パラメータの値を正規表現として解釈します。 詳細については、about_Regular_Expressionsを参照してください。 SimpleMatch パラメーターを使用して、正規表現の一致をオーバーライドできます。 SimpleMatch パラメーターは、入力内の Pattern パラメーターの値のインスタンスを検索します。

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

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

語句を一致させるとき、 Select-String はシステムに設定されている現在のカルチャを使用します。 現在のカルチャを検索するには、 Get-Culture コマンドレットを使用します。

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

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