Condividi tramite


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 .txtdel 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, *.doco *.*. 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

PSObject

È possibile inviare tramite pipe qualsiasi oggetto con un ToString() metodo a questo cmdlet.

Output

MatchInfo

Per impostazione predefinita, questo cmdlet restituisce un oggetto MatchInfo per ogni corrispondenza trovata.

Boolean

Quando si usa il parametro Quiet , questo cmdlet restituisce un valore booleano che indica se il modello è stato trovato.

String

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 la ToString() 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 di Out-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 *