Share via


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 Abgleich regulärer Ausdrücke, 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, die die Übereinstimmung enthält. Sie können mehrere Select-String Ü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 Text-Übereinstimmungen anzeigen oder nach der ersten Übereinstimmung in jeder Eingabedatei beenden. Select-String kann verwendet werden, um den gesamten Text anzuzeigen, der nicht dem angegebenen Muster entspricht.

Sie können auch angeben, dass Select-String eine bestimmte Zeichencodierung erwartet werden soll, z. B. beim Durchsuchen von Unicode-Textdateien. Select-String verwendet die Bytereihenfolgemarkierung (BOM), um das Codierungsformat der Datei zu erkennen. Wenn die Datei keine BOM enthält, 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 in der Pipeline an das Select-String Cmdlet gesendet wurde.

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

Die Textzeichenfolgen Hello und HELLO werden in der Pipeline an das Select-String Cmdlet gesendet. Select-String verwendet den Pattern-Parameter , um HELLO anzugeben. Der Parameter CaseSensitive gibt an, dass die Groß-/Kleinschreibung nur dem Großbuchstabenmuster entsprechen darf. 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 durchsucht alle Dateien mit der .txt Dateinamenerweiterung im aktuellen Verzeichnis. 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 und Get-Command mit dem Out-File Cmdlet verwendet, Get-Alias um zwei Textdateien im aktuellen Verzeichnis zu erstellen, Alias.txt und Command.txt.

Select-String verwendet den Path-Parameter mit dem Sternchen (*) platzhalter, um alle Dateien im aktuellen Verzeichnis mit der Dateinamenerweiterung .txtzu durchsuchen. Der Parameter Pattern gibt den Text an, der get-. Select-String zeigt die Ausgabe in der PowerShell-Konsole an. Der Dateiname und die Zeilennummer gehen jeder Inhaltszeile voran, die eine Übereinstimmung für den Pattern-Parameter 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 in jeder Datei ein Fragezeichen (?) zugeordnet werden soll. Ein umgekehrter Schrägstrich (\) wird als Escapezeichen verwendet und ist erforderlich, da das Fragezeichen (?) ein Quantifizierer für reguläre Ausdrücke ist. Select-String zeigt die Ausgabe in der PowerShell-Konsole an. Der Dateiname und die Zeilennummer gehen jeder Inhaltszeile voran, die eine Übereinstimmung für den Pattern-Parameter 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 an der >> Eingabeaufforderung jede Anweisung hinzu, und drücken Sie die EINGABETASTE , wie im Beispiel gezeigt. 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 Path und Pattern . Der Path-Parameter verwendet die $PSHelp Variable, um den Pfad abzurufen. Der Parameter Pattern verwendet die Zeichenfolge About_ als Suchkriterium.

Geben Sie zum Ausführen der Funktion ein Search-Help. Der Befehl der Select-String Funktion zeigt die Ausgabe in der PowerShell-Konsole an.

Beispiel 5: Search für eine 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 LogName-Parameter , um das Anwendungsprotokoll anzugeben. Der Parameter MaxEvents ruft die 50 letzten Ereignisse aus dem Protokoll ab. Der Protokollinhalt wird in der Variablen mit dem Namen $Eventsgespeichert.

Die $Events Variable wird in der Pipeline 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 Pattern-Parameter gibt die Zeichenfolge Failed ab 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 zugehörigen Unterverzeichnisse nach einer bestimmten Textzeichenfolge durchsucht.

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

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

Select-String verwendet den Pattern-Parameter und gibt die Zeichenfolge Microsoft an. Der CaseSensitive-Parameter 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 werden in der Ausgabe möglicherweise Nachrichten vom Typ Access verweigert angezeigt .

Beispiel 7: Suchen nach Zeichenfolgen, die keinem Muster entsprechen

In diesem Beispiel wird gezeigt, wie Datenzeilen ausgeschlossen werden, die nicht einem Muster entsprechen.

Get-Command | Out-File -FilePath .\Command.txt
Select-String -Path .\Command.txt -Pattern 'Get', 'Set'  -NotMatch

Das Get-Command Cmdlet sendet Objekte an die Pipeline, um Out-File 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-String zeigt die Ausgabe in der PowerShell-Konsole an, die Get oder Set nicht enthält.

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

