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żesz 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żesz 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
może wyświetlić wszystkie dopasowania tekstowe lub zatrzymać 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 znaku byte-order-mark (BOM) do wykrywania formatu kodowania pliku. Jeśli plik nie ma modelu BOM, zakłada, że kodowanie to UTF8.
Przykłady
Przykład 1. Znajdowanie dopasowania uwzględniającego wielkość liter
W tym przykładzie jest rozróżniana wielkość liter w tekście, który został wysłany w dół 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 wartość 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 wyświetla 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
Out-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 .txt
nazwy 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 parametru Pattern .
Przykład 3. Znajdowanie dopasowania wzorca
W tym przykładzie przeszukiwane są 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 i Pattern. 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 pasować do znaku 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 parametru Pattern .
Przykład 4. Używanie funkcji 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 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 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 Ścieżka i Wzorzec . 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. 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 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 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 dla określonego ciągu tekstowego.
Get-ChildItem -Path C:\Windows\System32\*.txt -Recurse |
Select-String -Pattern 'Microsoft' -CaseSensitive
Get-ChildItem
używa parametru Ścieżka , aby określić C:\Windows\System32*.txt. Parametr Recurse zawiera podkatalogi. Obiekty są wysyłane w dół potoku do Select-String
elementu .
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.
Przykład 7. Znajdowanie ciągów, które nie są zgodne ze wzorcem
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
obiektu , aby utworzyć plik Command.txt w bieżącym katalogu. Select-String
używa parametru Path , aby określić plik Command.txt . Parametr Pattern określa Get i Set jako wzorzec wyszukiwania. Parametr NotMatch wyklucza polecenie Get i Set z wyników.
Select-String
wyświetla dane wyjściowe w konsoli programu PowerShell, które nie zawierają opcji 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 do Out-File
obiektu , aby utworzyć plik Command.txt w bieżącym katalogu. Select-String
używa parametru Path , aby określić plik 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 dopasowanie 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 obiektów 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 do wyszukiwania każdego pliku 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 . WszystkieMatches 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 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 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ść MatchInfo 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ć 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 .
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-CaseSensitive
Wskazuje, że w poleceniach cmdlet jest uwzględniana wielkość liter. Domyślnie dopasowania nie są uwzględniane wielkości liter.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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-String
element .
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 tekstu w wierszach kontekstu. W związku z tym parametr Context nie jest prawidłowy w poleceniu odbierającego 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.
Typ: | Int32[] |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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.
Typ: | String |
Position: | Named |
Domyślna wartość: | Culture of the current PowerShell session |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Encoding
Określa typ kodowania dla pliku docelowego. Domyślna wartość to utf8NoBOM
.
Dopuszczalne wartości tego parametru są następujące:
ascii
: używa kodowania dla zestawu znaków ASCII (7-bitowych).ansi
: używa kodowania dla strony kodowej ANSI bieżącej kultury. Ta opcja została dodana w programie PowerShell 7.4.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 konsoli.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ą języka Byte Order Mark (BOM)utf8NoBOM
: Koduje w formacie UTF-8 bez znaku kolejności bajtów (BOM)utf32
: Koduje w formacie UTF-32.
Począwszy od programu PowerShell 6.2, parametr Kodowanie umożliwia również numeryczne identyfikatory 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.
Począwszy od programu PowerShell 7.4, można użyć Ansi
wartości parametru Kodowanie , aby przekazać identyfikator liczbowy dla strony kodowej ANSI bieżącej kultury bez konieczności ręcznego określania go.
Uwaga
UtF-7* nie jest już zalecane do użycia. Zgodnie z programem PowerShell 7.1 ostrzeżenie jest zapisywane w przypadku określenia utf7
parametru Kodowanie .
Typ: | Encoding |
Dopuszczalne wartości: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Domyślna wartość: | UTF8NoBOM |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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.
Typ: | String[] |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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.
Typ: | String[] |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | True |
-InputObject
Określa tekst do wyszukania. 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 reprezentację ToString()
obiektu.
Typ: | PSObject |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | False |
-List
Zwracane jest tylko pierwsze wystąpienie pasującego tekstu 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.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-LiteralPath
Określa ścieżkę do plików do przeszukania. 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 ująć ją w pojedynczy cudzysłów. Pojedyncze znaki cudzysłowu informują program PowerShell, aby nie interpretował żadnych znaków jako sekwencji ucieczki. Aby uzyskać więcej informacji, zobacz about_Quoting_Rules.
Typ: | String[] |
Aliasy: | PSPath, LP |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | 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.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-NotMatch
Parametr NotMatch znajduje tekst, który nie jest zgodny z określonym wzorcem.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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
, *.doc
lub *.*
. Jeśli określisz tylko katalog, polecenie zakończy się niepowodzeniem.
Typ: | String[] |
Position: | 1 |
Domyślna wartość: | Local directory |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | True |
Akceptowanie symboli wieloznacznych: | 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.
Typ: | String[] |
Position: | 0 |
Domyślna wartość: | None |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | 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.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Raw
Powoduje, że polecenie cmdlet zwraca 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.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | True |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-SimpleMatch
Wskazuje, że polecenie cmdlet używa prostego dopasowania, a nie dopasowania wyrażenia regularnego. W prostym dopasowaniu Select-String
wyszukuje tekst w parametrze Pattern . 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
Jeśli ten parametr jest używany z parametrem AllMatches , atrybut AllMatches jest ignorowany.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | False |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
Dane wejściowe
Możesz potokować dowolny obiekt, który ma metodę ToString()
do tego polecenia cmdlet.
Dane wyjściowe
Domyślnie to polecenie cmdlet zwraca obiekt MatchInfo dla każdego znalezionego dopasowania.
Jeśli używasz parametru Quiet, to polecenie cmdlet zwraca wartość logiczną wskazującą, czy wzorzec został znaleziony.
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 programu Select-String
:
- Wszystkie platformy:
sls
Select-String
jest podobny do grep
w systemie UNIX lub findstr.exe
w systemie Windows.
Alias sls
Select-String
polecenia 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
. W związku z tym odpowiedni alias dla Select-String
elementu powinien mieć scs
wartość , 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-String
elementu , wpisz tekst, który chcesz znaleźć jako wartość parametru Pattern . Aby określić wyszukiwany tekst, użyj następujących kryteriów:
- Wpisz tekst w cudzysłym ciągu, a następnie przejmij go 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 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. Aby zastąpić dopasowanie wyrażenia regularnego, można użyć parametru SimpleMatch . Parametr SimpleMatch znajduje wystąpienia wartości parametru Pattern w danych wejściowych.
Domyślne dane wyjściowe Select-String
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, zamiast obiektu MatchInfo.
Podczas dopasowywania fraz Select-String
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 *