Freigeben über


Select-String

Sucht nach Text in Dateien und Zeichenfolgen.

Syntax

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

Beschreibung

Das Select-String Cmdlet verwendet den regulären Ausdrucksabgleich, um in Eingabezeichenfolgen und Dateien nach Textmustern zu suchen. Sie können ähnlich wie grep in UNIX oder findstr.exe in Windows verwendenSelect-String.

Select-String basiert auf Textzeilen. Sucht standardmäßig 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, der die Übereinstimmung enthält. Sie können direkt Select-String nach mehreren Übereinstimmungen pro Zeile suchen, Text vor und nach der Übereinstimmung anzeigen oder einen booleschen Wert (True oder False) anzeigen, der angibt, ob eine Übereinstimmung gefunden wird.

Select-String kann alle Textausstimmungen anzeigen oder nach der ersten Übereinstimmung in jeder Eingabedatei anhalten. Select-String kann 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 erwartet werden soll, 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 Select-String Cmdlet gesendet wurde.

'Hello', 'HELLO' | Select-String -Pattern 'HELLO' -CaseSensitive -SimpleMatch

Die Textzeichenfolgen Hello und HELLO werden an das Select-String Cmdlet gesendet. Select-Stringverwendet 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-Stringzeigt HELLO in der PowerShell-Konsole an.

Beispiel 2: Suchen von Übereinstimmungen in Textdateien

Mit diesem Befehl werden alle Dateien mit der .txt Dateinamenerweiterung 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 Get-Alias und mit dem Out-File Cmdlet werden zwei Textdateien im aktuellen Verzeichnis erstellt, Alias.txt und Command.txtGet-Command.

Select-String verwendet den Path-Parameter mit dem Sternchen (*) zum Durchsuchen aller Dateien im aktuellen Verzeichnis mit der Dateinamenerweiterung .txt. Der Parameter Pattern gibt den Text an, der mit "Get-" übereinstimmt. 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 Select-String Cmdlet verwendet zwei Parameter, Path und Pattern. Der Path-Parameter 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. Der Function Befehl verwendet den Namen Search-Help. Drücken Sie die 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 die 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 Select-String Befehl in der Funktion verwendet die Parameter "Path " und "Pattern ". Der Path-Parameter verwendet die $PSHelp Variable, um den Pfad abzurufen. Der Parameter Pattern verwendet die Zeichenfolge About_ als Suchkriterien.

Geben Sie Search-Helpzum Ausführen der Funktion ein. Der Befehl der Funktion Select-String 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 Get-WinEvent Cmdlet verwendet den Parameter LogName , um das Anwendungsprotokoll anzugeben. Der Parameter "MaxEvents " ruft die 50 neuesten Ereignisse aus dem Protokoll ab. Der Protokollinhalt wird in der Variablen mit dem Namen $Eventsgespeichert.

Die $Events Variable wird an das Select-String Cmdlet gesendet. Select-String verwendet den InputObject-Parameter . Die $_ Variable stellt das aktuelle Objekt dar und message ist eine Eigenschaft des Ereignisses. Der Parameter Pattern gibt die Zeichenfolge failed an und sucht nach Übereinstimmungen in $_.message. 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-ChildItemverwendet den Path-Parameter, um C:\Windows\System32*.txt anzugeben. Der Recurse-Parameter enthält die Unterverzeichnisse. Die Objekte werden an die Pipeline gesendet.Select-String

Select-String verwendet den Parameter Pattern und gibt die Zeichenfolge Microsoft an. Der Parameter CaseSensitive wird verwendet, um mit der genauen Groß-/Kleinschreibung der Zeichenfolge übereinzugleichen. Select-String zeigt die Ausgabe in der PowerShell-Konsole an.

Hinweis

