Select-String (Microsoft.PowerShell.Utility)
Select-String
- Модуль:
- Microsoft.PowerShell.Utility
Находит текст в строках и файлах.
Синтаксис
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. Имя файла и номер строки предшествуют каждой строке содержимого, содержащей совпадение с параметром Шаблон.
Пример 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. Имя файла и номер строки предшествуют каждой строке содержимого, содержащей совпадение с параметром Шаблон.
Пример 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 с подкаталогом en-US, в котором указан каждый файл *.txt в этом каталоге.
Команда Select-String в функции использует параметры Path и Pattern. Параметр Path использует переменную $PSHelp для получения пути. Параметр Шаблон использует строку 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' -CaseSensitiveGet-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 для строки, но объект Matches Свойство объекта содержит все совпадения.
Примечание
Этот параметр игнорируется при использовании в сочетании с параметром SimpleMatch. Если вы хотите вернуть все совпадения и искомый шаблон содержит символы регулярного выражения, вам необходимо экранировать эти символы, а не использовать SimpleMatch. Дополнительную информацию об экранировании регулярных выражений см. в разделе about_Regular_Expressions.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
False
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-CaseSensitive
Указывает, что совпадения командлетов чувствительны к регистру. По умолчанию совпадения не чувствительны к регистру.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
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[]
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
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
- Позиция:
Именованный
- Значение по умолчанию:
Культура текущего сеанса PowerShell
- Необходимый:
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 с меткой порядка байтов (BOM).utf8NoBOM: кодирует в формате UTF-8 без метки порядка байтов (BOM).utf32: кодирует в формате UTF-32.
Начиная с PowerShell 6.2, параметр Encoding также позволяет использовать числовые идентификаторы зарегистрированных кодовых страниц (например, -Encoding 1251) или строковые имена зарегистрированных кодовых страниц (например, -Encoding). "windows-1251"). Дополнительные сведения см. в документации .NET для Encoding.CodePage.
Начиная с PowerShell 7.4, вы можете использовать значение Ansi для параметра Encoding, чтобы передать числовой идентификатор для текущей кодовой страницы ANSI языка и региональных параметров без необходимости указывать его вручную.
Примечание
UTF-7* больше не рекомендуется использовать. Начиная с PowerShell 7.1, предупреждение выводится, если вы укажете utf7 для параметра Кодировка.
- Тип :
Кодирование
- Принятые значения:
ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
- Позиция:
Именованный
- Значение по умолчанию:
UTF8NoBOM
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Exclude
Исключите указанные элементы. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например *.txt. Подстановочные знаки разрешены.
- Тип :
String[]
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
True
-Include
Включает в себя указанные элементы. Значение этого параметра определяет параметр Path. Введите элемент пути или шаблон, например *.txt. Подстановочные знаки разрешены.
- Тип :
String[]
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
True
-InputObject
Указывает текст для поиска. Введите переменную, содержащую текст, или введите команду или выражение, которое получает текст.
Использование параметра InputObject — это не то же самое, что отправка строк по конвейеру в Select-String.
Когда вы передаете командлету Select-String более одной строки, он ищет указанный текст в каждой строке и возвращает каждую строку, содержащую искомый текст.
Когда вы используете параметр InputObject для отправки коллекции строк, Select-String рассматривает коллекцию как одну объединенную строку. Select-String возвращает строки как единое целое, если находит искомый текст в любой строке.
Объекты FileInfo рассматриваются как путь к файлу. Если указаны пути к файлам, Select-String ищет содержимое файла, а не представление объекта ToString().
- Тип :
PSОбъект
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-List
Из каждого входного файла возвращается только первый экземпляр соответствующего текста. Это наиболее эффективный способ получить список файлов, содержимое которых соответствует регулярному выражению.
По умолчанию Select-String возвращает объект MatchInfo для каждого найденного совпадения.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
False
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-LiteralPath
Указывает путь к файлам для поиска. Значение параметра LiteralPath используется точно так, как оно введено. Никакие символы не интерпретируются как подстановочные знаки. Если путь содержит escape-символы, заключите его в одинарные кавычки. Одинарные кавычки сообщают PowerShell не интерпретировать никакие символы как escape-последовательности. Дополнительные сведения см. в разделе about_Quoting_Rules.
- Тип :
String[]
- Псевдонимы:
PSPath, LP
- Позиция:
Именованный
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
False
-NoEmphasis
По умолчанию Select-String выделяет строку, соответствующую шаблону, который вы искали с помощью параметра Pattern. Параметр NoEmphasis отключает выделение.
Для выделения используются отрицательные цвета на основе цвета фона и текста PowerShell. Например, если ваши цвета PowerShell представляют собой черный фон с белым текстом. Акцент делается на белом фоне с черным текстом.
Этот параметр был введен в PowerShell 7.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
False
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-NotMatch
Параметр NotMatch находит текст, не соответствующий указанному шаблону.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
False
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Path
Указывает путь к файлам для поиска. Подстановочные знаки разрешены. Местоположение по умолчанию — локальный каталог.
Укажите файлы в каталоге, например log1.txt, *.doc или *.*. Если вы укажете только каталог, команда завершится неудачей.
- Тип :
String[]
- Позиция:
1
- Значение по умолчанию:
Локальный каталог
- Необходимый:
True
- Примите ввод конвейера:
True
- Принимайте подстановочные знаки:
True
-Pattern
Указывает текст, который нужно найти в каждой строке. Значение шаблона рассматривается как регулярное выражение.
Дополнительные сведения о регулярных выражениях см. в разделе about_Regular_Expressions.
- Тип :
String[]
- Позиция:
0
- Значение по умолчанию:
None
- Необходимый:
True
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Quiet
Указывает, что командлет возвращает простой ответ вместо объекта MatchInfo. Возвращаемое значение — $true, если шаблон найден, или $null, если шаблон не найден.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
False
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-Raw
Заставляет командлет выводить только совпадающие строки, а не объекты MatchInfo. Это результаты, поведение которых наиболее похоже на команды Unix grep или Windows findstr.exe.
Этот параметр был введен в PowerShell 7.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
False
- Необходимый:
True
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
-SimpleMatch
Указывает, что командлет использует простое соответствие, а не соответствие регулярному выражению. При простом сопоставлении Select-String ищет входной текст в параметре Pattern. Он не интерпретирует значение параметра Pattern как оператор регулярного выражения.
Кроме того, при использовании SimpleMatch свойство Matches возвращаемого объекта MatchInfo пустое.
Примечание
Если этот параметр используется с параметром AllMatches, AllMatches игнорируется.
- Тип :
SwitchParameter
- Позиция:
Именованный
- Значение по умолчанию:
False
- Необходимый:
False
- Примите ввод конвейера:
False
- Принимайте подстановочные знаки:
False
Входы
PSObject
В этот командлет можно передать любой объект, имеющий метод ToString().
Выходы
Информация о матче
По умолчанию этот командлет возвращает объект MatchInfo для каждого найденного совпадения.
Логическое значение
При использовании параметра Quiet этот командлет возвращает логическое значение, указывающее, был ли найден шаблон.
Строка
При использовании параметра 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 *