In diesem Beispiel wird gezeigt, wie Die Zeilen 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 Pipeline, um Out-File 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 , vorher und nachher, und markiert Mustervergleiche in der Ausgabe mit einer spitzen Klammer (>). Der Context-Parameter gibt die beiden Zeilen vor der ersten Mustervergleichung und drei Zeilen nach der letzten Mustervergleichung aus.

Beispiel 9: Suchen aller Mustervergleiche

Dieses Beispiel zeigt, wie der AllMatches-Parameter jede Musterübereinstimmung 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 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 in der Pipeline an das Select-String Cmdlet gesendet. Select-String verwendet den Pattern-Parameter , 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 die gleichen Get-ChildItem Cmdlets und Select-String , fügt jedoch den AllMatches-Parameter hinzu. AllMatches findet jedes Vorkommen des Musters PowerShell in jeder Zeile. Die in den $A Variablen und $B gespeicherten Objekte sind identisch.

Die $B.Matches.Length -Eigenschaft wird erhöht, 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 übergebenen Objekts ist nicht die gleiche umfassende Zeichenfolgendarstellung, die vom Formatierungssystem von PowerShell erzeugt wird. Daher müssen Sie möglicherweise zuerst an die Objekte übergeben Out-String .

Durch piping to Out-String wird die formatierte Ausgabe in ein einzelnes mehrzeiliges Zeichenfolgenobjekt konvertiert. Dies bedeutet, dass beim Select-String Finden einer Übereinstimmung die gesamte mehrzeile 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

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

Parameter

-AllMatches

Gibt an, dass das Cmdlet in jeder Textzeile nach mehr als einer Übereinstimmung 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 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 gesuchte Muster Zeichen für reguläre Ausdrücke enthält, müssen Sie diese Zeichen mit Escapezeichen anstatt SimpleMatch verwenden. Weitere Informationen zum Escapen 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 bei den Cmdlet-Übereinstimmungen die Groß-/Kleinschreibung beachtet wird. Standardmäßig wird bei Übereinstimmungen nicht zwischen Groß-/Kleinschreibung unterschieden.

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 Zeilen mit einer Übereinstimmung durch eine rechte eckige Klammer () (>ASCII 62) in der ersten Spalte der Anzeige angezeigt. Nicht gekennzeichnete Zeilen stehen für Kontext.

Der Context-Parameter ändert nicht die Anzahl der objekte, die von generiert werden 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 über die Pipeline an einen anderen Select-String Befehl gesendet wird, durchsucht der empfangende Befehl nur den Text in der übereinstimmenden Zeile. Die übereinstimmene 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 ungültig.

Wenn der Kontext eine Übereinstimmung enthält, enthält das MatchInfo-Objekt für jede Übereinstimmung alle Kontextzeilen, aber die überlappenden Zeilen 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 Culture-Parameter muss mit dem SimpleMatch-Parameter verwendet werden. Das Standardverhalten verwendet die Kultur des aktuellen PowerShell-Runspaces (Sitzung).

Verwenden Get-Culture -ListAvailable Sie den Befehl, um eine Liste aller unterstützten Kulturen zu erhalten.

Darüber hinaus akzeptiert dieser Parameter die folgenden Argumente:

  • CurrentCulture, die Standardeinstellung;
  • Ordinal, das ist nicht-linguistischer 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 Culture-Parameter verwendet die Tabstopp-Vervollständigung, 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 Culture-Parameter 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).
  • bigendianunicode: Codiert im UTF-16-Format mit der Big-Endian-Bytereihenfolge.
  • bigendianutf32: Codiert im UTF-32-Format mit der Big-Endian-Bytereihenfolge.
  • 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 lässt der Encoding-Parameter auch numerische IDs registrierter Codepages (z. B -Encoding 1251. ) oder Zeichenfolgennamen von registrierten Codepages (z. B -Encoding "windows-1251". ) zu. Weitere Informationen finden Sie in der .NET-Dokumentation für Encoding.CodePage.

Hinweis

