Поделиться через


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 использует сопоставление регулярных выражений для поиска текстовых шаблонов во входных строках и файлах. Вы можете использовать Select-String аналогичные в grep UNIX или findstr.exe Windows.

Select-String основан на строках текста. По умолчанию Select-String находит первое совпадение в каждой строке и отображает имя файла, номер строки и весь текст в строке, содержащей совпадение. Вы можете напрямую Select-String найти несколько совпадений в строке, отобразить текст до и после совпадения или отобразить логическое значение (True или False), указывающее, найдено ли совпадение.

Select-String может отображать все текстовые совпадения или останавливаться после первого совпадения в каждом входном файле. Select-String может использоваться для отображения всего текста, который не соответствует указанному шаблону.

Можно также указать, что Select-String следует ожидать определенную кодировку символов, например при поиске в файлах текста Юникода. Select-String использует метку порядка байтов (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 отображает hello в консоли PowerShell.

Пример 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 для создания двух текстовых файлов в текущем каталоге ,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. Параметр Path использует переменную $PSHOME , указывающую каталог PowerShell. Оставшаяся часть пути включает в себя подкаталог en-US и указывает каждый *.txt файл в каталоге . Параметр Pattern указывает на соответствие вопросительного знака (?) в каждом файле. Обратная косая черта (\) используется в качестве escape-символа и необходима, так как вопросительный знак (?) является квантификатором регулярного выражения. 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. Нажмите клавишу ВВОД , чтобы начать добавление операторов в функцию. В командной строке >> добавьте каждый оператор и нажмите клавишу ВВОД , как показано в примере. После добавления закрывающей скобки вы вернелись к командной строке 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'

Командлет 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.

Примечание

В зависимости от ваших разрешений в выходных данных могут отображаться сообщения об отказе в доступе .

Пример 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 отображает выходные данные в консоли 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.txt в текущем каталоге. Select-String использует параметр Path для указания файлаCommand.txt . Параметр Pattern указывает в Get-Computer качестве шаблона поиска. Параметр Context использует два значения: до и после и помечает совпадения шаблонов в выходных данных угловой скобкой (>). Параметр Context выводит две строки перед первым совпадением шаблона и три строки после последнего совпадения шаблона.

Пример 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 использует переменную $PSHOME , указывающую каталог PowerShell. Оставшаяся часть пути включает в себя подкаталог en-US и указывает каждый *.txt файл в каталоге . Объекты Get-ChildItem хранятся в переменной $A . Переменная $A отправляется по конвейеру в Select-String командлет . Select-String использует параметр Pattern для поиска строки PowerShell в каждом файле.

В командной строке PowerShell отображается содержимое $A переменной. Есть строка, содержащая два вхождения строки 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 находит только первое совпадение в каждой строке текста.

При Select-String поиске нескольких совпадений в строке текста он по-прежнему выдает только один объект MatchInfo для строки, но свойство Match объекта содержит все совпадения.

Примечание

Этот параметр игнорируется при использовании в сочетании с параметром SimpleMatch . Если вы хотите вернуть все совпадения, а шаблон, который вы ищете, содержит символы регулярного выражения, необходимо экранировать эти символы, а не использовать SimpleMatch. Дополнительные сведения об экранировании регулярных выражений см. в разделе about_Regular_Expressions .

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

-CaseSensitive

Указывает, что совпадения командлета чувствительны к регистру. По умолчанию в совпадениях регистр не учитывается.

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

-Context

Фиксирует указанное количество строк до и после строки, которая соответствует шаблону.

Если в качестве значения этого параметра вы введете одно число, оно будет определять количество записываемых строк до и после совпадения. Если вы укажете два числа, первое из них будет определять количество строк до совпадения, а второе — после совпадения. Например, -Context 2,3.

При отображении по умолчанию линии с совпадением обозначаются правой угловой скобкой () (>ASCII 62) в первом столбце дисплея. Строки без пометок формируют контекст.

Параметр Context не изменяет количество объектов, созданных Select-String. Select-String создает по одному объекту MatchInfo для каждого совпадения. Контекст хранится в виде массива строк в свойстве Context объекта .

Когда выходные данные Select-String команды отправляются по конвейеру в другую Select-String команду, принимающая команда ищет только текст в соответствующей строке. Совпадаемая строка является значением свойства Line объекта MatchInfo , а не текстом в строках контекста. В результате параметр Context недействителен для принимающей Select-String команды.

Если контекст включает совпадение, объект MatchInfo для каждого совпадения включает все строки контекста, но перекрывающиеся линии отображаются на экране только один раз.

Type:Int32[]
Position:Named
Default value:None
Required:False
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
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

Указывает тип кодировки для целевого файла. Значение по умолчанию — utf8NoBOM.

Ниже приведены допустимые значения для этого параметра.

  • ascii: использует кодировку для кодировки 7-разрядной кодировки ASCII.
  • bigendianunicode: кодирует в формате UTF-16 с использованием порядка байтов большого байта.
  • bigendianutf32: кодирует в формате 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", ). Дополнительные сведения см. в документации по .NET для Encoding.CodePage.

Примечание

UTF-7* больше не рекомендуется использовать. В PowerShell 7.1, если указать utf7 для параметра Encoding , создается предупреждение.

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

-Exclude

Исключает указанные элементы. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например *.txt. Разрешено использовать подстановочные знаки.

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

-Include

Включает указанные элементы. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например *.txt. Разрешено использовать подстановочные знаки.

Type:String[]
Position:Named
Default value:None
Required:False
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
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-List

Из каждого входного файла возвращается только первый экземпляр соответствующего текста. Это наиболее эффективный способ получения списка файлов, содержимое которых соответствует регулярному выражению.

По умолчанию Select-String возвращает объект MatchInfo для каждого найденного совпадения.

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

-LiteralPath

Указывает путь к файлам для поиска. Значение параметра LiteralPath используется точно так же, как оно введено. Никакие символы не интерпретируются как знаки подстановки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки предписывают PowerShell не интерпретировать какие-либо символы как escape-последовательности. Дополнительные сведения см. в разделе about_Quoting_Rules.

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

-NoEmphasis

По умолчанию выделяет строку, соответствующую шаблону, Select-String который вы искали с помощью параметра Pattern . Параметр NoEmphasis отключает выделение.

Выделение использует отрицательные цвета в зависимости от фона PowerShell и цветов текста. Например, если цвета PowerShell являются черным фоном с белым текстом. Выделен белый фон с черным текстом.

Этот параметр появился в PowerShell 7.

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

-NotMatch

Параметр NotMatch находит текст, который не соответствует указанному шаблону.

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

-Path

Указывает путь к файлам для поиска. Разрешено использовать подстановочные знаки. По умолчанию поиск выполняется в локальном каталоге.

Укажите файлы в каталоге, например log1.txt, *.docили *.*. Если вы укажете только один каталог, команда завершится сбоем.

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

-Pattern

Указывает текст, который нужно найти в каждой строке. Значение шаблона обрабатывается как регулярное выражение.

Дополнительные сведения о регулярных выражениях см. в разделе about_Regular_Expressions.

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

-Quiet

Указывает, что командлет возвращает логическое значение (True или False) вместо объекта MatchInfo . Значение Равно True, если шаблон найден; в противном случае значение равно False.

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

-Raw

Заставляет командлет выводить только соответствующие строки, а не объекты MatchInfo . Это результаты в поведении, которое наиболее похоже на команды Grep Unix или Windows findstr.exe .

Этот параметр появился в PowerShell 7.

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

-SimpleMatch

Указывает, что командлет использует простое совпадение, а не регулярное выражение. В простом совпадении Select-String выполняет поиск входных данных для текста в параметре Pattern . Значение параметра Pattern не интерпретируется как оператор регулярного выражения.

Кроме того, при использовании SimpleMatch свойство Matches возвращаемого объекта MatchInfo пусто.

Примечание

Если этот параметр используется с параметром AllMatches , allMatches игнорируется.

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

Входные данные

PSObject

В этот командлет можно передать любой объект, имеющий ToString() метод .

Выходные данные

MatchInfo

По умолчанию этот командлет возвращает объект MatchInfo для каждого найденного совпадения.

Boolean

При использовании параметра Quiet этот командлет возвращает логическое значение, указывающее, найден ли шаблон.

String

При использовании параметра Raw этот командлет возвращает набор объектов String , соответствующих шаблону.

Примечания

PowerShell включает следующие псевдонимы для Select-String:

  • Для всех платформ.
    • sls

Select-String аналогичен в grep UNIX или findstr.exe Windows.

Псевдоним sls командлета Select-String появился в PowerShell 3.0.

Примечание

В соответствии с утвержденными командами для команд PowerShell официальным префиксом псевдонима для 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 имеют такие свойства, как Имя файла и Строка. Если входные данные не из файла, эти параметры имеют значение InputStream.

Если вам не нужны сведения в объекте MatchInfo , используйте параметр Quiet . Параметр Quiet возвращает логическое значение (True или False), чтобы указать, найдено ли совпадение, а не объект MatchInfo .

При сопоставлении фраз использует текущий язык и региональные параметры, Select-String заданные для системы. Чтобы найти текущий язык и региональные Get-Culture параметры, используйте командлет .

Чтобы найти свойства объекта MatchInfo , введите следующую команду:

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