Select-String
Znajduje tekst w ciągach i plikach.
Składnia
File (Domyślna)
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>]
Opis
Polecenie Select-String cmdlet używa dopasowania wyrażenia regularnego do wyszukiwania wzorców tekstu w ciągach wejściowych i plikach. Możesz użyć Select-String funkcji podobnej do grep w systemach Unix lub findstr.exe Windows.
Select-String jest oparty na wierszach tekstu. Domyślnie Select-String znajduje pierwsze dopasowanie w każdym wierszu i dla każdego dopasowania wyświetla nazwę pliku, numer wiersza i cały tekst w wierszu zawierającym dopasowanie. Możesz skierować Select-String do znalezienia wielu dopasowań w wierszu, wyświetlić tekst przed i po dopasowaniu lub wyświetlić wartość logiczną (Prawda lub Fałsz), która wskazuje, czy znaleziono dopasowanie.
Select-String Może wyświetlić wszystkie dopasowania tekstu lub zatrzymać się po pierwszym dopasowaniu w każdym pliku wejściowym.
Select-String Może służyć do wyświetlania całego tekstu, który nie pasuje do określonego wzorca.
Można również określić, że Select-String należy oczekiwać określonego kodowania znaków, na przykład podczas wyszukiwania plików tekstu Unicode.
Select-String używa znaku byte-order-mark (BOM) do wykrywania formatu kodowania pliku. Jeśli plik nie ma znacznika BOM, uznaje, że kodowanie to UTF8.
Przykłady
Przykład 1: Znajdowanie dopasowania z uwzględnieniem wielkości liter
W tym przykładzie jest dopasowywany z uwzględnieniem wielkości liter tekstu, który został wysłany potokiem Select-String do polecenia cmdlet.
'Hello', 'HELLO' | Select-String -Pattern 'HELLO' -CaseSensitive -SimpleMatch
Ciągi tekstowe Hello i HELLO są wysyłane w dół potoku Select-String do polecenia cmdlet.
Select-String używa parametru Pattern w celu określenia wartości HELLO. Parametr CaseSensitive określa, że wielkość liter musi być zgodna tylko ze wzorcem wielkich liter.
SimpleMatch jest parametrem opcjonalnym i określa, że ciąg we wzorcu nie jest interpretowany jako wyrażenie regularne.
Select-String wyświetla funkcję HELLO w konsoli programu PowerShell.
Przykład 2: Znajdowanie dopasowań w plikach tekstowych
To polecenie przeszukuje wszystkie pliki z rozszerzeniem .txt nazwy pliku w bieżącym katalogu. Dane wyjściowe wyświetlają wiersze w tych plikach, które zawierają określony ciąg.
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
W tym przykładzie Get-Alias i Get-Command są używane z poleceniem Out-File cmdlet do tworzenia dwóch plików tekstowych w bieżącym katalogu, Alias.txt i Command.txt.
Select-String używa parametru Path z symbolem wieloznacznym gwiazdki (*) w celu przeszukania wszystkich plików w bieżącym katalogu z rozszerzeniem .txtnazwy pliku . Parametr Pattern określa tekst pasujący do Get-.
Select-String wyświetla dane wyjściowe w konsoli programu PowerShell. Nazwa pliku i numer wiersza poprzedzają każdy wiersz zawartości, który zawiera dopasowanie do parametru Wzorzec .
Przykład 3: Znajdowanie dopasowania wzorca
W tym przykładzie przeszukiwanych jest wiele plików w celu znalezienia dopasowań do określonego wzorca. Wzorzec używa kwantyfikatora wyrażeń regularnych. Aby uzyskać więcej informacji, zobacz 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
Polecenie Select-String cmdlet używa dwóch parametrów: Path i Pattern. Parametr Path używa zmiennej $PSHOME , która określa katalog programu PowerShell. Pozostała część ścieżki zawiera podkatalogen-US i określa każdy *.txt plik w katalogu. Parametr Pattern określa, aby dopasować znak zapytania (?) w każdym pliku. Ukośnik odwrotny (\) jest używany jako znak ucieczki i jest niezbędny, ponieważ znak zapytania (?) jest kwantyfikatorem wyrażenia regularnego.
Select-String wyświetla dane wyjściowe w konsoli programu PowerShell. Nazwa pliku i numer wiersza poprzedzają każdy wiersz zawartości, który zawiera dopasowanie do parametru Wzorzec .
Przykład 4: Używanie Select-String w funkcji
W tym przykładzie tworzona jest funkcja służąca do wyszukiwania wzorca w plikach pomocy programu PowerShell. W tym przykładzie funkcja istnieje tylko w sesji programu PowerShell. Po zamknięciu sesji programu PowerShell funkcja zostanie usunięta. Aby uzyskać więcej informacji, zobacz 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
Funkcja jest tworzona w wierszu polecenia programu PowerShell. Słowo function kluczowe używa nazwy Search-Help.
Naciśnij Enter, aby rozpocząć dodawanie instrukcji do funkcji. W wierszu >> polecenia dodaj każdą instrukcję i naciśnij Enter , jak pokazano w przykładzie. Po dodaniu nawiasu zamykającego nastąpi powrót do wiersza polecenia programu PowerShell.
Funkcja zawiera dwa polecenia. Zmienna $PSHelp przechowuje ścieżkę do plików pomocy programu PowerShell.
$PSHOME to katalog instalacyjny programu PowerShell z podkatalogiem en-US , który określa każdy *.txt plik w katalogu.
Polecenie Select-String w funkcji używa parametrów Path i Pattern . Parametr Path używa zmiennej $PSHelp w celu pobrania ścieżki. Parametr Pattern używa ciągu About_ jako kryterium wyszukiwania.
Aby uruchomić funkcję, wpisz Search-Help. Polecenie funkcji Select-String wyświetla dane wyjściowe w konsoli programu PowerShell.
Przykład 5: Wyszukiwanie ciągu w dzienniku zdarzeń systemu Windows
W tym przykładzie wyszukiwany jest ciąg w dzienniku zdarzeń systemu Windows. Zmienna $_ reprezentuje bieżący obiekt w potoku. Aby uzyskać więcej informacji, zobacz about_Automatic_Variables.
$Events = Get-WinEvent -LogName Application -MaxEvents 50
$Events | Select-String -InputObject {$_.Message} -Pattern 'Failed'
Polecenie Get-WinEvent cmdlet używa parametru LogName w celu określenia dziennika aplikacji. Parametr MaxEvents pobiera 50 najnowszych zdarzeń z dziennika. Zawartość dziennika jest przechowywana w zmiennej o nazwie $Events.
Zmienna $Events jest wysyłana w dół potoku do polecenia cmdlet Select-String.
Select-String używa parametru InputObject . Zmienna $_ reprezentuje bieżący obiekt i Message jest właściwością zdarzenia.
Parametr Pattern określa ciąg Failed (Niepowodzenie) i wyszukuje dopasowania w pliku $_.Message.
Select-String wyświetla dane wyjściowe w konsoli programu PowerShell.
Przykład 6: Znajdowanie ciągu w podkatalogach
W tym przykładzie przeszukuje katalog i wszystkie jego podkatalogi w poszukiwaniu określonego ciągu tekstowego.
Get-ChildItem -Path C:\Windows\System32\*.txt -Recurse |
Select-String -Pattern 'Microsoft' -CaseSensitive
Get-ChildItem używa parametru Path w celu określenia .txtC:\Windows\System32* . Parametr Recurse zawiera podkatalogi. Obiekty są wysyłane w dół rurki do Select-String.
Select-String używa parametru Pattern i określa ciąg Microsoft. Parametr CaseSensitive służy do dopasowania dokładnej wielkości liter ciągu.
Select-String wyświetla dane wyjściowe w konsoli programu PowerShell.
Uwaga / Notatka
W zależności od uprawnień w danych wyjściowych mogą zostać wyświetlone komunikaty o odmowie dostępu .
Przykład 7: Znajdowanie ciągów, które nie pasują do wzorca
W tym przykładzie pokazano, jak wykluczyć wiersze danych, które nie pasują do wzorca.
Get-Command | Out-File -FilePath .\Command.txt
Select-String -Path .\Command.txt -Pattern 'Get', 'Set' -NotMatch
Polecenie Get-Command cmdlet wysyła obiekty w dół potoku do , Out-File aby utworzyć plik Command.txt w bieżącym katalogu.
Select-String używa parametru Path w celu określenia pliku Command.txt . Parametr Pattern określa Get i Set jako wzorzec wyszukiwania. Parametr NotMatch wyklucza z wyników wartości Get i Set .
Select-String wyświetla dane wyjściowe w konsoli programu PowerShell, która nie zawiera opcji Pobierz lub Ustaw.
Przykład 8: Znajdowanie linii przed i po meczu
W tym przykładzie pokazano, jak uzyskać linie przed i po dopasowanym wzorcu.
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
Polecenie Get-Command cmdlet wysyła obiekty w dół potoku do , Out-File aby utworzyć plik Command.txt w bieżącym katalogu.
Select-String używa parametru Path w celu określenia pliku Command.txt .
Parametr Pattern określa Get-Computer jako wzorzec wyszukiwania. Parametr Context używa dwóch wartości, przed i po, i oznacza dopasowania wzorca w danych wyjściowych za pomocą nawiasu kątowego (>). Parametr Context wyprowadza dwa wiersze przed pierwszym dopasowaniem wzorca i trzy wiersze po ostatnim dopasowaniu wzorca.
Przykład 9: Znajdowanie wszystkich dopasowań wzorca
W tym przykładzie pokazano, jak parametr AllMatches znajduje każde dopasowanie wzorca w wierszu tekstu. Domyślnie Select-String znajduje tylko pierwsze wystąpienie wzorca w wierszu tekstu. W tym przykładzie użyto właściwości obiektu, które znajdują się Get-Member za pomocą polecenia 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
Polecenie Get-ChildItem cmdlet używa parametru Path . Parametr Path używa zmiennej $PSHOME , która określa katalog programu PowerShell. Pozostała część ścieżki zawiera podkatalogen-US i określa każdy *.txt plik w katalogu. Obiekty Get-ChildItem są przechowywane w zmiennej $A . Zmienna $A jest wysyłana w dół potoku do polecenia cmdlet Select-String.
Select-String używa parametru Pattern do wyszukiwania każdego pliku pod kątem ciągu programu PowerShell.
W wierszu $A polecenia programu PowerShell jest wyświetlana zawartość zmiennej. Istnieje wiersz zawierający dwa wystąpienia ciągu programu PowerShell.
Właściwość $A.Matches wyświetla pierwsze wystąpienie wzorca programu PowerShell w każdym wierszu.
Właściwość $A.Matches.Length zlicza pierwsze wystąpienie wzorca programu PowerShell w każdym wierszu.
Zmienna $B używa tego samego Get-ChildItem i Select-String poleceń cmdlet, ale dodaje parametr AllMatches .
AllMatches znajduje każde wystąpienie wzorca PowerShell w każdym wierszu. Obiekty przechowywane w $A zmiennych i $B są identyczne.
Właściwość $B.Matches.Length zwiększa się, ponieważ dla każdego wiersza zliczane jest każde wystąpienie wzorca programu PowerShell .
Przykład 10 — konwertowanie obiektów potoku na ciągi przy użyciu ciągu wychodzącego
Wynikiem ToString() obiektu potokowego nie jest ta sama bogata reprezentacja ciągu utworzona przez system formatowania programu PowerShell. W związku z tym może być konieczne najpierw potoki obiektów Out-String .
Potokowanie w celu Out-String przekonwertowania sformatowanych danych wyjściowych na pojedynczy obiekt ciągu wielowierszowego. Oznacza to, że w przypadku Select-String znalezienia dopasowania zwraca cały ciąg wielowierszowy.
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
Potokowanie w celu Out-String -Stream przekonwertowania sformatowanych danych wyjściowych na wiele obiektów ciągu jednowierszowego. Oznacza to, że w przypadku Select-String znalezienia dopasowania zwraca on tylko pasujący wiersz.
Parametry
-AllMatches
Wskazuje, że polecenie cmdlet wyszukuje więcej niż jedno dopasowanie w każdym wierszu tekstu. Bez tego parametru znajduje Select-String tylko pierwsze dopasowanie w każdym wierszu tekstu.
W przypadku Select-String znalezienia więcej niż jednego dopasowania w wierszu tekstu nadal emituje tylko jeden obiekt MatchInfo dla wiersza, ale właściwość MatchInfo obiektu zawiera wszystkie dopasowania.
Uwaga / Notatka
Ten parametr jest ignorowany w przypadku użycia w połączeniu z parametrem SimpleMatch . Jeśli chcesz zwrócić wszystkie dopasowania i wzorzec, którego szukasz, zawiera znaki wyrażenia regularnego, musisz użyć znaków ucieczki od tych znaków, a nie przy użyciu funkcji SimpleMatch. Aby uzyskać więcej informacji na temat ucieczki wyrażeń regularnych, zobacz about_Regular_Expressions .
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-CaseSensitive
Wskazuje, że w dopasowaniach poleceń cmdlet jest rozróżniana wielkość liter. Domyślnie w dopasowaniach nie jest rozróżniana wielkość liter.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Context
Przechwytuje określoną liczbę wierszy przed i po linii pasującej do wzorca.
Jeśli wprowadzisz jedną liczbę jako wartość tego parametru, liczba ta określi liczbę wierszy przechwyconych przed i po dopasowaniu. Jeśli wprowadzisz dwie liczby jako wartość, pierwsza liczba określi liczbę linii przed dopasowaniem, a druga liczba określi liczbę linii po dopasowaniu. Na przykład -Context 2,3.
W domyślnym wyświetlaniu linie z dopasowaniem są oznaczone prawym nawiasem kątowym (>) (ASCII 62) w pierwszej kolumnie wyświetlacza. Nieoznaczone linie są kontekstem.
Parametr Context nie zmienia liczby obiektów generowanych przez Select-String.
Select-String generuje jeden obiekt MatchInfo dla każdego dopasowania. Kontekst jest przechowywany jako tablica ciągów znaków we właściwości Context obiektu.
Gdy dane wyjściowe Select-String polecenia są wysyłane w dół potoku do innego Select-String polecenia, polecenie odbierające przeszukuje tylko tekst w dopasowanym wierszu. Dopasowany wiersz jest wartością właściwości Line obiektu MatchInfo , a nie tekstem w wierszach kontekstu. W związku z tym parametr Context nie jest prawidłowy w poleceniu odbierania Select-String .
Gdy kontekst zawiera dopasowanie, obiekt MatchInfo dla każdego dopasowania zawiera wszystkie linie kontekstu, ale nakładające się linie pojawiają się w widoku tylko raz.
Właściwości parametru
| Typ: | Int32[] |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Culture
Określa nazwę kultury zgodną z określonym wzorcem. Parametr Culture musi być używany z parametrem SimpleMatch . Domyślne zachowanie używa kultury bieżącej przestrzeni uruchomieniowej programu PowerShell (sesji).
Aby uzyskać listę wszystkich obsługiwanych kultur, użyj Get-Culture -ListAvailable polecenia .
Ponadto ten parametr akceptuje następujące argumenty:
- CurrentCulture, czyli wartość domyślna;
- Porządkowe, czyli nielingwistyczny porównanie binarne;
- Niezmienne, czyli niezależne od kultury porównanie.
Dzięki Select-String -Culture Ordinal -CaseSensitive -SimpleMatch poleceniu uzyskasz najszybsze porównanie binarne.
Parametr Culture używa uzupełniania tabulatora, aby przewijać listę argumentów określających dostępne kultury. Aby wyświetlić listę wszystkich dostępnych argumentów, użyj następującego polecenia:
(Get-Command Select-String).Parameters.Culture.Attributes.ValidValues
Aby uzyskać więcej informacji na temat właściwości platformy .NET CultureInfo.Name, zobacz CultureInfo.Name.
Parametr Culture został wprowadzony w programie PowerShell 7.
Właściwości parametru
| Typ: | String |
| Domyślna wartość: | Culture of the current PowerShell session |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Encoding
Określa typ kodowania dla pliku docelowego. Wartość domyślna to utf8NoBOM.
Dopuszczalne wartości tego parametru są następujące:
-
ascii: używa kodowania zestawu znaków ASCII (7-bitowych). -
ansi: używa kodowania strony kodowej ANSI dla bieżącej kultury. Ta opcja została dodana w programie PowerShell 7.4. -
bigendianunicode: Koduje w formacie UTF-16 wykorzystując porządek bajtów big-endian. -
bigendianutf32: Koduje w formacie UTF-32 przy użyciu kolejności bajtów big-endian. -
oem: używa domyślnego kodowania dla programów MS-DOS i konsoli. -
unicode: Koduje w formacie UTF-16, używając układu bajtów little-endian. -
utf7: koduje w formacie UTF-7. -
utf8: koduje w formacie UTF-8. -
utf8BOM: koduje w formacie UTF-8 za pomocą znacznika kolejności bajtów (BOM) -
utf8NoBOM: Koduje w formacie UTF-8, nie używając znacznika kolejności bajtów (BOM) -
utf32: koduje w formacie UTF-32.
Począwszy od programu PowerShell 6.2, w parametrze Kodowanie można używać również numerycznych identyfikatorów zarejestrowanych stron kodu (na przykład -Encoding 1251) lub nazw tekstowych zarejestrowanych stron kodu (na przykład -Encoding "windows-1251"). Aby uzyskać więcej informacji, zobacz dokumentację platformy .NET dotyczącą Encoding.CodePage.
Począwszy od programu PowerShell 7.4, można użyć wartości
Uwaga / Notatka
UTF-7* nie jest już zalecane do użycia. Od wersji PowerShell 7.1 zapisywane jest ostrzeżenie, jeśli określisz utf7 dla parametru kodowania .
Właściwości parametru
| Typ: | Encoding |
| Domyślna wartość: | UTF8NoBOM |
| Dopuszczalne wartości: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Exclude
Wyklucz określone elementy. Wartość tego parametru kwalifikuje parametr Path. Wprowadź element ścieżki lub wzorzec, taki jak *.txt. Symbole wieloznaczne są dozwolone.
Właściwości parametru
| Typ: | String[] |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | True |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Include
Zawiera określone elementy. Wartość tego parametru kwalifikuje parametr Path. Wprowadź element ścieżki lub wzorzec, taki jak *.txt. Symbole wieloznaczne są dozwolone.
Właściwości parametru
| Typ: | String[] |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | True |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-InputObject
Określa tekst, który ma być przeszukiwany. Wprowadź zmienną, która zawiera tekst, lub wpisz polecenie lub wyrażenie, które pobiera tekst.
Użycie parametru InputObject nie jest tym samym, co wysyłanie ciągów w dół potoku do Select-String.
W przypadku potoku Select-String więcej niż jednego ciągu do polecenia cmdlet wyszukuje on określony tekst w każdym ciągu i zwraca każdy ciąg zawierający szukany tekst.
W przypadku korzystania z parametru InputObject w celu przesłania kolekcji ciągów Select-String traktuje kolekcję jako pojedynczy połączony ciąg.
Select-String Zwraca ciągi jako jednostkę, jeśli znajdzie szukany tekst w dowolnym ciągu.
Obiekty FileInfo są traktowane jako ścieżka do pliku. Po określeniu Select-String ścieżek plików przeszukuje zawartość pliku, a nie reprezentację ToString() obiektu.
Właściwości parametru
| Typ: | PSObject |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
Object
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | True |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
ObjectRaw
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | True |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-List
Z każdego pliku wejściowego zwracane jest tylko pierwsze wystąpienie pasującego tekstu. Jest to najbardziej wydajny sposób pobierania listy plików, które mają zawartość zgodną z wyrażeniem regularnym.
Domyślnie Select-String zwraca obiekt MatchInfo dla każdego znalezionego dopasowania.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-LiteralPath
Określa ścieżkę do plików, które mają być przeszukiwane. Wartość parametru LiteralPath jest używana dokładnie tak, jak jest typowana. Żadne znaki nie są interpretowane jako symbole wieloznaczne. Jeśli ścieżka zawiera znaki ucieczki, należy ująć ją w pojedynczy cudzysłów. Pojedyncze cudzysłowy wskazują programowi PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki. Aby uzyskać więcej informacji, zobacz about_Quoting_Rules.
Właściwości parametru
| Typ: | String[] |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
| Aliasy: | PSPath, LP |
Zestawy parametrów
LiteralFileRaw
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
LiteralFile
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
-NoEmphasis
Domyślnie Select-String wyróżnia ciąg zgodny ze wzorcem wyszukiwanym za pomocą parametru Pattern . Parametr NoEmphasis wyłącza wyróżnianie.
Nacisk używa kolorów ujemnych na podstawie kolorów tła i tekstu programu PowerShell. Jeśli na przykład kolory programu PowerShell są czarnym tłem z białym tekstem. Wyróżnienie to białe tło z czarnym tekstem.
Ten parametr został wprowadzony w programie PowerShell 7.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-NotMatch
Parametr NotMatch znajduje tekst, który nie jest zgodny z określonym wzorcem.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Path
Określa ścieżkę do plików do przeszukania. Symbole wieloznaczne są dozwolone. Domyślną lokalizacją jest katalog lokalny.
Określ pliki w katalogu, takie jak log1.txt, *.doc, lub *.*. Jeśli określisz tylko katalog, polecenie zakończy się niepowodzeniem.
Właściwości parametru
| Typ: | String[] |
| Domyślna wartość: | Local directory |
| Obsługuje symbole wieloznaczne: | True |
| DontShow: | False |
Zestawy parametrów
File
| Position: | 1 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
FileRaw
| Position: | 1 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | True |
| Wartość z pozostałych argumentów: | False |
-Pattern
Określa tekst, który ma zostać znaleziony w każdym wierszu. Wartość wzorca jest traktowana jako wyrażenie regularne.
Aby dowiedzieć się więcej o wyrażeniach regularnych, zobacz about_Regular_Expressions.
Właściwości parametru
| Typ: | String[] |
| Domyślna wartość: | None |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | 0 |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Quiet
Wskazuje, że polecenie cmdlet zwraca prostą odpowiedź zamiast obiektu MatchInfo . Zwracana wartość to $true , jeśli wzorzec zostanie znaleziony lub $null jeśli wzorzec nie zostanie znaleziony.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
File
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
Object
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
LiteralFile
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-Raw
Powoduje, że polecenie cmdlet zwraca tylko pasujące ciągi, a nie obiekty MatchInfo . To zachowanie jest najbardziej podobne do poleceń systemu Unix grep lub Windows findstr.exe .
Ten parametr został wprowadzony w programie PowerShell 7.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
ObjectRaw
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
FileRaw
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
LiteralFileRaw
| Position: | Named |
| Obowiązkowy: | True |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
-SimpleMatch
Wskazuje, że polecenie cmdlet używa prostego dopasowania, a nie dopasowania wyrażenia regularnego. W prostym dopasowaniu Select-String przeszukuje dane wejściowe pod kątem tekstu w parametrze Wzorzec . Nie interpretuje wartości parametru Pattern jako instrukcji wyrażenia regularnego.
Ponadto w przypadku użycia funkcji SimpleMatch zwracana właściwość MatchInfo obiektu MatchInfo jest pusta.
Uwaga / Notatka
Jeśli ten parametr jest używany z parametrem AllMatches , atrybut AllMatches jest ignorowany.
Właściwości parametru
| Typ: | SwitchParameter |
| Domyślna wartość: | False |
| Obsługuje symbole wieloznaczne: | False |
| DontShow: | False |
Zestawy parametrów
(All)
| Position: | Named |
| Obowiązkowy: | False |
| Wartość z potoku: | False |
| Wartość z potoku według nazwy właściwości: | False |
| Wartość z pozostałych argumentów: | False |
CommonParameters
To polecenie cmdlet obsługuje typowe parametry: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction i -WarningVariable. Aby uzyskać więcej informacji, zobacz about_CommonParameters.
Dane wejściowe
PSObject
Możesz potokować dowolny obiekt, który ma metodę ToString() do tego polecenia cmdlet.
Dane wyjściowe
MatchInfo
Domyślnie to polecenie cmdlet zwraca obiekt MatchInfo dla każdego znalezionego dopasowania.
Boolean
Jeśli używasz parametru Quiet , to polecenie cmdlet zwraca wartość logiczną wskazującą, czy wzorzec został znaleziony.
String
Jeśli używasz parametru Raw , to polecenie cmdlet zwraca zestaw obiektów String , które pasują do wzorca.
Uwagi
Program PowerShell zawiera następujące aliasy dla Select-String:
- Wszystkie platformy:
sls
Select-String jest podobny do grep w systemie Unix lub findstr.exe w systemie Windows.
Alias slsSelect-String polecenia cmdlet został wprowadzony w programie PowerShell 3.0.
Uwaga / Notatka
Zgodnie z zatwierdzonymi czasownikami dla poleceń programu PowerShell oficjalny prefiks aliasu dla Select-* poleceń cmdlet to sc, a nie sl. W związku z tym właściwym aliasem dla Select-String powinno być scs, a nie sls. Jest to wyjątek od tej reguły.
Podczas potokowania obiektów do :Select-String
-
Obiekty FileInfo są traktowane jako ścieżka do pliku. Po określeniu
Select-Stringścieżek plików przeszukuje zawartość pliku, a nie reprezentacjęToString()obiektu. - Wynikiem
ToString()obiektu potokowego nie jest ta sama bogata reprezentacja ciągu utworzona przez system formatowania programu PowerShell. W związku z tym może być konieczne najpierw potoki obiektówOut-String. Aby uzyskać więcej informacji, zobacz Przykład 10.
Aby użyć Select-Stringpolecenia , wpisz tekst, który chcesz znaleźć, jako wartość parametru Wzorzec . Aby określić tekst, który ma być przeszukiwany, należy użyć następujących kryteriów:
- Wpisz tekst w ciągu ujętym w cudzysłów, a następnie przesyłaj go do
Select-Stringfolderu . - Zapisz ciąg tekstowy w zmiennej, a następnie określ zmienną jako wartość parametru InputObject .
- Jeśli tekst jest przechowywany w plikach, użyj parametru Path , aby określić ścieżkę do plików.
Domyślnie Select-String interpretuje wartość parametru Pattern jako wyrażenie regularne. Aby uzyskać więcej informacji, zobacz about_Regular_Expressions. Możesz użyć parametru SimpleMatch , aby zastąpić dopasowywanie wyrażeń regularnych. Parametr SimpleMatch znajduje wystąpienia wartości parametru Pattern w danych wejściowych.
Domyślnymi danymi wyjściowymi Select-String jest MatchInfo obiekt, który zawiera szczegółowe informacje o dopasowaniach. Informacje zawarte w obiekcie są przydatne podczas wyszukiwania tekstu w plikach, ponieważ obiekty MatchInfo mają właściwości, takie jak Filename i Line. Jeśli dane wejściowe nie pochodzą z pliku, wartość tych parametrów to InputStream.
Jeśli informacje w obiekcie MatchInfo nie są potrzebne, należy użyć parametru Quiet . Parametr Quiet zwraca wartość logiczną (True lub False), aby wskazać, czy znalazł dopasowanie, a nie obiekt MatchInfo .
Podczas dopasowywania Select-String fraz używa bieżącej kultury ustawionej dla systemu. Aby znaleźć bieżącą kulturę, użyj Get-Culture polecenia cmdlet .
Aby znaleźć właściwości obiektu MatchInfo , wpisz następujące polecenie:
Select-String -Path test.txt -Pattern 'test' | Get-Member | Format-List -Property *