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


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

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

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

Вы также можете указать, что 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 отображает 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 с подстановочным знаком asterisk(*) для поиска всех файлов в текущем каталоге с расширением .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. Нажмите клавишу Enter, чтобы начать добавление операторов в функцию. В запросе >> добавьте каждую инструкцию и нажмите клавишу ВВОД, как показано в примере. После добавления закрывающей скобки вы вернетесь к командной строке 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 в каждом файле.

Из командной строки $A PowerShell отображается содержимое переменной. Есть строка, содержащая два вхождения строки PowerShell.

В $A.Matches свойстве указывается первое вхождение шаблона PowerShell в каждой строке.

Свойство $A.Matches.Length подсчитывает первое вхождение шаблона PowerShell в каждой строке.

Переменная $B использует то же самое Get-ChildItem и Select-String cmdlets, но добавляет параметр AllMatches . AllMatches находит каждое вхождение шаблона PowerShell в каждой строке. Объекты, хранящиеся в переменных and $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 .

Свойства параметра

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-CaseSensitive

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

Свойства параметра

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Context

Захватывает указанное количество линий до и после линии, соответствующей шаблону.

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

На дисплее по умолчанию строки с совпадением обозначаются прямоугольной скобкой (>) (ASCII 62) в первом столбце дисплея. Неотмеченные линии — это контекст.

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

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

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

Свойства параметра

Тип:

Int32[]

Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Culture

Задает имя языка и региональных параметров, соответствующее указанному шаблону. Параметр Culture должен использоваться с параметром SimpleMatch . Поведение по умолчанию использует язык и региональные параметры текущего пространства выполнения PowerShell (сеанс).

Чтобы получить список всех поддерживаемых языков и региональных параметров, используйте Get-Culture -ListAvailable команду.

Кроме того, этот параметр принимает следующие аргументы:

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

С Select-String -Culture Ordinal -CaseSensitive -SimpleMatch помощью команды вы получаете самое быстрое двоичное сравнение.

Параметр "Язык и региональные параметры" использует завершение вкладки для прокрутки списка аргументов, которые указывают доступные региональные параметры. Чтобы вывести список всех доступных аргументов, используйте следующую команду:

(Get-Command Select-String).Parameters.Culture.Attributes.ValidValues

Дополнительные сведения о свойстве .NET CultureInfo.Name см. в CultureInfo.Name.

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

Свойства параметра

Тип:String
Default value:Culture of the current PowerShell session
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position: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. Кодирует в формате UTF-8 с пометкой порядка байтов (Byte Order Mark, BOM)
  • utf8NoBOM: Кодирует в формате UTF-8 без метки порядка байтов (BOM)
  • utf32: кодирует в формате UTF-32.

Начиная с PowerShell 6.2, параметр кодировки также позволяет использовать числовые идентификаторы зарегистрированных кодовых страниц (например, ) или строковые имена зарегистрированных кодовых страниц (например, ). Дополнительные сведения см. в документации .NET для Encoding.CodePage.

Начиная с PowerShell 7.4, можно использовать значение Ansi для параметра кодировки, чтобы передать числовой идентификатор ANSI-страницы текущей культуры, не указывая его вручную.

Замечание

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

Свойства параметра

Тип:Encoding
Default value:UTF8NoBOM
Допустимые значения:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Exclude

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

Свойства параметра

Тип:

String[]

Default value:None
Поддерживаются подстановочные знаки:True
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Include

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

Свойства параметра

Тип:

String[]

Default value:None
Поддерживаются подстановочные знаки:True
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-InputObject

Указывает текст для поиска. Введите переменную, содержащую текст, или введите команду или выражение, которое получает текст.

Использование параметра InputObject — это не то же самое, что отправка строк вниз по конвейеру в Select-String.

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

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

Объекты FileInfo рассматриваются как путь к файлу. Если указаны пути к файлам, Select-String выполняется поиск содержимого файла, а не ToString() представление объекта.

Свойства параметра

Тип:PSObject
Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

Object
Position:Named
Обязательно:True
Значение из конвейера:True
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False
ObjectRaw
Position:Named
Обязательно:True
Значение из конвейера:True
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-List

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

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

Свойства параметра

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-LiteralPath

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

Свойства параметра

Тип:

String[]

Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False
Aliases:PSPath, LP

Наборы параметров

LiteralFileRaw
Position:Named
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:True
Значение из оставшихся аргументов:False
LiteralFile
Position:Named
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:True
Значение из оставшихся аргументов:False

-NoEmphasis

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

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

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

Свойства параметра

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-NotMatch

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

Свойства параметра

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Path

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

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

Свойства параметра

Тип:

String[]

Default value:Local directory
Поддерживаются подстановочные знаки:True
DontShow:False

Наборы параметров

File
Position:1
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:True
Значение из оставшихся аргументов:False
FileRaw
Position:1
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:True
Значение из оставшихся аргументов:False

-Pattern

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

Сведения о регулярных выражениях см. в about_Regular_Expressions.

Свойства параметра

Тип:

String[]

Default value:None
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position:0
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Quiet

Указывает, что командлет возвращает простой ответ вместо объекта MatchInfo . Возвращаемое значение — если $true шаблон найден или $null если шаблон не найден.

Свойства параметра

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

File
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False
Object
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False
LiteralFile
Position:Named
Обязательно:False
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-Raw

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

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

Свойства параметра

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

ObjectRaw
Position:Named
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False
FileRaw
Position:Named
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False
LiteralFileRaw
Position:Named
Обязательно:True
Значение из конвейера:False
Значение из конвейера по имени свойства:False
Значение из оставшихся аргументов:False

-SimpleMatch

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

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

Замечание

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

Свойства параметра

Тип:SwitchParameter
Default value:False
Поддерживаются подстановочные знаки:False
DontShow:False

Наборы параметров

(All)
Position: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

При использовании необработанного параметра этот командлет возвращает набор объектов 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 имеют такие свойства, как 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 *