Udostępnij za pośrednictwem


Select-String

Znajduje tekst w ciągach i plikach.

Składnia

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>]

Opis

Polecenie Select-String cmdlet używa dopasowania wyrażenia regularnego do wyszukiwania wzorców tekstu w ciągach wejściowych i plikach. Można użyć Select-String funkcji podobnej do grep w systemach UNIX lub findstr.exe Windows.

Select-String jest oparta na wierszach tekstu. Domyślnie Select-String znajduje pierwsze dopasowanie w każdym wierszu, a dla każdego dopasowania wyświetla nazwę pliku, numer wiersza i cały tekst w wierszu zawierającym dopasowanie. Można bezpośrednio Select-String znaleźć wiele dopasowań na wiersz, wyświetlić tekst przed i po dopasowaniu lub wyświetlić wartość logiczną (Prawda lub Fałsz), która wskazuje, czy dopasowanie zostało znalezione.

Select-String program może wyświetlić wszystkie dopasowania tekstowe 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 jest zgodny z określonym wzorcem.

Można również określić, że Select-String powinno się oczekiwać określonego kodowania znaków, na przykład podczas wyszukiwania plików tekstu Unicode. Select-String używa bajtu order-mark (BOM) do wykrywania formatu kodowania pliku. Jeśli plik nie ma modelu BOM, zakłada, że kodowanie ma wartość UTF8.

Przykłady

Przykład 1. Znajdowanie dopasowania uwzględniającego wielkość liter

W tym przykładzie jest uwzględniana wielkość liter w tekście, który został wysłany w potoku 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 funkcji HELLO. Parametr CaseSensitive określa, że wielkość liter musi być zgodna tylko ze wzorcem wielkie litery. SimpleMatch jest opcjonalnym parametrem i określa, że ciąg we wzorcu nie jest interpretowany jako wyrażenie regularne. Select-String wyświetla komunikat HELLO w konsoli programu PowerShell.

Przykład 2. Znajdowanie dopasowań w plikach tekstowych

To polecenie wyszukuje wszystkie pliki z .txt rozszerzeniem nazwy pliku w bieżącym katalogu. Dane wyjściowe zawierają 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-AliasOut-File i Get-Command są używane z poleceniem 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 wieloznacznymi gwiazdki (*), aby przeszukać wszystkie pliki w bieżącym katalogu z rozszerzeniem .txtnazwy pliku . Parametr Pattern określa tekst zgodny z poleceniem 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 dla parametru Pattern .

Przykład 3. Znajdowanie dopasowania wzorca

W tym przykładzie przeszukiwane jest wiele plików w celu znalezienia dopasowań dla określonego wzorca. Wzorzec używa kwantyfikatora wyrażenia regularnego. 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 (Ścieżka ) i Pattern (Wzorzec). Parametr Path używa zmiennej $PSHOME , która określa katalog programu PowerShell. Pozostała część ścieżki zawiera podkatalog en-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 konieczny, 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 dla parametru Pattern .

Przykład 4. Używanie Select-String w funkcji

W tym przykładzie tworzona jest funkcja 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. Polecenie Function używa nazwy Search-Help. Naciśnij klawisz Enter , aby rozpocząć dodawanie instrukcji do funkcji. >> W wierszu polecenia dodaj każdą instrukcję i naciśnij klawisz Enter, jak pokazano w przykładzie. Po dodaniu nawiasu zamykającego zostanie zwrócony wiersz 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 podkatalogem 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 do pobrania ścieżki. Parametr Pattern używa ciągu About_ jako kryteriów wyszukiwania.

Aby uruchomić funkcję, wpisz Search-Help. Polecenie funkcji Select-String wyświetla dane wyjściowe w konsoli programu PowerShell.

Przykład 5: Search dla 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 do 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 Select-String do polecenia cmdlet . 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 elemecie $_.message. Select-String wyświetla dane wyjściowe w konsoli programu PowerShell.