Abhängig von Ihren Berechtigungen wird möglicherweise "Zugriff verweigerte Nachrichten" in der Ausgabe angezeigt.

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 Get-Command Cmdlet sendet Objekte an die Out-File Pipeline, um die Command.txt Datei im aktuellen Verzeichnis zu erstellen. Select-String verwendet den Path-Parameter , 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-Stringzeigt die Ausgabe in der PowerShell-Konsole an, die nicht "Get" oder "Set" enthä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 Get-Command Cmdlet sendet Objekte an die Out-File Pipeline, um die Command.txt Datei im aktuellen Verzeichnis zu erstellen. Select-String verwendet den Path-Parameter , um die Command.txt Datei anzugeben. Der Parameter Pattern gibt als Suchmuster an Get-Computer . 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 Mustervergleichung und drei Zeilen nach der letzten Musterausstimmung aus.

Beispiel 9: Suchen aller Mustervergleiche

In diesem Beispiel wird gezeigt, wie der Parameter "AllMatches " jede Musterübereinstimmung in einer Textzeile findet. Standardmäßig Select-String wird nur das erste Vorkommen eines Musters in einer Textzeile gefunden. In diesem Beispiel werden Objekteigenschaften verwendet, die mit dem Get-Member Cmdlet 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 Get-ChildItem Cmdlet verwendet den Path-Parameter . Der Path-Parameter 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 $A Variablen gespeichert. Die $A Variable wird an das Select-String Cmdlet gesendet. 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 den $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 weitergeleiteten Objekts ist nicht die gleiche umfangreiche Zeichenfolgendarstellung, die vom Formatierungssystem von PowerShell erzeugt wird. Daher müssen Sie die Objekte Out-String möglicherweise zuerst anweisen.

Mit der Piping wird Out-String die formatierte Ausgabe in ein einzelnes mehrzeiliges Zeichenfolgenobjekt konvertiert. Dies bedeutet, dass beim Select-String Suchen einer Übereinstimmung die gesamte mehrteilige Zeichenfolge ausgegeben wird.

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

Mit der Piping wird Out-String -Stream die formatierte Ausgabe in mehrere einzeilige Zeichenfolgenobjekte konvertiert. Dies bedeutet, dass beim Select-String Finden einer Übereinstimmung nur die entsprechende Zeile ausgegeben wird.

Parameter

-AllMatches

Gibt an, dass das Cmdlet nach mehr als einer Übereinstimmung in jeder Textzeile sucht. Ohne diesen Parameter Select-String wird nur die erste Übereinstimmung in jeder Textzeile gefunden.

Wenn Select-String mehrere Übereinstimmungen in einer Textzeile gefunden werden, 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 SimpleMatch-Parameter 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 escapen, anstatt SimpleMatch zu verwenden. Weitere Informationen zum Entfernen regulärer Ausdrücke finden Sie unter about_Regular_Expressions .

Typ:SwitchParameter
Position:Named
Standardwert:False
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-CaseSensitive

Gibt an, dass bei den Cmdlet-Übereinstimmungen die Groß-/Kleinschreibung beachtet wird. Standardmäßig wird bei Übereinstimmungen die Groß-/Kleinschreibung nicht beachtet.

Typ:SwitchParameter
Position:Named
Standardwert:False
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren: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 vor und nach der Übereinstimmung erfassten Zeilen. Wenn Sie zwei Zahlen als Wert eingeben, bestimmt die erste Zahl die Anzahl der Zeilen vor der Übereinstimmung und die zweite Zahl 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. Nicht gekennzeichnete Zeilen stehen für Kontext.

Der Context-Parameter ändert nicht die Anzahl der von Select-String. Select-String generiert ein MatchInfo -Objekt für jede Übereinstimmung. 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 der Text in den Kontextzeilen. Daher ist der Context-Parameter 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.

Typ:Int32[]
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren: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 dem 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.

