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-String
Verwendet 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-Alias
Get-Command
Alias.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 1251
z -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. , *.doc
oder *.*
. 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
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-String
ist 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 sc
das offizielle Aliaspräfix für Select-*
Cmdlets nicht sl
. Daher sollte der richtige Alias Select-String
für , scs
nicht 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 dieToString()
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 ObjekteOut-String
verleitungen. Weitere Informationen finden Sie unter Beispiel 10.
Geben Sie zum Verwenden Select-String
den 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 *