Przykład 6. Znajdowanie ciągu w podkatalogach

W tym przykładzie przeszukiwany jest katalog i wszystkie jego podkatalogi podkatalogów dla określonego ciągu tekstowego.

Get-ChildItem -Path C:\Windows\System32\*.txt -Recurse | Select-String -Pattern 'Microsoft' -CaseSensitive

Get-ChildItem używa parametru Path do określenia C:\Windows\System32*.txt. Parametr Recurse zawiera podkatalogi. Obiekty są wysyłane w dół potoku do elementu Select-String.

Select-String używa parametru Pattern i określa ciąg Microsoft. Parametr CaseSensitive jest używany do dopasowania dokładnego przypadku ciągu. Select-String wyświetla dane wyjściowe w konsoli programu PowerShell.

Uwaga

W danych wyjściowych mogą pojawić się komunikaty odmowy dostępu zależne od uprawnień.

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 Out-File do elementu , 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 polecenia Get i Set z wyników. Select-String Wyświetla dane wyjściowe w konsoli programu PowerShell, które nie zawierają polecenia Pobierz lub Ustaw.

Przykład 8: znajdowanie wierszy przed dopasowaniem i po nim

W tym przykładzie pokazano, jak pobrać wiersze 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 Out-File do elementu , 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, a wzorzec oznacza dopasowania wzorca w danych wyjściowych z nawiasem kątowym (>). Parametr Context zwraca dwa wiersze przed pierwszym dopasowaniem wzorca i trzema wierszami po ostatnim dopasowaniu wzorca.

Przykład 9. Znajdowanie wszystkich dopasowań wzorca

W tym przykładzie pokazano, jak parametr AllMatches znajduje dopasowanie każdego 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 znalezionych za pomocą Get-Member 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 podkatalog en-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 Select-String do polecenia cmdlet . Select-String Używa parametru Pattern , aby wyszukać każdy plik dla ciągu programu PowerShell.

W wierszu polecenia programu PowerShell wyświetlana jest zawartość zmiennej $A . 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 tych samych Get-ChildItem poleceń cmdlet i Select-String , ale dodaje parametr AllMatches . Funkcja AllMatches znajduje każde wystąpienie wzorca programu 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 jest liczone każde wystąpienie wzorca programu PowerShell .

Przykład 10 — konwertowanie obiektów potoku na ciągi przy użyciu ciągu "Out-String"

Wynik ToString() obiektu potokowego nie jest tą samą bogatą reprezentacją ciągu utworzoną przez system formatowania programu PowerShell. W związku z tym może być konieczne potoki obiektów do Out-String pierwszego.

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 wyprowadza tylko pasujący wiersz.

Parametry

-AllMatches

Wskazuje, że polecenie cmdlet wyszukuje więcej niż jedno dopasowanie w każdym wierszu tekstu. Bez tego parametru Select-String znajduje 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ść Matches obiektu zawiera wszystkie dopasowania.

Uwaga

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ć ucieczki od tych znaków, zamiast używać funkcji SimpleMatch. Aby uzyskać więcej informacji na temat ucieczki wyrażeń regularnych, zobacz about_Regular_Expressions .

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

-CaseSensitive

Wskazuje, że w poleceniach cmdlet jest uwzględniana wielkość liter. Domyślnie dopasowania nie są uwzględniane w wielkości liter.

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

-Context

Przechwytuje określoną liczbę wierszy przed i po wierszu zgodnym ze wzorcem.

Jeśli wprowadzisz jedną liczbę jako wartość tego parametru, ta liczba określa liczbę wierszy przechwyconych przed dopasowaniem i po nim. Jeśli wprowadzisz dwie liczby jako wartość, pierwsza liczba określa liczbę wierszy przed dopasowaniem, a druga liczba określa liczbę wierszy po dopasowaniu. Na przykład -Context 2,3.