Typ:String
Position:Named
Standardwert:Culture of the current PowerShell session
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren: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 Codierung für die ANSI-Codeseite der aktuellen Kultur. Diese Option wurde in PowerShell 7.4 hinzugefügt.
  • bigendianunicode: Codiert im UTF-16-Format mit der Big-End-Byte-Reihenfolge.
  • bigendianutf32: Codiert im UTF-32-Format mithilfe der Big-End-Byte-Reihenfolge.
  • oem: Verwendet die Standardcodierung für MS-DOS- und Konsolenprogramme.
  • unicode: Codiert im UTF-16-Format mithilfe der Little-Endian-Bytereihenfolge.
  • utf7: Codiert im UTF-7-Format.
  • utf8: Codiert im UTF-8-Format.
  • utf8BOM: Codiert im UTF-8-Format mit Bytereihenfolgezeichen (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 Encoding-Parameter auch numerische IDs registrierter Codeseiten (z -Encoding 1251. B. ) oder Zeichenfolgennamen registrierter Codeseiten (z -Encoding "windows-1251". B. ). 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 Codierungsparameter verwenden, um die numerische ID für die ANSI-Codeseite der aktuellen Kultur zu übergeben, ohne sie manuell angeben zu müssen.

Hinweis

UTF-7* wird nicht mehr empfohlen, zu verwenden. Ab PowerShell 7.1 wird eine Warnung geschrieben, wenn Sie für den Codierungsparameter angebenutf7.

Typ:Encoding
Zulässige Werte:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Standardwert:UTF8NoBOM
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Exclude

Schließen Sie die angegebenen Elemente aus. Der Wert dieses Parameters qualifiziert den Path-Parameter . Geben Sie ein Pfadelement oder Einmuster ein, z *.txt. B. . Platzhalter sind zulässig.

Typ:String[]
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:True

-Include

Schließt die angegebenen Elemente ein. Der Wert dieses Parameters qualifiziert den Path-Parameter . Geben Sie ein Pfadelement oder Einmuster ein, z *.txt. B. . Platzhalter sind zulässig.

Typ:String[]
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:True

-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 InputObject-Parameters entspricht nicht dem Senden von Zeichenfolgen nach unten an Select-Stringdie Pipeline.

Wenn Sie mehrere Zeichenfolgen an das Select-String Cmdlet weiterleiten, wird in jeder Zeichenfolge nach dem angegebenen Text gesucht und jede Zeichenfolge zurückgegeben, die den Suchtext enthält.

Wenn Sie den InputObject-Parameter zum Übermitteln einer Sammlung von Zeichenfolgen verwenden, Select-String wird die Auflistung als einzelne kombinierte Zeichenfolge behandelt. 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, Select-String durchsucht sie den Inhalt der Datei, nicht die ToString() Darstellung des Objekts.

Typ:PSObject
Position:Named
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren: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.

Gibt standardmäßig Select-String ein MatchInfo-Objekt für jede gefundene Übereinstimmung zurück.

Typ:SwitchParameter
Position:Named
Standardwert:False
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-LiteralPath

Gibt den Pfad zu den Dateien an, die durchsucht werden sollen. Der Wert des LiteralPath-Parameters wird genau so verwendet, wie er eingegeben wird. Es werden keine Zeichen als Platzhalter interpretiert. Wenn der Pfad Escapezeichen enthält, müssen Sie ihn in einfache Anführungszeichen einschließen. Einfache Anführungszeichen weisen PowerShell an, keine Zeichen als Escapesequenzen zu interpretieren. Weitere Informationen finden Sie unter about_Quoting_Rules.

Typ:String[]
Aliase:PSPath, LP
Position:Named
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:False

-NoEmphasis

Hebt standardmäßig die Zeichenfolge hervor, die dem Muster entspricht, Select-String nach dem Sie mit dem Parameter "Pattern" gesucht haben. Der Parameter NoEmphasis 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.

Typ:SwitchParameter
Position:Named
Standardwert:False
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-NotMatch

Der Parameter NotMatch findet Text, der nicht mit dem angegebenen Muster übereinstimmt.

Typ:SwitchParameter
Position:Named
Standardwert:False
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Path

Gibt den Pfad zu den zu durchsuchenden Dateien an. Platzhalter sind zulässig. Der Standardspeicherort ist das lokale Verzeichnis.

Geben Sie Dateien im Verzeichnis an, z log1.txt. B. , , *.docoder *.*. Wenn Sie nur das Verzeichnis angeben, führt der Befehl zu einem Fehler.

Typ:String[]
Position:1
Standardwert:Local directory
Erforderlich:True
Pipelineeingabe akzeptieren:True
Platzhalterzeichen akzeptieren:True

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

Typ:String[]
Position:0
Standardwert:None
Erforderlich:True
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Quiet

Gibt an, dass das Cmdlet eine einfache Antwort anstelle eines MatchInfo-Objekts zurückgibt. Der zurückgegebene Wert ist $true , wenn das Muster gefunden wird oder $null das Muster nicht gefunden wird.

Typ:SwitchParameter
Position:Named
Standardwert:False
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Raw

Bewirkt, dass das Cmdlet nur die übereinstimmenden Zeichenfolgen und nicht MatchInfo-Objekte ausgibt. Dies ist das Ergebnis des Verhaltens, das den Unix grep - oder Windows findstr.exe-Befehlen am ehesten ähnelt.

Dieser Parameter wurde in PowerShell 7 eingeführt.

Typ:SwitchParameter
Position:Named
Standardwert:False
Erforderlich:True
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-SimpleMatch

Gibt an, dass das Cmdlet eine einfache Übereinstimmung anstelle einer Übereinstimmung mit regulären Ausdrücken verwendet. Sucht in einer einfachen Übereinstimmung Select-String nach dem Text im Parameter "Pattern ". Der Wert des Pattern-Parameters wird nicht als reguläre Ausdrucksanweisung interpretiert.

Wenn "SimpleMatch" verwendet wird, ist die MatchInfo-Eigenschaft des zurückgegebenen MatchInfo-Objekts leer.

Hinweis

Wenn dieser Parameter mit dem Parameter AllMatches verwendet wird, wird allMatches ignoriert.

Typ:SwitchParameter
Position:Named
Standardwert:False
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

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 Raw-Parameter verwenden, gibt dieses Cmdlet einen Satz von String-Objekten zurück, die mit dem Muster übereinstimmen.

Hinweise

PowerShell enthält die folgenden Aliase für Select-String:

  • Alle Plattformen:
    • sls

Select-Stringgrep ähnelt in UNIX oder findstr.exe in Windows.

Der sls Alias für das Select-String Cmdlet wurde in PowerShell 3.0 eingeführt.

Hinweis

Laut genehmigten Verben für PowerShell-Befehle lautet scdas offizielle Aliaspräfix für Select-* Cmdlets nicht sl. Daher sollte scsder richtige Alias Select-String sein , nicht sls. 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, Select-String durchsucht sie den Inhalt der Datei, nicht die ToString() Darstellung des Objekts.
  • Das ToString() Ergebnis des weitergeleiteten Objekts ist nicht die gleiche umfangreiche Zeichenfolgendarstellung, die vom Formatierungssystem von PowerShell erzeugt wird. Daher müssen Sie die Objekte Out-String möglicherweise zuerst anweisen. Weitere Informationen finden Sie unter Beispiel 10.

Geben Sie zum Verwenden Select-Stringden Text ein, den Sie als Wert des Pattern-Parameters 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 Path-Parameter , um den Pfad zu den Dateien anzugeben.

Interpretiert standardmäßig 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 ist Select-String 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 Line aufweisen. Wenn die Eingabe nicht aus der Datei stammt, lautet der Wert dieser Parameter InputStream.

Wenn Sie die Informationen im MatchInfo-Objekt nicht benötigen, verwenden Sie den Parameter Quiet . Der Parameter Quiet 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 wird die aktuelle Kultur verwendet, Select-String die für das System festgelegt ist. Verwenden Sie das Get-Culture Cmdlet, 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 *