Select-String
Trova il testo in stringhe e file.
Sintassi
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>]
Descrizione
Il Select-String
cmdlet usa la corrispondenza di espressioni regolari per cercare modelli di testo in stringhe e file di input. È possibile usare un modo Select-String
simile a grep
in UNIX o findstr.exe
in Windows.
Select-String
si basa su righe di testo. Per impostazione predefinita, Select-String
trova la prima corrispondenza in ogni riga e, per ogni corrispondenza, visualizza il nome del file, il numero di riga e tutto il testo nella riga contenente la corrispondenza. È possibile indirizzare Select-String
a trovare più corrispondenze per riga, visualizzare testo prima e dopo la corrispondenza oppure visualizzare un valore booleano (True o False) che indica se viene trovata una corrispondenza.
Select-String
può visualizzare tutte le corrispondenze di testo o arrestare dopo la prima corrispondenza in ogni file di input.
Select-String
può essere usato per visualizzare tutto il testo che non corrisponde al modello specificato.
È anche possibile specificare che Select-String
deve prevedere una codifica di caratteri specifica, ad esempio quando si esegue la ricerca di file di testo Unicode. Select-String
utilizza il byte order-mark (BOM) per rilevare il formato di codifica del file. Se il file non ha bom, presuppone che la codifica sia UTF8.
Esempio
Esempio 1: Trovare una corrispondenza con distinzione tra maiuscole e minuscole
In questo esempio viene eseguita una corrispondenza con distinzione tra maiuscole e minuscole del testo inviato alla pipeline al Select-String
cmdlet .
'Hello', 'HELLO' | Select-String -Pattern 'HELLO' -CaseSensitive -SimpleMatch
Le stringhe di testo Hello e HELLO vengono inviate alla pipeline al Select-String
cmdlet .
Select-String
usa il parametro Pattern per specificare HELLO. Il parametro CaseSensitive specifica che la distinzione tra maiuscole e minuscole deve corrispondere solo al modello maiuscolo. SimpleMatch è un parametro facoltativo e specifica che la stringa nel criterio non viene interpretata come un'espressione regolare.
Select-String
visualizza HELLO nella console di PowerShell.
Esempio 2: Trovare corrispondenze nei file di testo
Questo comando cerca tutti i file con l'estensione .txt
del nome file nella directory corrente. L'output visualizza le righe in tali file che includono la stringa specificata.
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 questo esempio Get-Alias
e Get-Command
vengono usati con il Out-File
cmdlet per creare due file di testo nella directory corrente, Alias.txt e Command.txt.
Select-String
usa il parametro Path con il carattere jolly asterisco (*
) per cercare tutti i file nella directory corrente con l'estensione .txt
del nome file . Il parametro Pattern consente di specificare il testo che deve corrispondere a Get-. Select-String
visualizza l'output nella console di PowerShell. Il nome del file e il numero di riga precedono ogni riga di contenuto che contiene una corrispondenza per il parametro Pattern .
Esempio 3: Trovare una corrispondenza di criterio
In questo esempio vengono cercati più file per trovare corrispondenze per il modello specificato. Il modello usa un quantificatore di espressioni regolari. Per altre informazioni, vedere 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
Il Select-String
cmdlet usa due parametri, Path e Pattern. Il parametro Path usa la variabile $PSHOME
che specifica la directory di PowerShell. Il resto del percorso include la sottodirectory en-US e specifica ogni *.txt
file nella directory. Il parametro Pattern specifica la corrispondenza con un punto interrogativo (?
) in ogni file. Una barra rovesciata (\
) viene usata come carattere di escape ed è necessaria perché il punto interrogativo (?
) è un quantificatore di espressioni regolari. Select-String
visualizza l'output nella console di PowerShell. Il nome del file e il numero di riga precedono ogni riga di contenuto che contiene una corrispondenza per il parametro Pattern .
Esempio 4: Usare Select-String in una funzione
Questo esempio crea una funzione per cercare un criterio nei file della Guida di PowerShell. Per questo esempio, la funzione esiste solo nella sessione di PowerShell. Quando la sessione di PowerShell viene chiusa, la funzione viene eliminata. Per altre informazioni, vedere 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
La funzione viene creata nella riga di comando di PowerShell. Il Function
comando usa il nome Search-Help
. Premere INVIO per iniziare ad aggiungere istruzioni alla funzione. >>
Dal prompt aggiungere ogni istruzione e premere INVIO come illustrato nell'esempio. Dopo l'aggiunta della parentesi chiusa, viene restituito un prompt di PowerShell.
La funzione contiene due comandi. La $PSHelp
variabile archivia il percorso dei file della Guida di PowerShell. $PSHOME
è la directory di installazione di PowerShell con la sottodirectory en-US che specifica ogni *.txt
file nella directory.
Il Select-String
comando nella funzione usa i parametri Path e Pattern . Il parametro Path usa la $PSHelp
variabile per ottenere il percorso. Il parametro Pattern usa la stringa About_ come criteri di ricerca.
Per eseguire la funzione, digitare Search-Help
. Il comando della Select-String
funzione visualizza l'output nella console di PowerShell.
Esempio 5: Cercare una stringa in un registro eventi di Windows
Questo esempio cerca una stringa in un registro eventi di Windows. La variabile $_
rappresenta l'oggetto corrente nella pipeline. Per altre informazioni, vedere about_Automatic_Variables.
$Events = Get-WinEvent -LogName Application -MaxEvents 50
$Events | Select-String -InputObject {$_.message} -Pattern 'Failed'
Il Get-WinEvent
cmdlet usa il parametro LogName per specificare il log applicazioni. Il parametro MaxEvents ottiene i 50 eventi più recenti dal log. Il contenuto del log viene archiviato nella variabile denominata $Events
.
La $Events
variabile viene inviata alla pipeline al Select-String
cmdlet . Select-String
usa il parametro InputObject . La $_
variabile rappresenta l'oggetto corrente ed message
è una proprietà dell'evento. Il parametro Pattern specifica la stringa Failed e cerca le corrispondenze in $_.message
. Select-String
visualizza l'output nella console di PowerShell.
Esempio 6: Trovare una stringa nelle sottodirectory
In questo esempio viene eseguita una ricerca in una directory e in tutte le relative sottodirectory una stringa di testo specifica.
Get-ChildItem -Path C:\Windows\System32\*.txt -Recurse |
Select-String -Pattern 'Microsoft' -CaseSensitive
Get-ChildItem
usa il parametro Path per specificare C:\Windows\System32*.txt. Il parametro Recurse include le sottodirectory. Gli oggetti vengono inviati alla pipeline a Select-String
.
Select-String
usa il parametro Pattern e specifica la stringa Microsoft. Il parametro CaseSensitive viene usato per trovare la corrispondenza con la combinazione esatta di maiuscole e minuscole della stringa. Select-String
visualizza l'output nella console di PowerShell.
Nota
A seconda delle autorizzazioni, nell'output potrebbero essere visualizzati messaggi di accesso negato .
Esempio 7: Trovare stringhe che non corrispondono a un criterio
Questo esempio illustra come escludere righe di dati che non corrispondono a un criterio.
Get-Command | Out-File -FilePath .\Command.txt
Select-String -Path .\Command.txt -Pattern 'Get', 'Set' -NotMatch
Il Get-Command
cmdlet invia oggetti nella pipeline all'oggetto Out-File
per creare il file Command.txt nella directory corrente. Select-String
utilizza il parametro Path per specificare il file Command.txt . Il parametro Pattern specifica Get e Set come criterio di ricerca. Il parametro NotMatch esclude Get e Set dai risultati.
Select-String
visualizza l'output nella console di PowerShell che non include Get o Set.
Esempio 8: Trovare righe prima e dopo una corrispondenza
In questo esempio viene illustrato come ottenere le righe prima e dopo il modello corrispondente.
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
Il Get-Command
cmdlet invia oggetti nella pipeline all'oggetto Out-File
per creare il file Command.txt nella directory corrente. Select-String
utilizza il parametro Path per specificare il file Command.txt . Il parametro Pattern specifica Get-Computer
come criterio di ricerca. Il parametro Context usa due valori, prima e dopo, e contrassegna i criteri di ricerca nell'output con una parentesi angolare (>
). Il parametro Context restituisce le due righe prima della corrispondenza del primo criterio e tre righe dopo l'ultima corrispondenza del criterio.
Esempio 9: Trovare tutte le corrispondenze dei criteri
In questo esempio viene illustrato il modo in cui il parametro AllMatches trova ogni corrispondenza del criterio in una riga di testo. Per impostazione predefinita, Select-String
trova solo la prima occorrenza di un criterio in una riga di testo. In questo esempio vengono utilizzate le proprietà dell'oggetto trovate con il Get-Member
cmdlet .
$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
Il Get-ChildItem
cmdlet usa il parametro Path . Il parametro Path usa la variabile $PSHOME
che specifica la directory di PowerShell. Il resto del percorso include la sottodirectory en-US e specifica ogni *.txt
file nella directory. Gli Get-ChildItem
oggetti vengono archiviati nella $A
variabile . La $A
variabile viene inviata alla pipeline al Select-String
cmdlet . Select-String
usa il parametro Pattern per cercare in ogni file la stringa PowerShell.
Dalla riga di comando di PowerShell viene visualizzato il contenuto della $A
variabile. È presente una riga che contiene due occorrenze della stringa PowerShell.
La $A.Matches
proprietà elenca la prima occorrenza del modello PowerShell in ogni riga.
La $A.Matches.Length
proprietà conta la prima occorrenza del modello PowerShell in ogni riga.
La $B
variabile usa gli stessi Get-ChildItem
cmdlet e Select-String
, ma aggiunge il parametro AllMatches . AllMatches trova ogni occorrenza del modello PowerShell in ogni riga. Gli oggetti archiviati nelle $A
variabili e $B
sono identici.
La $B.Matches.Length
proprietà aumenta perché per ogni riga viene conteggiata ogni occorrenza del modello powerShell .
Esempio 10- Convertire oggetti pipeline in stringhe usando 'Out-String'
Il ToString()
risultato dell'oggetto inviato tramite pipe non è la stessa rappresentazione di stringa avanzata prodotta dal sistema di formattazione di PowerShell. Potrebbe quindi essere necessario inviare tramite pipe gli oggetti prima di Out-String
tutto.
Piping per Out-String
convertire l'output formattato in un singolo oggetto stringa a più righe. Ciò significa che quando Select-String
trova una corrispondenza restituisce l'intera stringa su più righe.
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
Piping per Out-String -Stream
convertire l'output formattato in più oggetti stringa a riga singola. Ciò significa che quando Select-String
trova una corrispondenza restituisce solo la riga corrispondente.
Parametri
-AllMatches
Indica che il cmdlet cerca più di una corrispondenza in ogni riga di testo. Senza questo parametro, Select-String
trova solo la prima corrispondenza in ogni riga di testo.
Quando Select-String
trova più di una corrispondenza in una riga di testo, genera comunque un solo oggetto MatchInfo per la riga, ma la proprietà Matches dell'oggetto contiene tutte le corrispondenze.
Nota
Questo parametro viene ignorato se usato in combinazione con il parametro SimpleMatch . Se si desidera restituire tutte le corrispondenze e il criterio che si cerca contiene caratteri di espressione regolare, è necessario eseguire l'escape di tali caratteri anziché usare SimpleMatch. Per altre informazioni sull'escape delle espressioni regolari, vedere about_Regular_Expressions .
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-CaseSensitive
Indica che le corrispondenze del cmdlet fanno distinzione tra maiuscole e minuscole. Per impostazione predefinita, le corrispondenze non fanno distinzione tra maiuscole e minuscole.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Context
Acquisisce il numero specificato di righe prima e dopo la riga corrispondente al modello.
Se si immette un numero come valore di questo parametro, tale numero determina il numero di righe acquisite prima e dopo la corrispondenza. Se si immettono due numeri come valore, il primo numero determina il numero di righe che precedono la corrispondenza e il secondo numero determina il numero di righe che seguono la corrispondenza. Ad esempio: -Context 2,3
.
Nella visualizzazione predefinita, le righe con corrispondenza sono indicate da una parentesi uncinata destra () (>
ASCII 62) nella prima colonna della visualizzazione. Le righe non contrassegnate sono il contesto.
Il parametro Context non modifica il numero di oggetti generati da Select-String
.
Select-String
genera un oggetto MatchInfo per ogni corrispondenza. Il contesto viene archiviato come matrice di stringhe nella proprietà Context dell'oggetto .
Quando l'output di un Select-String
comando viene inviato alla pipeline a un altro Select-String
comando, il comando ricevente cerca solo il testo nella riga corrispondente. La riga corrispondente è il valore della proprietà Line dell'oggetto MatchInfo, non il testo nelle righe di contesto. Di conseguenza, il parametro Context non è valido nel comando ricevente Select-String
.
Quando il contesto include una corrispondenza, l'oggetto MatchInfo per ogni corrispondenza include tutte le righe di contesto, ma le righe sovrapposte vengono visualizzate una sola volta nella visualizzazione.
Tipo: | Int32[] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Culture
Specifica un nome delle impostazioni cultura in base al modello specificato. Il parametro Culture deve essere usato con il parametro SimpleMatch . Il comportamento predefinito usa le impostazioni cultura dello spazio di esecuzione corrente di PowerShell (sessione).
Per ottenere un elenco di tutte le impostazioni cultura supportate, usare il Get-Culture -ListAvailable
comando .
Inoltre, questo parametro accetta gli argomenti seguenti:
- CurrentCulture, ovvero l'impostazione predefinita;
- Ordinale, ovvero confronto binario non linguistico;
- Invariante, ovvero confronto indipendente dalla cultura.
Con Select-String -Culture Ordinal -CaseSensitive -SimpleMatch
il comando si ottiene il confronto binario più veloce.
Il parametro Culture usa il completamento della scheda per scorrere l'elenco di argomenti che specificano le impostazioni cultura disponibili. Per elencare tutti gli argomenti disponibili, usare il comando seguente:
(Get-Command Select-String).Parameters.Culture.Attributes.ValidValues
Per altre informazioni sulla proprietà CultureInfo.Name .NET, vedere CultureInfo.Name.
Il parametro Culture è stato introdotto in PowerShell 7.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | Culture of the current PowerShell session |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Encoding
Specifica il tipo di codifica per il file di destinazione. Il valore predefinito è utf8NoBOM
.
I valori accettabili per questo parametro sono i seguenti:
ascii
: usa la codifica per il set di caratteri ASCII (a 7 bit).ansi
: usa la codifica per per la tabella codici ANSI delle impostazioni cultura correnti. Questa opzione è stata aggiunta in PowerShell 7.4.bigendianunicode
: codifica in formato UTF-16 usando l'ordine dei byte big-endian.bigendianutf32
: codifica in formato UTF-32 usando l'ordine dei byte big-endian.oem
: usa la codifica predefinita per i programmi MS-DOS e console.unicode
: codifica in formato UTF-16 usando l'ordine dei byte little-endian.utf7
: codifica in formato UTF-7.utf8
: codifica in formato UTF-8.utf8BOM
: codifica in formato UTF-8 con byte order mark (BOM)utf8NoBOM
: codifica in formato UTF-8 senza byte order mark (BOM)utf32
: codifica in formato UTF-32.
A partire da PowerShell 6.2, il parametro Encoding consente anche ID numerici di tabelle codici registrate (ad esempio ) o nomi di stringhe di tabelle codici registrate (ad esempio -Encoding 1251
-Encoding "windows-1251"
). Per altre informazioni, vedere la documentazione di .NET per Encoding.CodePage.
A partire da PowerShell 7.4, è possibile usare il Ansi
valore per il parametro Encoding per passare l'ID numerico per la tabella codici ANSI delle impostazioni cultura correnti senza doverlo specificare manualmente.
Nota
UTF-7* non è più consigliato per l'uso. A partire da PowerShell 7.1, viene scritto un avviso se si specifica utf7
per il parametro Encoding .
Tipo: | Encoding |
Valori accettati: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Posizione: | Named |
Valore predefinito: | UTF8NoBOM |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Exclude
Esclude gli elementi specificati. Il valore di questo parametro qualifica il parametro Path . Immettere un elemento o un modello di percorso, ad esempio *.txt
. I caratteri jolly sono consentiti.
Tipo: | String[] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | True |
-Include
Include gli elementi specificati. Il valore di questo parametro qualifica il parametro Path . Immettere un elemento o un modello di percorso, ad esempio *.txt
. I caratteri jolly sono consentiti.
Tipo: | String[] |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | True |
-InputObject
Specifica il testo da cercare. Immettere una variabile che contiene il testo oppure digitare un comando o un'espressione che ottiene il testo.
L'uso del parametro InputObject non equivale all'invio di stringhe nella pipeline a Select-String
.
Quando si invia tramite pipe più di una stringa al Select-String
cmdlet, cerca il testo specificato in ogni stringa e restituisce ogni stringa contenente il testo di ricerca.
Quando si usa il parametro InputObject per inviare una raccolta di stringhe, Select-String
considera la raccolta come una singola stringa combinata. Select-String
restituisce le stringhe come unità se trova il testo di ricerca in qualsiasi stringa.
Gli oggetti FileInfo vengono considerati come un percorso di un file. Quando vengono specificati percorsi di file, Select-String
cerca il contenuto del file, non la ToString()
rappresentazione dell'oggetto.
Tipo: | PSObject |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-List
Solo la prima istanza del testo corrispondente viene restituita da ogni file di input. Questo è il modo più efficiente per recuperare un elenco di file con contenuto corrispondente all'espressione regolare.
Per impostazione predefinita, Select-String
restituisce un oggetto MatchInfo per ogni corrispondenza trovata.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-LiteralPath
Specifica il percorso dei file in cui cercare. Il valore del parametro LiteralPath viene usato esattamente come viene tipizzato. Nessun carattere viene interpretato come carattere jolly. Se il percorso include caratteri di escape, racchiuderlo tra virgolette singole. Le virgolette singole indicano a PowerShell di non interpretare alcun carattere come sequenze di escape. Per altre informazioni, vedere about_Quoting_Rules.
Tipo: | String[] |
Alias: | PSPath, LP |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
-NoEmphasis
Per impostazione predefinita, Select-String
evidenzia la stringa che corrisponde al criterio cercato con il parametro Pattern . Il parametro NoEmphasis disabilita l'evidenziazione.
L'enfasi usa colori negativi in base ai colori di sfondo e testo di PowerShell. Ad esempio, se i colori di PowerShell sono uno sfondo nero con testo bianco. L'enfasi è uno sfondo bianco con testo nero.
Questo parametro è stato introdotto in PowerShell 7.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-NotMatch
Il parametro NotMatch trova testo che non corrisponde al modello specificato.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Path
Specifica il percorso dei file da cercare. I caratteri jolly sono consentiti. Il percorso predefinito è la directory locale.
Specificare i file nella directory, ad esempio log1.txt
, *.doc
o *.*
. Se si specifica solo una directory, il comando non riesce.
Tipo: | String[] |
Posizione: | 1 |
Valore predefinito: | Local directory |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | True |
-Pattern
Specifica il testo da trovare in ogni riga. Il valore del criterio viene considerato come un'espressione regolare.
Per informazioni sulle espressioni regolari, vedere about_Regular_Expressions.
Tipo: | String[] |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Quiet
Indica che il cmdlet restituisce una risposta semplice anziché un oggetto MatchInfo . Il valore restituito è $true
se il criterio viene trovato o $null
se il criterio non viene trovato.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Raw
Fa in modo che il cmdlet restituisca solo le stringhe corrispondenti, anziché gli oggetti MatchInfo . Questo è il comportamento più simile ai comandi grep Unix o Windows findstr.exe.
Questo parametro è stato introdotto in PowerShell 7.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-SimpleMatch
Indica che il cmdlet usa una corrispondenza semplice anziché una corrispondenza di espressione regolare. In una corrispondenza semplice, Select-String
cerca il testo nel parametro Pattern . Non interpreta il valore del parametro Pattern come istruzione di espressione regolare.
Inoltre, quando viene utilizzato SimpleMatch , la proprietà Matches dell'oggetto MatchInfo restituito è vuota.
Nota
Quando questo parametro viene usato con il parametro AllMatches , AllMatches viene ignorato.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | False |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
È possibile inviare tramite pipe qualsiasi oggetto con un ToString()
metodo a questo cmdlet.
Output
Per impostazione predefinita, questo cmdlet restituisce un oggetto MatchInfo per ogni corrispondenza trovata.
Quando si usa il parametro Quiet , questo cmdlet restituisce un valore booleano che indica se il modello è stato trovato.
Quando si usa il parametro Raw , questo cmdlet restituisce un set di oggetti String che corrispondono al modello.
Note
PowerShell include gli alias seguenti per Select-String
:
- Tutte le piattaforme:
sls
Select-String
è simile a grep
in UNIX o findstr.exe
in Windows.
L'alias sls
per il Select-String
cmdlet è stato introdotto in PowerShell 3.0.
Nota
In base ai verbi approvati per i comandi di PowerShell, il prefisso dell'alias ufficiale per Select-*
i cmdlet è sc
, non sl
. Pertanto, l'alias appropriato per Select-String
deve essere scs
, non sls
. Si tratta di un'eccezione a questa regola.
Quando si esegue il piping di oggetti in Select-String
:
- Gli oggetti FileInfo vengono considerati come un percorso di un file. Quando vengono specificati percorsi di file,
Select-String
cerca il contenuto del file, non laToString()
rappresentazione dell'oggetto. - Il
ToString()
risultato dell'oggetto inviato tramite pipe non è la stessa rappresentazione di stringa avanzata prodotta dal sistema di formattazione di PowerShell. Potrebbe quindi essere necessario inviare tramite pipe gli oggetti prima diOut-String
tutto. Per altre informazioni, vedere Esempio 10.
Per usare Select-String
, digitare il testo che si desidera trovare come valore del parametro Pattern . Per specificare il testo da cercare, usare i criteri seguenti:
- Digitare il testo in una stringa tra virgolette e quindi inviarlo tramite pipe a
Select-String
. - Archiviare una stringa di testo in una variabile e quindi specificare la variabile come valore del parametro InputObject .
- Se il testo viene archiviato nei file, usare il parametro Path per specificare il percorso dei file.
Per impostazione predefinita, Select-String
interpreta il valore del parametro Pattern come espressione regolare. Per altre informazioni, vedere about_Regular_Expressions. È possibile usare il parametro SimpleMatch per eseguire l'override della corrispondenza delle espressioni regolari. Il parametro SimpleMatch trova le istanze del valore del parametro Pattern nell'input.
L'output predefinito di Select-String
è un oggetto MatchInfo , che include informazioni dettagliate sulle corrispondenze. Le informazioni nell'oggetto sono utili quando si cerca testo nei file, perché gli oggetti MatchInfo hanno proprietà come Filename e Line. Quando l'input non proviene dal file, il valore di questi parametri è InputStream.
Se non sono necessarie le informazioni nell'oggetto MatchInfo , usare il parametro Quiet . Il parametro Quiet restituisce un valore booleano (True o False) per indicare se è stata trovata una corrispondenza anziché un oggetto MatchInfo .
Quando si corrispondono frasi, Select-String
usa le impostazioni cultura correnti impostate per il sistema. Per trovare le impostazioni cultura correnti, usare il Get-Culture
cmdlet .
Per trovare le proprietà di un oggetto MatchInfo , digitare il comando seguente:
Select-String -Path test.txt -Pattern 'test' | Get-Member | Format-List -Property *