UTF-7* wird nicht mehr empfohlen. Ab PowerShell 7.1 wird eine Warnung ausgegeben, wenn Sie für den Encoding-Parameter 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 Path-Element oder -Muster ein, z *.txt. B. . 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 Path-Element oder -Muster ein, z *.txt. B. . 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 an die Pipeline.Select-String

Wenn Sie mehrere Zeichenfolgen an das Select-String Cmdlet übergeben, sucht es 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 eine 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 sind, Select-String durchsucht den 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

Aus jeder Eingabedatei wird nur der erste instance übereinstimmenden Text zurückgegeben. Dies ist die effizienteste Methode zum Abrufen einer Liste von Dateien, deren Inhalt dem regulären Ausdruck entspricht.

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

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

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

-NoEmphasis

Standardmäßig wird die Zeichenfolge hervorgehoben, die mit dem Muster übereinstimmt, Select-String nach dem Sie mit dem Pattern-Parameter gesucht haben. Der NoEmphasis-Parameter deaktiviert die Hervorhebung.

Die Hervorhebung verwendet negative Farben basierend auf Ihren PowerShell-Hintergrund- und Textfarben. Beispiel: Ihre PowerShell-Farben sind ein schwarzer Hintergrund mit weißem Text. Die Betonung 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 dem angegebenen Muster entspricht.

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 in jeder Zeile gesucht 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 anstelle eines MatchInfo-Objekts einen booleschen Wert (True oder False) zurückgibt. Der Wert ist True, wenn das Muster gefunden wird. Andernfalls ist der Wert False.

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

-Raw

Bewirkt, dass das Cmdlet anstelle von MatchInfo-Objekten nur die übereinstimmenden Zeichenfolgen ausgibt. Dies ist das Ergebnis eines Verhaltens, das den Befehlen unix grep oder Windows findstr.exe am ähnlichsten ist.

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 einer Übereinstimmung mit regulären Ausdrücken verwendet. In einer einfachen Übereinstimmung Select-String durchsucht die Eingabe nach dem Text im Pattern-Parameter . Der Wert des Pattern-Parameters wird nicht als Anweisung für reguläre Ausdrücke interpretiert.

Außerdem ist bei Verwendung von SimpleMatch die Matches-Eigenschaft des zurückgegebenen MatchInfo-Objekts leer.

Hinweis

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

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

Eingaben

PSObject

Sie können jedes Objekt, das über eine ToString() -Methode verfügt, an übergeben Select-String.

Ausgaben

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

Standardmäßig besteht die Ausgabe aus einem Satz von MatchInfo-Objekten mit einem für jede gefundene Übereinstimmung. 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, besteht die Ausgabe aus einer Reihe von String-Objekten , die dem Muster entsprechen.

Hinweise

Select-String ist ähnlich wie grep in UNIX oder findstr.exe in Windows.

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

Hinweis

Gemäß genehmigten Verben für PowerShell-Befehle lautet scdas offizielle Aliaspräfix für Select-* Cmdlets , nicht sl. Daher sollte der richtige Alias für Select-String nicht seinscssls. Dies ist eine Ausnahme von dieser Regel.

Beim Piping von Objekten an Select-String:

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

Um zu verwenden Select-String, geben Sie den Text, den Sie suchen möchten, als Wert des Pattern-Parameters ein. Verwenden Sie die folgenden Kriterien, um den zu durchsuchenden Text anzugeben:

  • Geben Sie den Text in eine Zeichenfolge in Anführungszeichen ein, und leiten 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 Abgleich mit regulären Ausdrücken zu überschreiben. Der SimpleMatch-Parameter sucht 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 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 Quiet-Parameter . Der Quiet-Parameter gibt einen booleschen Wert (True oder False) zurück, um anzugeben, ob anstelle eines MatchInfo-Objekts eine Übereinstimmung gefunden wurde.

Verwendet beim Abgleich von Ausdrücken Select-String die aktuelle Kultur, die für das System festgelegt ist. Verwenden Sie das Cmdlet, um die Get-Culture aktuelle Kultur zu ermitteln.

Geben Sie den folgenden Befehl ein, um die Eigenschaften eines MatchInfo-Objekts zu ermitteln:

Select-String -Path test.txt -Pattern 'test' | Get-Member | Format-List -Property *