Na ekranie domyślnym linie z dopasowaniem są wskazywane przez prawy nawias kątowy (>) (ASCII 62) w pierwszej kolumnie ekranu. Nieoznaczone wiersze są kontekstem.

Parametr Context nie zmienia liczby obiektów generowanych przez Select-Stringelement . Select-String generuje jeden obiekt MatchInfo dla każdego dopasowania. Kontekst jest przechowywany jako tablica ciągó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, odbierające polecenie wyszukuje 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 wiersze kontekstu, ale nakładające się wiersze są wyświetlane tylko raz na ekranie.

Type:Int32[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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, które określają 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.

Type:String
Position:Named
Default value:Culture of the current PowerShell session
Required:False
Accept pipeline input:False
Accept wildcard characters: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 dla zestawu znaków ASCII (7-bitowych).
  • bigendianunicode: Koduje w formacie UTF-16 przy użyciu kolejności 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 konsolowych.
  • unicode: Koduje w formacie UTF-16 przy użyciu kolejności 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 bez znaku zamówienia bajtów (BOM)
  • utf32: Koduje w formacie UTF-32.

Począwszy od programu PowerShell 6.2, parametr kodowania umożliwia również identyfikatory liczbowe zarejestrowanych stron kodu (takich jak ) lub nazwy ciągów zarejestrowanych stron kodu (na przykład -Encoding 1251-Encoding "windows-1251"). Aby uzyskać więcej informacji, zobacz dokumentację platformy .NET dotyczącą pliku Encoding.CodePage.

Uwaga

UtF-7* nie jest już zalecane do użycia. Od programu PowerShell 7.1 jest napisane ostrzeżenie, jeśli zostanie określone utf7 dla parametru Kodowanie .

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

-Exclude

Wyklucz określone elementy. Wartość tego parametru kwalifikuje parametr Path . Wprowadź element ścieżki lub wzorzec, taki jak *.txt. Dozwolone są symbole wieloznaczne.

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

-Include

Zawiera określone elementy. Wartość tego parametru kwalifikuje parametr Path . Wprowadź element ścieżki lub wzorzec, taki jak *.txt. Dozwolone są symbole wieloznaczne.

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

-InputObject

Określa tekst, który ma zostać przeszukany. Wprowadź zmienną zawierającą tekst lub wpisz polecenie lub wyrażenie, które pobiera tekst.

Użycie parametru InputObject nie jest takie samo jak wysyłanie ciągów w dół potoku do Select-String.

Gdy potokujesz więcej niż jeden ciąg do Select-String polecenia cmdlet, wyszukuje określony tekst w każdym ciągu i zwraca każdy ciąg zawierający tekst wyszukiwania.

Gdy używasz parametru InputObject do przesył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 tekst wyszukiwania 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 ToString() reprezentację obiektu.

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

-List

Tylko pierwsze wystąpienie pasującego tekstu jest zwracane z każdego pliku wejściowego. 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.

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

-LiteralPath

Określa ścieżkę do przeszukiwanych plików. Wartość parametru LiteralPath jest używana dokładnie tak, jak jest typowana. Znaki nie są interpretowane jako symbole wieloznaczne. Jeśli ścieżka zawiera znaki ucieczki, należy je ująć w pojedynczy cudzysłów. Znaki pojedynczego cudzysłowu informują program PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki. Aby uzyskać więcej informacji, zobacz about_Quoting_Rules.

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

-NoEmphasis

Domyślnie Select-String wyróżnia ciąg zgodny ze wzorcem wyszukiwanym za pomocą parametru Wzorzec . 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.

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

-NotMatch

Parametr NotMatch znajduje tekst, który nie jest zgodny z określonym wzorcem.

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

-Path

Określa ścieżkę do plików do wyszukiwania. Dozwolone są symbole wieloznaczne. Domyślną lokalizacją jest katalog lokalny.

Określ pliki w katalogu, takie jak log1.txt, *.doclub *.*. Jeśli określisz tylko katalog, polecenie zakończy się niepowodzeniem.

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

-Pattern

Określa tekst do znalezienia 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.

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

-Quiet

Wskazuje, że polecenie cmdlet zwraca wartość logiczną (prawda lub fałsz), zamiast obiektu MatchInfo . Wartość ma wartość True, jeśli wzorzec zostanie znaleziony; w przeciwnym razie wartość to False.

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

-Raw

Powoduje, że polecenie cmdlet generuje tylko pasujące ciągi, a nie obiekty MatchInfo . Jest to wynik zachowania, który jest najbardziej podobny do poleceń grep systemu Unix lub Windows findstr.exe .

Ten parametr został wprowadzony w programie PowerShell 7.

Type:SwitchParameter
Position:Named
Default value:False
Required:True
Accept pipeline input:False
Accept wildcard characters: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 dla tekstu w parametrze Wzorzec . Nie interpretuje wartości parametru Pattern jako instrukcji wyrażenia regularnego.

Ponadto, gdy jest używana funkcja SimpleMatch , zwracana właściwość MatchInfo obiektu MatchInfo jest pusta.

Uwaga

Gdy ten parametr jest używany z parametrem AllMatches , atrybut AllMatches jest ignorowany.

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

Dane wejściowe

PSObject

Możesz przekazać potok do dowolnego obiektu, który ma metodę ToString()Select-String.

Dane wyjściowe

Microsoft.PowerShell.Commands.MatchInfo, System.Boolean, System.String

Domyślnie dane wyjściowe są zestawem obiektów MatchInfo z jednym dla każdego znalezionego dopasowania. Jeśli używasz parametru Quiet , dane wyjściowe są wartością logiczną wskazującą, czy wzorzec został znaleziony. Jeśli używasz parametru Raw , dane wyjściowe są zestawem obiektów String , które pasują do wzorca.

Uwagi

Select-String jest podobny do grep w systemie UNIX lub findstr.exe Windows.

Alias sls polecenia Select-String cmdlet został wprowadzony w programie PowerShell 3.0.

Uwaga

Zgodnie z zatwierdzonymi zleceniami poleceń programu PowerShell oficjalny prefiks aliasu dla Select-* poleceń cmdlet to sc, a nie sl. Dlatego odpowiedni alias dla Select-String elementu powinien mieć scswartość , 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.
  • Wynik ToString() obiektu potokowego nie jest tą samą bogatą reprezentacją ciągu utworzoną przez system formatowania programu PowerShell. W związku z tym może być konieczne potoki obiektów do Out-String pierwszego. Aby uzyskać więcej informacji, zobacz Przykład 10.

Aby użyć polecenia Select-String, wpisz tekst, który chcesz znaleźć jako wartość parametru Pattern . Aby określić tekst do przeszukania, użyj następujących kryteriów:

  • Wpisz tekst w ciągu cudzysłów, a następnie przekaż go potokiem do Select-String.
  • 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 Ścieżka , 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ć dopasowanie wyrażenia regularnego. Parametr SimpleMatch znajduje wystąpienia wartości parametru Pattern w danych wejściowych.

Domyślne dane wyjściowe Select-String polecenia to obiekt MatchInfo , który zawiera szczegółowe informacje o dopasowaniach. Informacje w obiekcie są przydatne podczas wyszukiwania tekstu w plikach, ponieważ obiekty MatchInfo mają właściwości, takie jak Nazwa pliku i Linia. Jeśli dane wejściowe nie pochodzą z pliku, wartość tych parametrów to InputStream.

Jeśli nie potrzebujesz informacji w obiekcie MatchInfo , użyj parametru Quiet . Parametr Quiet zwraca wartość logiczną (Prawda lub Fałsz), aby wskazać, czy znaleziono dopasowanie, a nie obiekt MatchInfo.

Podczas dopasowywania fraz Select-String używa bieżącej kultury ustawionej dla systemu. Aby znaleźć bieżącą kulturę Get-Culture , użyj 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 *