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 cmdlet 使用正则表达式匹配来搜索输入字符串和文件中的文本模式。 可以使用类似于 UNIX 中的 grep 或 Windows 中的 findstr.exeSelect-String

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

HelloHELLO 的文本字符串将向下发送到 Select-String cmdlet。 Select-String 使用 Pattern 参数来指定 HELLOCaseSensitive 参数指定大小写必须仅匹配大写模式。 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 cmdlet 一起使用,在当前目录中创建两个文本文件,Alias.txtCommand.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 cmdlet 使用两个参数:PathPatternPath 参数使用指定 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 安装目录,其中包含指定目录中每个 *.txt 文件的子目录 en-US

函数中的 Select-String 命令使用 PathPattern 参数。 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 cmdlet 使用 LogName 参数来指定应用程序日志。 MaxEvents 参数从日志中获取 50 个最新事件。 日志内容存储在名为 $Events的变量中。

$Events 变量将管道向下发送到 Select-String cmdlet。 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*.txtRecurse 参数包括子目录。 对象将向下发送到管道以 Select-String

Select-String 使用 Pattern 参数,并指定字符串 MicrosoftCaseSensitive 参数用于匹配字符串的确切大小写。 Select-String PowerShell 控制台中显示输出。

注意

根据你的权限,你可能会在输出中看到 拒绝访问 消息。

示例 7:查找与模式不匹配的字符串

此示例演示如何排除与模式不匹配的数据行。

Get-Command | Out-File -FilePath .\Command.txt
Select-String -Path .\Command.txt -Pattern 'Get', 'Set'  -NotMatch

Get-Command cmdlet 将对象向下发送到 Out-File,以在当前目录中创建 Command.txt 文件。 Select-String 使用 Path 参数指定 Command.txt 文件。 Pattern 参数将 获取设置为搜索模式NotMatch 参数从结果中排除 获取Select-String 在 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 cmdlet 将对象向下发送到 Out-File,以在当前目录中创建 Command.txt 文件。 Select-String 使用 Path 参数指定 Command.txt 文件。 Pattern 参数将 Get-Computer 指定为搜索模式。 Context 参数使用两个值,前后使用尖括号(>)标记输出中的模式匹配项。 Context 参数输出第一个模式匹配之前的两行,最后一个模式匹配后的三行。

示例 9:查找所有模式匹配项

此示例演示如何 AllMatches 参数查找文本行中的每个模式匹配项。 默认情况下,Select-String 仅在文本行中找到模式的第一个匹配项。 此示例使用通过 Get-Member cmdlet 找到的对象属性。

$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 cmdlet 使用 Path 参数。 Path 参数使用指定 PowerShell 目录的变量 $PSHOME。 路径的其余部分包括子目录 en-US,并指定目录中的每个 *.txt 文件。 Get-ChildItem 对象存储在 $A 变量中。 $A 变量将管道向下发送到 Select-String cmdlet。 Select-String 使用 Pattern 参数在 PowerShell 搜索字符串的每个文件。

从 PowerShell 命令行显示 $A 变量内容。 有一行包含两个字符串的匹配项,PowerShell

$A.Matches 属性列出了每个行上第一个模式 PowerShell 匹配项。

$A.Matches.Length 属性计算每行上第一个模式 PowerShell 匹配项。

$B 变量使用相同的 Get-ChildItemSelect-String cmdlet,但添加 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

指示 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 属性的值,而不是上下文行中的文本。 因此,接收 Select-String 命令上 Context 参数无效。

当上下文包含匹配项时,每个匹配项的 MatchInfo 对象包括所有上下文行,但重叠的行仅在显示中显示一次。

类型:Int32[]
Position:Named
默认值:None
必需:False
接受管道输入:False
接受通配符:False

-Culture

指定与指定模式匹配的区域性名称。 Culture 参数必须与 SimpleMatch 参数一起使用。 默认行为使用当前 PowerShell 运行空间(会话)的区域性。

若要获取所有受支持的区域性的列表,请使用 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

PowerShell 7 中引入了 Culture 参数。

类型: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:使用 little-endian 字节顺序以 UTF-16 格式进行编码。
  • utf7:采用 UTF-7 格式编码。
  • utf8:采用 UTF-8 格式编码。
  • utf8BOM:使用字节顺序标记(BOM) 以 UTF-8 格式进行编码
  • utf8NoBOM:不带字节顺序标记的 UTF-8 格式编码(BOM)
  • utf32:采用 UTF-32 格式编码。

从 PowerShell 6.2 开始,编码 参数还允许注册代码页(如 -Encoding 1251)或已注册代码页(如 -Encoding "windows-1251")的字符串名称的数字 ID。 有关详细信息,请参阅 Encoding.CodePage.NET 文档。

从 PowerShell 7.4 开始,可以使用 Encoding 参数的 Ansi 值来传递当前区域性的 ANSI 代码页的数字 ID,而无需手动指定它。

注意

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 对象。 如果找到模式,则返回的值 $true;如果未找到模式,则返回的值 $null

类型: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-StringPattern 参数中搜索文本的输入。 它不会将 Pattern 参数的值解释为正则表达式语句。

此外,使用 SimpleMatch ,返回的 MatchInfo 对象的 Matchs 属性为空。

注意

当此参数与 AllMatches 参数一起使用时,将忽略 AllMatches

类型:SwitchParameter
Position:Named
默认值:False
必需:False
接受管道输入:False
接受通配符:False

输入

PSObject

可以通过管道将具有 ToString() 方法的任何对象传递给此 cmdlet。

输出

MatchInfo

默认情况下,此 cmdlet 为每个找到的匹配项返回 MatchInfo 对象。

Boolean

使用 Quiet 参数时,此 cmdlet 返回一个 布尔 值,该值指示是否已找到模式。

String

使用 Raw 参数时,此 cmdlet 将返回一组与模式匹配的 字符串 对象。

备注

PowerShell 包含以下 Select-String别名:

  • 所有平台:
    • sls

Select-String 类似于 UNIX 中的 grep 或在 Windows 中 findstr.exe

Select-String cmdlet 的 sls 别名在 PowerShell 3.0 中引入。

注意

根据 PowerShell 命令 批准的谓词,Select-* cmdlet 的官方别名前缀为 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 参数返回一个布尔值(True 或 False),以指示它是否找到了匹配项,而不是 MatchInfo 对象。

匹配短语时,Select-String 使用为系统设置的当前区域性。 若要查找当前区域性,请使用 Get-Culture cmdlet。

若要查找 MatchInfo 对象的属性,请键入以下命令:

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