Select-String
Sucht Text in Zeichenfolgen und Dateien.
Syntax
File (Standardwert)
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>]
Beschreibung
Das Cmdlet Select-String verwendet den regulären Ausdrucksabgleich, um in Eingabezeichenfolgen und Dateien nach Textmustern zu suchen. Sie können Select-String ähnlich wie grep in Unix oder findstr.exe in Windows verwenden.
Select-String basiert auf Textzeilen. Standardmäßig findet Select-String die erste Übereinstimmung in jeder Zeile und zeigt für jede Übereinstimmung den Dateinamen, die Zeilennummer und den gesamten Text in der Zeile an, die die Übereinstimmung enthält. Sie können Select-String weiterleiten, um mehrere Übereinstimmungen pro Zeile zu finden, Text vor und nach der Übereinstimmung anzuzeigen, oder einen booleschen Wert (True oder False) anzeigen, der angibt, ob eine Übereinstimmung gefunden wird.
Select-String können alle Textausstimmungen anzeigen oder nach der ersten Übereinstimmung in jeder Eingabedatei beenden.
Select-String können verwendet werden, um den gesamten Text anzuzeigen, der nicht mit dem angegebenen Muster übereinstimmt.
Sie können auch angeben, dass Select-String eine bestimmte Zeichencodierung erwarten sollten, z. B. beim Durchsuchen von Dateien mit Unicode-Text.
Select-String verwendet das Bytereihenfolgenzeichen (BOM), um das Codierungsformat der Datei zu erkennen. Wenn die Datei keine BOM aufweist, wird davon ausgegangen, dass die Codierung UTF8 ist.
Beispiele
Beispiel 1: Suchen einer Übereinstimmung zwischen Groß- und Kleinschreibung
In diesem Beispiel wird eine Übereinstimmung zwischen Groß- und Kleinschreibung des Texts ausgeführt, der an das Cmdlet Select-String gesendet wurde.
'Hello', 'HELLO' | Select-String -Pattern 'HELLO' -CaseSensitive -SimpleMatch
Die Textzeichenfolgen Hello und HELLO werden an das Cmdlet Select-String weitergeleitet.
Select-String verwendet den Parameter Pattern, um HELLO-anzugeben. Der parameter CaseSensitive gibt an, dass die Groß-/Kleinschreibung nur mit dem Groß-/Kleinschreibungsmuster übereinstimmen muss.
SimpleMatch ist ein optionaler Parameter und gibt an, dass die Zeichenfolge im Muster nicht als regulärer Ausdruck interpretiert wird.
Select-String zeigt HELLO- in der PowerShell-Konsole an.
Beispiel 2: Suchen von Übereinstimmungen in Textdateien
Mit diesem Befehl werden alle Dateien mit der Dateinamenerweiterung .txt im aktuellen Verzeichnis durchsucht. Die Ausgabe zeigt die Zeilen in den Dateien an, die die angegebene Zeichenfolge enthalten.
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
In diesem Beispiel werden Get-Alias und Get-Command mit dem Cmdlet Out-File verwendet, um zwei Textdateien im aktuellen Verzeichnis zu erstellen, Alias.txt und Command.txt.
Select-String verwendet den parameter Path mit dem Sternchen (*) zum Durchsuchen aller Dateien im aktuellen Verzeichnis mit der Dateinamenerweiterung .txt. Der Parameter Pattern gibt den Text an, der Get-übereinstimmen soll.
Select-String zeigt die Ausgabe in der PowerShell-Konsole an. Der Dateiname und die Zeilennummer stellen vor jeder Inhaltszeile, die eine Übereinstimmung für den Parameter Pattern enthält.
Beispiel 3: Suchen einer Mustervergleichung
In diesem Beispiel werden mehrere Dateien durchsucht, um Übereinstimmungen für das angegebene Muster zu finden. Das Muster verwendet einen Quantifizierer für reguläre Ausdrücke. (Weitere Informationen finden Sie unter 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
Das cmdlet Select-String verwendet zwei Parameter, Path und Pattern. Der parameter Path verwendet die Variable $PSHOME, die das PowerShell-Verzeichnis angibt. Der Rest des Pfads enthält das Unterverzeichnis en-US und gibt jede *.txt Datei im Verzeichnis an. Der parameter Pattern gibt an, dass er mit einem Fragezeichen (?) in jeder Datei übereinstimmt. Ein umgekehrter Schrägstrich (\) wird als Escapezeichen verwendet und ist erforderlich, da das Fragezeichen (?) ein regulärer Ausdrucks-Quantifizierer ist.
Select-String zeigt die Ausgabe in der PowerShell-Konsole an. Der Dateiname und die Zeilennummer stellen vor jeder Inhaltszeile, die eine Übereinstimmung für den Parameter Pattern enthält.
Beispiel 4: Verwenden von Select-String in einer Funktion
In diesem Beispiel wird eine Funktion zum Suchen nach einem Muster in den PowerShell-Hilfedateien erstellt. In diesem Beispiel ist die Funktion nur in der PowerShell-Sitzung vorhanden. Wenn die PowerShell-Sitzung geschlossen wird, wird die Funktion gelöscht. Weitere Informationen finden Sie unter 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
Die Funktion wird in der PowerShell-Befehlszeile erstellt. Das schlüsselwort function verwendet den Namen Search-Help. Drücken Sie EINGABETASTE, um mit dem Hinzufügen von Anweisungen zur Funktion zu beginnen. Fügen Sie in der Eingabeaufforderung >> jede Anweisung hinzu, und drücken Sie eingabetaste wie im Beispiel gezeigt. Nachdem die schließende Klammer hinzugefügt wurde, kehren Sie zu einer PowerShell-Eingabeaufforderung zurück.
Die Funktion enthält zwei Befehle. Die $PSHelp Variable speichert den Pfad zu den PowerShell-Hilfedateien.
$PSHOME ist das PowerShell-Installationsverzeichnis mit dem Unterverzeichnis en-US, das jede *.txt Datei im Verzeichnis angibt.
Der befehl Select-String in der Funktion verwendet die Parameter Path und Pattern. Der parameter Path verwendet die $PSHelp Variable, um den Pfad abzurufen. Der parameter Pattern verwendet die Zeichenfolge About_ als Suchkriterien.
Geben Sie Search-Helpein, um die Funktion auszuführen. Der Select-String-Befehl der Funktion zeigt die Ausgabe in der PowerShell-Konsole an.
Beispiel 5: Suchen nach einer Zeichenfolge in einem Windows-Ereignisprotokoll
In diesem Beispiel wird in einem Windows-Ereignisprotokoll nach einer Zeichenfolge gesucht. Die Variable $_ stellt das aktuelle Objekt in der Pipeline dar. Weitere Informationen finden Sie unter about_Automatic_Variables.
$Events = Get-WinEvent -LogName Application -MaxEvents 50
$Events | Select-String -InputObject {$_.Message} -Pattern 'Failed'
Das cmdlet Get-WinEvent verwendet den parameter LogName, um das Anwendungsprotokoll anzugeben. Der MaxEvents Parameter ruft die 50 neuesten Ereignisse aus dem Protokoll ab. Der Protokollinhalt wird in der Variablen mit dem Namen $Eventsgespeichert.
Die variable $Events wird an das Cmdlet Select-String weitergeleitet.
Select-String verwendet den Parameter InputObject. Die $_ Variable stellt das aktuelle Objekt dar, und Message ist eine Eigenschaft des Ereignisses. Der parameter Pattern gibt die Zeichenfolge Failed an und sucht in $_.Messagenach Übereinstimmungen.
Select-String zeigt die Ausgabe in der PowerShell-Konsole an.
Beispiel 6: Suchen einer Zeichenfolge in Unterverzeichnissen
In diesem Beispiel wird ein Verzeichnis und alle unterverzeichnisse nach einer bestimmten Textzeichenfolge durchsucht.
Get-ChildItem -Path C:\Windows\System32\*.txt -Recurse |
Select-String -Pattern 'Microsoft' -CaseSensitive
Get-ChildItem verwendet den parameter Path, um C:\Windows\System32*.txtanzugeben. Der parameter Recurse enthält die Unterverzeichnisse. Die Objekte werden durch die Pipeline zu Select-Stringgesendet.
Select-String verwendet den Parameter Pattern und gibt die Zeichenfolge Microsoftan. Der parameter CaseSensitive wird verwendet, um die genaue Groß-/Kleinschreibung der Zeichenfolge abzugleichen.
Select-String zeigt die Ausgabe in der PowerShell-Konsole an.
Hinweis
Abhängig von Ihren Berechtigungen wird möglicherweise Access Nachrichten in der Ausgabe verweigert.
Beispiel 7: Suchen nach Zeichenfolgen, die nicht mit einem Muster übereinstimmen
In diesem Beispiel wird gezeigt, wie Zeilen mit Daten ausgeschlossen werden, die nicht mit einem Muster übereinstimmen.
Get-Command | Out-File -FilePath .\Command.txt
Select-String -Path .\Command.txt -Pattern 'Get', 'Set' -NotMatch
Das Cmdlet Get-Command sendet Objekte an die Out-File, um die Command.txt Datei im aktuellen Verzeichnis zu erstellen.
Select-String verwendet den parameter Path, um die Command.txt Datei anzugeben. Der parameter Pattern gibt Get und Set als Suchmuster an. Der parameter NotMatch schließt Get und Set aus den Ergebnissen aus.
Select-String zeigt die Ausgabe in der PowerShell-Konsole an, die nicht Get oder Setenthält.
Beispiel 8: Suchen von Zeilen vor und nach einer Übereinstimmung
In diesem Beispiel wird gezeigt, wie Die Linien vor und nach dem übereinstimmenden Muster abgerufen werden.
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
Das Cmdlet Get-Command sendet Objekte an die Out-File, um die Command.txt Datei im aktuellen Verzeichnis zu erstellen.
Select-String verwendet den parameter Path, um die Command.txt Datei anzugeben. Der parameter Pattern gibt Get-Computer als Suchmuster an. Der Context-Parameter verwendet zwei Werte vor und nachher und markiert Mustervergleiche in der Ausgabe mit einer winkeligen Klammer (>). Der Context Parameter gibt die beiden Zeilen vor der ersten Mustervergleichsvergleichung und drei Zeilen nach der letzten Mustervergleich aus.
Beispiel 9: Suchen aller Mustervergleiche
In diesem Beispiel wird gezeigt, wie der AllMatches Parameter jede Musterübereinstimmung in einer Textzeile findet. Standardmäßig findet Select-String nur das erste Vorkommen eines Musters in einer Textzeile. In diesem Beispiel werden Objekteigenschaften verwendet, die mit dem Cmdlet Get-Member gefunden werden.
$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
Das cmdlet Get-ChildItem verwendet den Parameter Path. Der parameter Path verwendet die Variable $PSHOME, die das PowerShell-Verzeichnis angibt. Der Rest des Pfads enthält das Unterverzeichnis en-US und gibt jede *.txt Datei im Verzeichnis an. Die Get-ChildItem Objekte werden in der variablen $A gespeichert. Die variable $A wird an das Cmdlet Select-String weitergeleitet.
Select-String verwendet den Parameter Pattern, um jede Datei nach der Zeichenfolge PowerShell-zu durchsuchen.
Über die PowerShell-Befehlszeile werden die $A Variableninhalte angezeigt. Es gibt eine Zeile, die zwei Vorkommen der Zeichenfolge PowerShell-enthält.
Die $A.Matches-Eigenschaft listet das erste Vorkommen des Musters PowerShell- in jeder Zeile auf.
Die $A.Matches.Length-Eigenschaft zählt das erste Vorkommen des Musters PowerShell- in jeder Zeile.
Die $B Variable verwendet dieselben Get-ChildItem und Select-String Cmdlets, fügt jedoch den AllMatches Parameter hinzu.
AllMatches findet jedes Vorkommen des Musters PowerShell- in jeder Zeile. Die in der $A und $B Variablen gespeicherten Objekte sind identisch.
Die $B.Matches.Length-Eigenschaft steigt, da für jede Zeile jedes Vorkommen des Musters PowerShell- gezählt wird.
Beispiel 10 : Konvertieren von Pipelineobjekten in Zeichenfolgen mithilfe von "Out-String"
Das ToString() Ergebnis des piped-Objekts ist nicht die gleiche umfangreiche Zeichenfolgendarstellung, die vom Formatierungssystem von PowerShell erzeugt wird. Daher müssen Sie die Objekte möglicherweise zuerst an Out-String pfeifen.
Durch das Anfügen an Out-String wird die formatierte Ausgabe in ein einzelnes mehrzeiliges Zeichenfolgenobjekt konvertiert. Dies bedeutet, dass, wenn Select-String eine Übereinstimmung findet, die die gesamte mehrteilige Zeichenfolge ausgibt.
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
Durch das Anfügen an Out-String -Stream wird die formatierte Ausgabe in mehrere einzeilige Zeichenfolgenobjekte konvertiert. Dies bedeutet, dass, wenn Select-String eine Übereinstimmung findet, nur die entsprechende Zeile ausgibt.
Parameter
-AllMatches
Gibt an, dass das Cmdlet nach mehr als einer Übereinstimmung in jeder Textzeile sucht. Ohne diesen Parameter findet Select-String nur die erste Übereinstimmung in jeder Textzeile.
Wenn Select-String mehrere Übereinstimmungen in einer Textzeile findet, gibt sie immer noch nur ein MatchInfo-objekt für die Zeile aus, aber die Matches-Eigenschaft des Objekts enthält alle Übereinstimmungen.
Hinweis
Dieser Parameter wird ignoriert, wenn er in Kombination mit dem parameter SimpleMatch verwendet wird. Wenn Sie alle Übereinstimmungen zurückgeben möchten und das Muster, nach dem Sie suchen, reguläre Ausdruckszeichen enthält, müssen Sie diese Zeichen escapeen, anstatt SimpleMatch-zu verwenden. Weitere Informationen zum Escapen regulärer Ausdrücke finden Sie unter about_Regular_Expressions.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-CaseSensitive
Gibt an, dass bei den Cmdlet-Übereinstimmungen die Groß-/Kleinschreibung beachtet wird. Standardmäßig wird bei Übereinstimmungen die Groß-/Kleinschreibung nicht beachtet.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Context
Erfasst die angegebene Anzahl von Zeilen vor und nach der Zeile, die dem Muster entspricht.
Wenn Sie eine Zahl als Wert dieses Parameters eingeben, bestimmt diese Zahl die Anzahl der Zeilen, die vor und nach der Übereinstimmung erfasst wurden. Wenn Sie zwei Zahlen als Wert eingeben, bestimmt die erste Zahl die Anzahl der Zeilen vor der Übereinstimmung, und die zweite Zahl bestimmt die Anzahl der Zeilen nach der Übereinstimmung. Beispiel: -Context 2,3.
In der Standardanzeige werden Linien mit einer Übereinstimmung durch eine rechte winkelige Klammer (>) (ASCII 62) in der ersten Spalte der Anzeige angegeben. Nichtmarkierte Zeilen sind der Kontext.
Der parameter Context ändert nicht die Anzahl der von Select-Stringgenerierten Objekte.
Select-String generiert für jede Übereinstimmung ein MatchInfo-objekt. Der Kontext wird als Array von Zeichenfolgen in der Context -Eigenschaft des Objekts gespeichert.
Wenn die Ausgabe eines Select-String Befehls an einen anderen Select-String Befehl gesendet wird, durchsucht der empfangende Befehl nur den Text in der übereinstimmenden Zeile. Die übereinstimmende Zeile ist der Wert der Line-Eigenschaft des MatchInfo-Objekts, nicht des Texts in den Kontextzeilen. Daher ist der parameter Context für den empfangenden Select-String-Befehl nicht gültig.
Wenn der Kontext eine Übereinstimmung enthält, enthält das MatchInfo -Objekt für jede Übereinstimmung alle Kontextzeilen, aber die überlappenden Linien werden nur einmal in der Anzeige angezeigt.
Parametereigenschaften
| Typ: | Int32[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Culture
Gibt einen Kulturnamen an, der dem angegebenen Muster entspricht. Der parameter Culture muss mit dem parameter SimpleMatch verwendet werden. Das Standardverhalten verwendet die Kultur des aktuellen PowerShell-Runspace (Sitzung).
Verwenden Sie Get-Culture -ListAvailable Befehl, um eine Liste aller unterstützten Kulturen abzurufen.
Darüber hinaus akzeptiert dieser Parameter die folgenden Argumente:
- CurrentCulture, das ist Standard;
- Ordinal, das ist ein nicht-sprachlicher binärer Vergleich;
- Invariante, das ist kulturunabhängiger Vergleich.
Mit Select-String -Culture Ordinal -CaseSensitive -SimpleMatch Befehl erhalten Sie den schnellsten binären Vergleich.
Der parameter Culture verwendet den Tabstoppabschluss, um durch die Liste der Argumente zu scrollen, die die verfügbaren Kulturen angeben. Verwenden Sie den folgenden Befehl, um alle verfügbaren Argumente auflisten zu können:
(Get-Command Select-String).Parameters.Culture.Attributes.ValidValues
Weitere Informationen zur .NET-CultureInfo.Name-Eigenschaft finden Sie unter CultureInfo.Name.
Der parameter Culture wurde in PowerShell 7 eingeführt.
Parametereigenschaften
| Typ: | String |
| Standardwert: | Culture of the current PowerShell session |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Encoding
Gibt den Typ der Codierung für die Zieldatei an. Der Standardwert ist utf8NoBOM.
Die zulässigen Werte für diesen Parameter sind wie folgt:
-
ascii: Verwendet die Codierung für den ASCII-Zeichensatz (7-Bit). -
ansi: Verwendet die Kodierung für die ANSI-Codepage der aktuellen Kultur. Diese Option wurde in PowerShell 7.4 hinzugefügt. -
bigendianunicode: Codiert im UTF-16-Format mithilfe der Big-Endian-Byte-Reihenfolge. -
bigendianutf32: Codiert im UTF-32-Format unter Verwendung der Big-Endian-Byte-Reihenfolge. -
oem: Verwendet die Standardcodierung für MS-DOS- und Konsolenprogramme. -
unicode: Codiert im UTF-16-Format unter Verwendung der "little-endian"-Bytereihenfolge. -
utf7: Codiert im UTF-7-Format. -
utf8: Codiert im UTF-8-Format. -
utf8BOM: Codiert im UTF-8-Format mit Byte Order Mark (BOM) -
utf8NoBOM: Codiert im UTF-8-Format ohne Byte Order Mark (BOM) -
utf32: Codiert im UTF-32-Format.
Ab PowerShell 6.2 ermöglicht der parameter Encoding auch numerische IDs registrierter Codeseiten (z. B. -Encoding 1251) oder Zeichenfolgennamen registrierter Codeseiten (z. B. -Encoding "windows-1251"). Weitere Informationen finden Sie in der .NET-Dokumentation für Encoding.CodePage-.
Ab PowerShell 7.4 können Sie den Ansi Wert für den parameter Encoding verwenden, um die numerische ID für die ANSI-Codeseite der aktuellen Kultur zu übergeben, ohne sie manuell angeben zu müssen.
Hinweis
Die Verwendung von UTF-7* wird nicht mehr empfohlen. Ab PowerShell 7.1 wird eine Warnung geschrieben, wenn Sie utf7 für den parameter Encoding angeben.
Parametereigenschaften
| Typ: | Encoding |
| Standardwert: | UTF8NoBOM |
| Zulässige Werte: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Exclude
Schließen Sie die angegebenen Elemente aus. Der Wert dieses Parameters qualifiziert den parameter Path. Geben Sie ein Pfadelement oder Muster ein, z. B. *.txt. Wildcards sind zulässig.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | True |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Include
Enthält die angegebenen Elemente. Der Wert dieses Parameters qualifiziert den parameter Path. Geben Sie ein Pfadelement oder Muster ein, z. B. *.txt. Wildcards sind zulässig.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | True |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-InputObject
Gibt den zu durchsuchenden Text an. Geben Sie eine Variable ein, die den Text enthält, oder geben Sie einen Befehl oder Ausdruck ein, der den Text abruft.
Die Verwendung des parameters InputObject ist nicht mit dem Senden von Zeichenfolgen in der Pipeline an Select-Stringidentisch.
Wenn Sie mehrere Zeichenfolgen an das Cmdlet Select-String weiterleiten, wird in jeder Zeichenfolge nach dem angegebenen Text gesucht und jede Zeichenfolge zurückgegeben, die den Suchtext enthält.
Wenn Sie den parameter InputObject verwenden, um eine Sammlung von Zeichenfolgen zu senden, behandelt Select-String die Auflistung als einzelne kombinierte Zeichenfolge.
Select-String gibt die Zeichenfolgen als Einheit zurück, wenn der Suchtext in einer beliebigen Zeichenfolge gefunden wird.
FileInfo- Objekte werden als Pfad zu einer Datei behandelt. Wenn Dateipfade angegeben werden, durchsucht Select-String den Inhalt der Datei, nicht die ToString() Darstellung des Objekts.
Parametereigenschaften
| Typ: | PSObject |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
Object
| Position: | Named |
| Obligatorisch.: | True |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
ObjectRaw
| Position: | Named |
| Obligatorisch.: | True |
| Wert aus Pipeline: | True |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-List
Nur die erste Instanz des übereinstimmenden Texts wird von jeder Eingabedatei zurückgegeben. Dies ist die effizienteste Methode zum Abrufen einer Liste von Dateien mit Inhalten, die dem regulären Ausdruck entsprechen.
Standardmäßig gibt Select-String ein MatchInfo-objekt für jede gefundene Übereinstimmung zurück.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-LiteralPath
Gibt den Pfad zu den zu durchsuchenden Dateien an. Der Wert des LiteralPath--Parameters wird genau so verwendet, wie er eingegeben wird. Es werden keine Zeichen als Wildcards interpretiert. Wenn der Pfad Escapezeichen enthält, müssen Sie ihn in einfache Anführungszeichen einschließen. Einfache Anführungszeichen signalisieren PowerShell, dass keine Zeichen als Escapesequenzen interpretiert werden sollen. Weitere Informationen finden Sie unter über_Zitierregeln.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | PSPath, EP |
Parametersätze
LiteralFileRaw
| Position: | Named |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
LiteralFile
| Position: | Named |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
-NoEmphasis
Standardmäßig hebt Select-String die Zeichenfolge hervor, die dem Muster entspricht, nach dem Sie mit dem parameter Pattern gesucht haben. Der NoEmphasis- Parameter deaktiviert die Hervorhebung.
Die Hervorhebung verwendet negative Farben basierend auf Ihren PowerShell-Hintergrund- und Textfarben. Wenn Ihre PowerShell-Farben z. B. ein schwarzer Hintergrund mit weißem Text sind. Die Betonung ist ein weißer Hintergrund mit schwarzem Text.
Dieser Parameter wurde in PowerShell 7 eingeführt.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-NotMatch
Der NotMatch Parameter findet Text, der nicht mit dem angegebenen Muster übereinstimmt.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Path
Gibt den Pfad zu den zu durchsuchenden Dateien an. Wildcards sind zulässig. Der Standardspeicherort ist das lokale Verzeichnis.
Geben Sie Dateien im Verzeichnis an, z. B. log1.txt, *.docoder *.*. Wenn Sie nur ein Verzeichnis angeben, schlägt der Befehl fehl.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | Local directory |
| Unterstützt Platzhalter: | True |
| Nicht anzeigen: | False |
Parametersätze
File
| Position: | 1 |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
FileRaw
| Position: | 1 |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
-Pattern
Gibt den Text an, der in jeder Zeile gesucht werden soll. Der Musterwert wird als regulärer Ausdruck behandelt.
Informationen zu regulären Ausdrücken finden Sie unter about_Regular_Expressions.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | 0 |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Quiet
Gibt an, dass das Cmdlet eine einfache Antwort anstelle eines MatchInfo--Objekts zurückgibt. Der zurückgegebene Wert wird $true, wenn das Muster gefunden oder $null, wenn das Muster nicht gefunden wird.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
File
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
Object
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
LiteralFile
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-Raw
Bewirkt, dass das Cmdlet nur die übereinstimmenden Zeichenfolgen ausgibt, anstatt MatchInfo--Objekte. Dieses Verhalten ähnelt den Unix- oder Windows-Befehlen grepfindstr.exe am ehesten.
Dieser Parameter wurde in PowerShell 7 eingeführt.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
ObjectRaw
| Position: | Named |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
FileRaw
| Position: | Named |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
LiteralFileRaw
| Position: | Named |
| Obligatorisch.: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-SimpleMatch
Gibt an, dass das Cmdlet eine einfache Übereinstimmung anstelle einer Übereinstimmung mit regulären Ausdrücken verwendet. In einer einfachen Übereinstimmung durchsucht Select-String die Eingabe nach dem Text im Parameter Pattern. Der Wert des Pattern-Parameters wird nicht als reguläre Ausdrucksanweisung interpretiert.
Wenn SimpleMatch- verwendet wird, ist die Match-Eigenschaft des zurückgegebenen MatchInfo-Objekts leer.
Hinweis
Wenn dieser Parameter mit dem parameter AllMatches verwendet wird, wird die AllMatches- ignoriert.
Parametereigenschaften
| Typ: | SwitchParameter |
| Standardwert: | False |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch.: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
PSObject
Sie können jedes Objekt, das über eine ToString() Methode verfügt, an dieses Cmdlet weiterleiten.
Ausgaben
MatchInfo
Standardmäßig gibt dieses Cmdlet ein MatchInfo-objekt für jede gefundene Übereinstimmung zurück.
Boolean
Wenn Sie den Parameter Quiet verwenden, gibt dieses Cmdlet einen booleschen Wert zurück, der angibt, ob das Muster gefunden wurde.
String
Wenn Sie den Parameter "Raw" verwenden, gibt dieses Cmdlet einen Satz von String- Objekten zurück, die dem Muster entsprechen.
Hinweise
PowerShell enthält die folgenden Aliase für Select-String:
- Alle Plattformen:
sls
Select-String ähnelt grep in Unix oder findstr.exe in Windows.
Der sls Alias für das Cmdlet Select-String wurde in PowerShell 3.0 eingeführt.
Hinweis
Laut genehmigten Verben für PowerShell-Befehleist das offizielle Aliaspräfix für Select-* Cmdlets sc, nicht sl. Daher sollte der richtige Alias für Select-Stringscsund nicht slssein. Dies ist eine Ausnahme von dieser Regel.
Beim Anfügen von Objekten an Select-String:
-
FileInfo- Objekte werden als Pfad zu einer Datei behandelt. Wenn Dateipfade angegeben werden, durchsucht
Select-Stringden Inhalt der Datei, nicht dieToString()Darstellung des Objekts. - Das
ToString()Ergebnis des piped-Objekts ist nicht die gleiche umfangreiche Zeichenfolgendarstellung, die vom Formatierungssystem von PowerShell erzeugt wird. Daher müssen Sie die Objekte möglicherweise zuerst anOut-Stringpfeifen. Weitere Informationen finden Sie unter Beispiel 10.
Wenn Sie Select-Stringverwenden möchten, geben Sie den Text ein, den Sie als Wert des parameters Pattern suchen möchten. Verwenden Sie die folgenden Kriterien, um den zu durchsuchenden Text anzugeben:
- Geben Sie den Text in eine an zitierte Zeichenfolge ein, und übergeben Sie ihn dann an
Select-String. - Speichern Sie eine Textzeichenfolge in einer Variablen, und geben Sie dann die Variable als Wert des InputObject--Parameters an.
- Wenn der Text in Dateien gespeichert ist, verwenden Sie den parameter Path, um den Pfad zu den Dateien anzugeben.
Standardmäßig interpretiert Select-String den Wert des Pattern-Parameters als regulären Ausdruck. (Weitere Informationen finden Sie unter about_Regular_Expressions. Sie können den SimpleMatch Parameter verwenden, um den Übereinstimmungsabgleich mit regulären Ausdrücken außer Kraft zu setzen. Der parameter SimpleMatch findet Instanzen des Werts des Pattern-Parameters in der Eingabe.
Die Standardausgabe von Select-String ist ein MatchInfo-Objekt, das detaillierte Informationen zu den Übereinstimmungen enthält. Die Informationen im Objekt sind nützlich, wenn Sie nach Text in Dateien suchen, da MatchInfo- objekte Eigenschaften wie Filename und Lineaufweisen. Wenn die Eingabe nicht aus der Datei stammt, wird der Wert dieser Parameter InputStream-.
Wenn Sie die Informationen im MatchInfo--Objekt nicht benötigen, verwenden Sie den Parameter Quiet. Der Quiet-Parameter gibt einen booleschen Wert (True oder False) zurück, um anzugeben, ob eine Übereinstimmung gefunden wurde, anstelle eines MatchInfo-Objekts.
Beim Abgleichen von Ausdrücken verwendet Select-String die aktuelle Kultur, die für das System festgelegt ist. Verwenden Sie das Cmdlet Get-Culture, um die aktuelle Kultur zu finden.
Geben Sie den folgenden Befehl ein, um die Eigenschaften eines MatchInfo--Objekts zu finden:
Select-String -Path test.txt -Pattern 'test' | Get-Member | Format-List -Property *