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 Ausdruck, um nach Textmustern in Eingabezeichenfolgen und Dateien zu suchen. Sie können ähnlich wie grep in UNIX oder findstr.exe in Windows verwendenSelect-String.

Select-String basiert auf Textzeilen. Findet standardmäßig Select-String die erste Übereinstimmung in jeder Zeile und zeigt für jede Übereinstimmung den Dateinamen, die Zeilennummer und alle Text in der Zeile an, die 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 Textgleiche anzeigen oder nach der ersten Übereinstimmung in jeder Eingabedatei beenden. Select-String kann verwendet werden, um allen 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. wenn Sie Dateien von Unicode-Text durchsuchen. Select-String Verwendet das Byte-Order-Mark (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 Groß-/Kleinschreibung

In diesem Beispiel wird eine Groß-/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 Musterparameter, um HELLO anzugeben. Der Parameter "CaseSensitive " gibt an, dass der Fall 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

Dieser Befehl sucht alle Dateien mit der .txt Dateinamenerweiterung im aktuellen Verzeichnis. Die Ausgabe zeigt die Zeilen in diesen 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 wird das Out-File Cmdlet verwendet, um zwei Textdateien im aktuellen Verzeichnis zu erstellen, Get-AliasGet-CommandAlias.txt und Command.txt.

Select-String verwendet den Pfadparameter mit dem Sternchen (*) zum Durchsuchen aller Dateien im aktuellen Verzeichnis mit der Dateinamenerweiterung .txt. Der Musterparameter gibt den Text an, der mit Get-übereinstimmen soll. Select-String zeigt die Ausgabe in der PowerShell-Konsole an. Der Dateiname und die Zeilennummer stehen vor jeder Inhaltszeile, die eine Übereinstimmung für den Musterparameter enthält.

Beispiel 3: Suchen einer Mustergleichung

In diesem Beispiel werden mehrere Dateien gesucht, um Übereinstimmungen für das angegebene Muster zu finden. Das Muster verwendet einen regulären Ausdrucks-Quantifizierer. 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, Pfad und Muster. 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 Pattern-Parameter gibt an, dass ein Fragezeichen (?) in jeder Datei übereinstimmen soll. Ein Backslash () 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 stehen vor jeder Inhaltszeile, die eine Übereinstimmung für den Musterparameter enthält.

Beispiel 4: Verwenden von Select-String in einer Funktion

In diesem Beispiel wird eine Funktion erstellt, um nach einem Muster in den PowerShell-Hilfedateien zu suchen. 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 dargestellt. Nachdem die schließende Klammer hinzugefügt wurde, werden Sie zu einer PowerShell-Eingabeaufforderung zurückgegeben.

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 "Pfad " und "Muster" . Der Pfadparameter verwendet die Variable, um den $PSHelp Pfad abzurufen. Der Parameter Pattern verwendet die Zeichenfolge About_ als Suchkriterien.

Geben Sie zum Ausführen der Funktion die Funktion ein Search-Help. 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 eine Zeichenfolge in einem Windows-Ereignisprotokoll 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 LogName-Parameter , um das Anwendungsprotokoll anzugeben. Der Parameter MaxEvents ruft die letzten 50 Ereignisse aus dem Protokoll ab. Der Protokollinhalt wird in der Variable mit dem Namen $Events".

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 Musterparameter gibt die Zeichenfolge Fehlgeschlagen 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 für eine bestimmte Textzeichenfolge gesucht.

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

Get-ChildItem verwendet den Pfadparameter , um C:\Windows\System32*.txtanzugeben. Der Parameter Recurse enthält die Unterverzeichnisse. Die Objekte werden an die Pipeline gesendet.Select-String

Select-String verwendet den Musterparameter und gibt die Zeichenfolge Microsoft an. Der Parameter "CaseSensitive " wird verwendet, um dem genauen Fall der Zeichenfolge zu entsprechen. Select-String zeigt die Ausgabe in der PowerShell-Konsole an.

Hinweis

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

Beispiel 7: Suchen von Zeichenfolgen, die nicht mit einem Muster übereinstimmen

In diesem Beispiel wird gezeigt, wie Datenzeilen 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 nach unten 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 Musterparameter gibt Get and Set als Suchmuster an. Der Parameter NotMatch schließt Get and Set aus den Ergebnissen aus. Select-String zeigt die Ausgabe in der PowerShell-Konsole an, die keine Get - oder Set enthält.

Beispiel 8: Suchen von Zeilen vor und nach einer Übereinstimmung

In diesem Beispiel wird gezeigt, wie Sie die Linien vor und nach dem übereinstimmenden Muster abrufen.

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 nach unten 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 Musterparameter gibt als Suchmuster an Get-Computer . Der Kontextparameter verwendet zwei Werte vor und nach und markiert Musterausgleiche in der Ausgabe mit einer Winkelklammer (>). Der Kontextparameter gibt die beiden Zeilen vor dem ersten Mustergleich und drei Zeilen nach dem letzten Mustervergleich aus.

Beispiel 9: Suchen aller Mustergleiche

In diesem Beispiel wird gezeigt, wie der Parameter "AllMatches " jedes Muster in einer Textzeile findet. Standardmäßig Select-String findet nur das erste Vorkommen eines Musters in einer Textzeile. 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 Parameter "Pfad ". 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 $A Variable gespeichert. Die $A Variable wird an das Select-String Cmdlet gesendet. Select-String verwendet den Musterparameter , um jede Datei nach der Zeichenfolge PowerShell zu durchsuchen.

Aus der PowerShell-Befehlszeile werden die $A Variableninhalte angezeigt. Es gibt eine Zeile, die zwei Vorkommen der Zeichenfolge PowerShell enthält.

Die $A.Matches Eigenschaft enthält das erste Vorkommen des Musters PowerShell in jeder Zeile.

Die $A.Matches.Length Eigenschaft zählt das erste Vorkommen des Musters PowerShell in jeder Zeile.

Die $B Variable verwendet dieselbe 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 erhöht sich, da für jede Zeile jedes Vorkommen des Musters PowerShell gezählt wird.

Beispiel 10 : Konvertieren von Pipelineobjekten in Zeichenfolgen mit "Out-String"

Das ToString() Ergebnis des Piped-Objekts ist nicht die gleiche rich-Zeichenfolgendarstellung, die vom Formatierungssystem von PowerShell erzeugt wird. Möglicherweise müssen Sie also zuerst die Objekte an die Objekte Out-String verleitungen.

Das Piping zum Out-String Konvertieren der formatierten Ausgabe in ein einzelnes mehrzeiliges Zeichenfolgenobjekt. Dies bedeutet, dass beim Select-String Suchen einer Übereinstimmung die gesamte multilineige 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

Das Piping, um Out-String -Stream die formatierte Ausgabe in mehrere einzelzeilige Zeichenfolgenobjekte zu konvertieren. Dies bedeutet, dass beim Select-String Finden einer Übereinstimmung nur die übereinstimmende Zeile ausgegeben wird.

Parameter

-AllMatches

Gibt an, dass das Cmdlet nach mehreren Übereinstimmungen in jeder Textzeile sucht. Ohne diesen Parameter Select-String findet nur die erste Übereinstimmung in jeder Textzeile.

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 Match-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 und das Muster zurückgeben möchten, das Sie suchen, enthält reguläre Ausdruckszeichen, müssen Sie diese Zeichen anstelle von SimpleMatch entwischen. Weitere Informationen zum Entfangen regulärer Ausdrücke finden Sie unter about_Regular_Expressions .

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

-CaseSensitive

Gibt an, dass die Cmdlet-Übereinstimmungen Groß-/Kleinschreibung aufweisen. Standardmäßig sind Übereinstimmungen nicht groß- und kleinschreibungsgeschützt.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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 Winkelklammer () () (>ASCII 62) in der ersten Spalte der Anzeige angegeben. Nicht gekennzeichnete Zeilen stehen für Kontext.

Der Kontextparameter ändert nicht die Anzahl von Objekten, die 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, sucht 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 Kontextparameter für den empfangenden Select-String Befehl ungü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.

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

-Culture

Gibt einen Kulturnamen an, der dem angegebenen Muster entspricht. Der Parameter "Kultur " muss mit dem SimpleMatch-Parameter verwendet werden. Das Standardverhalten verwendet die Kultur des aktuellen PowerShell-Runspace (Sitzung).

Um eine Liste aller unterstützten Kulturen abzurufen, verwenden Sie Get-Culture -ListAvailable den Befehl.

Darüber hinaus akzeptiert dieser Parameter die folgenden Argumente:

  • CurrentCulture, das ist Standard;
  • Ordinal, das ist ein nicht sprachlicher binärer Vergleich;
  • Invariant, das ist kulturunabhängiger Vergleich.

Mit Select-String -Culture Ordinal -CaseSensitive -SimpleMatch dem Befehl erhalten Sie den schnellsten binären Vergleich.

Der Parameter "Kultur " verwendet registerkartenabschluss, um durch die Liste der Argumente zu scrollen, die die verfügbaren Kulturen angeben. Um alle verfügbaren Argumente auflisten zu können, verwenden Sie den folgenden Befehl:

(Get-Command Select-String).Parameters.Culture.Attributes.ValidValues

Weitere Informationen zu .NET CultureInfo.Name-Eigenschaft finden Sie unter CultureInfo.Name.

Der Kulturparameter wurde in PowerShell 7 eingeführt.

Type:String
Position:Named
Default value:Culture of the current PowerShell session
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Encoding

Gibt den Typ der Codierung für die Zieldatei an. Standardwert: utf8NoBOM.

Die zulässigen Werte für diesen Parameter sind wie folgt:

  • ascii: Verwendet die Codierung für den ASCII-Zeichensatz (7-Bit- Zeichensatz).
  • bigendianunicode: Codiert im UTF-16-Format mithilfe der Groß-End-Bytereihenfolge.
  • bigendianutf32: Codiert im UTF-32-Format mithilfe der Groß-End-Bytereihenfolge.
  • oem: Verwendet die Standardcodierung für MS-DOS- und Konsolenprogramme.
  • unicode: Codiert im UTF-16-Format mithilfe der Klein-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 Codierungsparameter auch numerische IDs von registrierten Codeseiten (z. B. ) oder Zeichenfolgennamen registrierter Codeseiten (wie -Encoding 1251z -Encoding "windows-1251". B. ). Weitere Informationen finden Sie in der .NET-Dokumentation für Encoding.CodePage.

Hinweis

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

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

-Exclude

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

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

-Include

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

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters: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 in der Pipeline.Select-String

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

Wenn Sie den InputObject-Parameter verwenden, um eine Auflistung von Zeichenfolgen zu übermitteln, Select-String behandelt 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, Select-String sucht der Inhalt der Datei, nicht die ToString() Darstellung des Objekts.

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

-List

Nur die erste Instanz des übereinstimmenden Texts wird aus jeder Eingabedatei zurückgegeben. Dies ist die effiziente Möglichkeit, eine Liste von Dateien abzurufen, die Inhalte mit dem regulären Ausdruck übereinstimmen.

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

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

-LiteralPath

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

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

-NoEmphasis

Hebt standardmäßig die Zeichenfolge hervor, die dem muster entspricht, Select-String nach dem Sie mit dem Musterparameter gesucht haben. Der Parameter NoEmphasis deaktiviert die Hervorhebung.

Die Betonung verwendet negative Farben basierend auf Ihrem PowerShell-Hintergrund und Textfarben. Wenn beispielsweise Ihre PowerShell-Farben ein schwarzer Hintergrund mit weißem Text sind. Die Hervorhebung ist ein weißer Hintergrund mit schwarzem Text.

Dieser Parameter wurde in PowerShell 7 eingeführt.

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

-NotMatch

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

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters: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.

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

-Pattern

Gibt den Text an, der auf jeder Zeile gefunden werden soll. Der Musterwert wird als regulärer Ausdruck behandelt.

Weitere Informationen zu regulären Ausdrücken finden Sie unter about_Regular_Expressions.

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

-Quiet

Gibt an, dass das Cmdlet einen booleschen Wert (True oder False) anstelle eines MatchInfo-Objekts zurückgibt. Der Wert ist True, wenn das Muster gefunden wird; andernfalls lautet "False".

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

-Raw

Bewirkt, dass das Cmdlet nur die übereinstimmenden Zeichenfolgen anstelle von MatchInfo-Objekten ausgibt. Dies ist das Ergebnis des Verhaltens, das den Unix-Grep - oder Windows -findstr.exe-Befehlen am meisten ähnelt.

Dieser Parameter wurde in PowerShell 7 eingeführt.

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

-SimpleMatch

Gibt an, dass das Cmdlet eine einfache Übereinstimmung anstelle eines regulären Ausdrucks verwendet. Durchsucht in einer einfachen Übereinstimmung Select-String die Eingabe für den Text im Musterparameter . Der Wert des Musterparameters wird nicht als reguläre Ausdrucksausweisung interpretiert.

Auch 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 die AllMatches ignoriert.

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

Eingaben

PSObject

Sie können ein beliebiges Objekt, das eine ToString() Methode enthält, verleitungen Select-String.

Ausgaben

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

Standardmäßig ist die Ausgabe eine Gruppe von MatchInfo-Objekten mit einer für jede Übereinstimmung gefundenen. Wenn Sie den Quiet-Parameter verwenden, ist die Ausgabe ein boolescher Wert, der angibt, ob das Muster gefunden wurde. Wenn Sie den Raw-Parameter verwenden, ist die Ausgabe eine Gruppe von String-Objekten , die dem Muster entsprechen.

Hinweise

Select-Stringist in UNIX oder findstr.exe in Windows ähnlichgrep.

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

Hinweis

Laut genehmigten Verben für PowerShell-Befehle ist scdas offizielle Aliaspräfix für Select-* Cmdlets nicht sl. Daher sollte der richtige Alias Select-String für , scsnicht sls. Dies ist eine Ausnahme für diese Regel.

Beim Anfügen von Objekten an Select-String:

  • FileInfo-Objekte werden als Pfad zu einer Datei behandelt. Wenn Dateipfade angegeben werden, Select-String sucht der Inhalt der Datei, nicht die ToString() Darstellung des Objekts.
  • Das ToString() Ergebnis des Piped-Objekts ist nicht die gleiche rich-Zeichenfolgendarstellung, die vom Formatierungssystem von PowerShell erzeugt wird. Möglicherweise müssen Sie also zuerst die Objekte an die Objekte Out-String verleitungen. Weitere Informationen finden Sie unter Beispiel 10.

Geben Sie zum Verwenden Select-Stringden Text ein, den Sie als Wert des Musterparameters suchen möchten. Um den zu durchsuchenden Text anzugeben, verwenden Sie die folgenden Kriterien:

  • Geben Sie den Text in eine zitierte Zeichenfolge ein, und führen 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 Pfad zum Pfad zu den Dateien.

Interpretiert standardmäßig Select-String den Wert des Musterparameters als regulärer Ausdruck. Weitere Informationen finden Sie unter about_Regular_Expressions. Sie können den SimpleMatch-Parameter verwenden, um den regulären Ausdrucksabgleich außer Kraft zu setzen. Der SimpleMatch-Parameter findet Instanzen des Werts des Musterparameters 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 Dateiname und Zeile aufweisen. Wenn die Eingabe nicht aus der Datei stammt, ist der Wert dieser Parameter InputStream.

Wenn Sie die Informationen im MatchInfo-Objekt nicht benötigen, verwenden Sie den Quiet-Parameter . Der Quiet-Parameter gibt einen Booleschen Wert (True oder False) zurück, um anzugeben, ob es eine Übereinstimmung gefunden hat, anstatt eines MatchInfo-Objekts .

Wenn Ausdrücke übereinstimmen, Select-String verwendet die aktuelle Kultur, die für das System festgelegt ist. Um die aktuelle Kultur zu finden, verwenden Sie das Get-Culture Cmdlet.

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 *