Partager via


Select-String

Recherche du texte dans des chaînes et des fichiers.

Syntaxe

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

Description

L’applet Select-String de commande utilise la correspondance d’expression régulière pour rechercher des modèles de texte dans des chaînes d’entrée et des fichiers. Vous pouvez utiliser Select-String des fonctionnalités similaires à grep celles d’UNIX ou findstr.exe de Windows.

Select-String est basé sur des lignes de texte. Par défaut, Select-String recherche la première correspondance dans chaque ligne et, pour chaque correspondance, elle affiche le nom de fichier, le numéro de ligne et tout le texte de la ligne contenant la correspondance. Vous pouvez rechercher Select-String plusieurs correspondances par ligne, afficher du texte avant et après la correspondance, ou afficher une valeur booléenne (True ou False) qui indique si une correspondance est trouvée.

Select-String peut afficher toutes les correspondances de texte ou arrêter après la première correspondance dans chaque fichier d’entrée. Select-String peut être utilisé pour afficher tout le texte qui ne correspond pas au modèle spécifié.

Vous pouvez également spécifier ce qui Select-String doit s’attendre à un encodage de caractères particulier, par exemple lorsque vous recherchez des fichiers de texte Unicode. Select-String utilise la marque d’ordre d’octet (BOM) pour détecter le format d’encodage du fichier. Si le fichier n’a pas de boM, il suppose que l’encodage est UTF8.

Exemples

Exemple 1 : Rechercher une correspondance sensible à la casse

Cet exemple montre comment effectuer une correspondance sensible à la casse du texte envoyé au pipeline à l’applet Select-String de commande.

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

Les chaînes de texte Hello et HELLO sont envoyées au pipeline à l’applet de Select-String commande. Select-String utilise le paramètre Pattern pour spécifier HELLO. Le paramètre CaseSensitive spécifie que la casse doit correspondre uniquement au modèle majuscule. SimpleMatch est un paramètre facultatif et spécifie que la chaîne du modèle n’est pas interprétée comme une expression régulière. Select-String affiche HELLO dans la console PowerShell.

Exemple 2 : Rechercher des correspondances dans des fichiers texte

Cette commande recherche tous les fichiers avec l’extension .txt de nom de fichier dans le répertoire actif. La sortie affiche les lignes de ces fichiers qui incluent la chaîne spécifiée.

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

Dans cet exemple, Get-Alias et Get-Command sont utilisés avec l’applet Out-File de commande pour créer deux fichiers texte dans le répertoire actif, Alias.txt et Command.txt.

Select-String utilise le paramètre Path avec le caractère générique astérisque (*) pour rechercher tous les fichiers dans le répertoire actif avec l’extension .txtde nom de fichier. Le paramètre Pattern spécifie le texte à mettre en correspondance Get-. Select-String affiche la sortie dans la console PowerShell. Le nom de fichier et le numéro de ligne précèdent chaque ligne de contenu qui contient une correspondance pour le paramètre Pattern .

Exemple 3 : Rechercher une correspondance de modèle

Dans cet exemple, plusieurs fichiers sont recherchés pour rechercher des correspondances pour le modèle spécifié. Le modèle utilise un quantificateur d’expression régulière. Pour plus d’informations, consultez 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

L’applet Select-String de commande utilise deux paramètres, Path et Pattern. Le paramètre Path utilise la variable $PSHOME qui spécifie le répertoire PowerShell. Le reste du chemin inclut le sous-répertoire en-US et spécifie chaque *.txt fichier dans le répertoire. Le paramètre Pattern spécifie de faire correspondre un point d’interrogation (?) dans chaque fichier. Une barre oblique inverse (\) est utilisée comme caractère d’échappement et est nécessaire, car le point d’interrogation (?) est un quantificateur d’expression régulière. Select-String affiche la sortie dans la console PowerShell. Le nom de fichier et le numéro de ligne précèdent chaque ligne de contenu qui contient une correspondance pour le paramètre Pattern .

Exemple 4 : Utiliser Select-String dans une fonction

Cet exemple crée une fonction pour rechercher un modèle dans les fichiers d’aide PowerShell. Pour cet exemple, la fonction existe uniquement dans la session PowerShell. Lorsque la session PowerShell est fermée, la fonction est supprimée. Pour plus d’informations, consultez 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 fonction est créée sur la ligne de commande PowerShell. La Function commande utilise le nom Search-Help. Appuyez sur Entrée pour commencer à ajouter des instructions à la fonction. À partir de l’invite >> , ajoutez chaque instruction et appuyez sur Entrée , comme indiqué dans l’exemple. Une fois le crochet fermant ajouté, vous êtes retourné à une invite PowerShell.

La fonction contient deux commandes. La $PSHelp variable stocke le chemin d’accès aux fichiers d’aide PowerShell. $PSHOME est le répertoire d’installation de PowerShell avec le sous-répertoire en-US qui spécifie chaque *.txt fichier dans le répertoire.

La Select-String commande de la fonction utilise les paramètres Path et Pattern . Le paramètre Path utilise la $PSHelp variable pour obtenir le chemin d’accès. Le paramètre Pattern utilise la chaîne About_ comme critères de recherche.

Pour exécuter la fonction, tapez Search-Help. La commande de Select-String la fonction affiche la sortie dans la console PowerShell.

Exemple 5 : Rechercher une chaîne dans un journal des événements Windows

Cet exemple recherche une chaîne dans un journal des événements Windows. La variable $_ représente l’objet actuel dans le pipeline. Pour plus d’informations, consultez about_Automatic_Variables.

$Events = Get-WinEvent -LogName Application -MaxEvents 50
$Events | Select-String -InputObject {$_.message} -Pattern 'Failed'

L’applet Get-WinEvent de commande utilise le paramètre LogName pour spécifier le journal d’application. Le paramètre MaxEvents obtient les 50 événements les plus récents du journal. Le contenu du journal est stocké dans la variable nommée $Events.

La $Events variable est envoyée au pipeline à l’applet Select-String de commande. Select-String utilise le paramètre InputObject . La $_ variable représente l’objet actuel et message est une propriété de l’événement. Le paramètre Pattern spécifie la chaîne Failed et recherche les correspondances dans $_.message. Select-String affiche la sortie dans la console PowerShell.

Exemple 6 : Rechercher une chaîne dans les sous-répertoires

Cet exemple recherche un répertoire et tous ses sous-répertoires pour une chaîne de texte spécifique.

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

Get-ChildItem utilise le paramètre Path pour spécifier C :\Windows\System32*.txt. Le paramètre Recurse inclut les sous-répertoires. Les objets sont envoyés vers le bas du pipeline vers Select-String.

Select-String utilise le paramètre Pattern et spécifie la chaîne Microsoft. Le paramètre CaseSensitive est utilisé pour correspondre à la casse exacte de la chaîne. Select-String affiche la sortie dans la console PowerShell.

Remarque

En fonction de vos autorisations, vous pouvez voir accéder aux messages refusés dans la sortie.

Exemple 7 : Rechercher des chaînes qui ne correspondent pas à un modèle

Cet exemple montre comment exclure des lignes de données qui ne correspondent pas à un modèle.

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

L’applet Get-Command de commande envoie des objets au pipeline pour Out-File créer le fichier Command.txt dans le répertoire actif. Select-String utilise le paramètre Path pour spécifier le fichier Command.txt . Le paramètre Pattern spécifie Get et Set comme modèle de recherche. Le paramètre NotMatch exclut Get et Set des résultats. Select-String affiche la sortie dans la console PowerShell qui n’inclut pas Get ou Set.

Exemple 8 : Rechercher des lignes avant et après une correspondance

Cet exemple montre comment obtenir les lignes avant et après le modèle correspondant.

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

L’applet Get-Command de commande envoie des objets au pipeline pour Out-File créer le fichier Command.txt dans le répertoire actif. Select-String utilise le paramètre Path pour spécifier le fichier Command.txt . Le paramètre Pattern spécifie Get-Computer comme modèle de recherche. Le paramètre Context utilise deux valeurs, avant et après, et marque les correspondances de modèle dans la sortie avec un crochet angle (>). Le paramètre Context génère les deux lignes avant la première correspondance de modèle et trois lignes après la dernière correspondance de modèle.

Exemple 9 : Rechercher toutes les correspondances de modèle

Cet exemple montre comment le paramètre AllMatches recherche chaque correspondance de modèle dans une ligne de texte. Par défaut, Select-String recherche uniquement la première occurrence d’un modèle dans une ligne de texte. Cet exemple utilise des propriétés d’objet trouvées avec l’applet de Get-Member commande.

$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

L’applet Get-ChildItem de commande utilise le paramètre Path . Le paramètre Path utilise la variable $PSHOME qui spécifie le répertoire PowerShell. Le reste du chemin inclut le sous-répertoire en-US et spécifie chaque *.txt fichier dans le répertoire. Les Get-ChildItem objets sont stockés dans la $A variable. La $A variable est envoyée au pipeline à l’applet Select-String de commande. Select-String utilise le paramètre Pattern pour rechercher chaque fichier pour la chaîne PowerShell.

À partir de la ligne de commande PowerShell, le contenu de la $A variable s’affiche. Il existe une ligne qui contient deux occurrences de la chaîne PowerShell.

La $A.Matches propriété répertorie la première occurrence du modèle PowerShell sur chaque ligne.

La $A.Matches.Length propriété compte la première occurrence du modèle PowerShell sur chaque ligne.

La $B variable utilise les mêmes applets de commande et Select-String les mêmesGet-ChildItem, mais ajoute le paramètre AllMatches. AllMatches recherche chaque occurrence du modèle PowerShell sur chaque ligne. Les objets stockés dans les $A variables et $B les variables sont identiques.

La $B.Matches.Length propriété augmente, car pour chaque ligne, chaque occurrence du modèle PowerShell est comptabilisée.

Exemple 10 : convertir des objets de pipeline en chaînes à l’aide de « Out-String »

Le ToString() résultat de l’objet redirigé n’est pas la même représentation sous forme de chaîne riche produite par le système de mise en forme de PowerShell. Vous devrez peut-être diriger d’abord les objets Out-String .

Piping pour Out-String convertir la sortie mise en forme en un seul objet de chaîne à plusieurs lignes. Cela signifie qu’en cas Select-String de recherche d’une correspondance, elle génère l’ensemble de la chaîne multiligne.

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 pour Out-String -Stream convertir la sortie mise en forme en plusieurs objets de chaîne à une seule ligne. Cela signifie qu’en cas Select-String de recherche d’une correspondance, elle génère uniquement la ligne correspondante.

Paramètres

-AllMatches

Indique que l’applet de commande recherche plusieurs correspondances dans chaque ligne de texte. Sans ce paramètre, Select-String recherche uniquement la première correspondance dans chaque ligne de texte.

Lorsque Select-String plusieurs correspondances sont trouvées dans une ligne de texte, elle émet toujours un seul objet MatchInfo pour la ligne, mais la propriété Matches de l’objet contient toutes les correspondances.

Remarque

Ce paramètre est ignoré lorsqu’il est utilisé en combinaison avec le paramètre SimpleMatch . Si vous souhaitez renvoyer toutes les correspondances et le modèle que vous recherchez contient des caractères d’expression régulière, vous devez échapper à ces caractères plutôt que d’utiliser SimpleMatch. Pour plus d’informations sur l’échappement des expressions régulières, consultez about_Regular_Expressions .

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-CaseSensitive

Indique que les correspondances d’applet de commande respectent la casse. Par défaut, les correspondances ne respectent pas la casse.

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Context

Capture le nombre spécifié de lignes avant et après la ligne qui correspond au modèle.

Si vous entrez un nombre comme valeur de ce paramètre, ce nombre détermine le nombre de lignes capturées avant et après la correspondance. Si vous entrez deux nombres comme valeur, le premier nombre détermine le nombre de lignes avant la correspondance, et le deuxième nombre détermine le nombre de lignes après la correspondance. Par exemple : -Context 2,3.

Dans l’affichage par défaut, les lignes avec une correspondance sont indiquées par un crochet à angle droit (>) (ASCII 62) dans la première colonne de l’affichage. Les lignes non marquées constituent le contexte.

Le paramètre Context ne modifie pas le nombre d’objets générés par Select-String. Select-String génère un objet MatchInfo pour chaque correspondance. Le contexte est stocké sous la forme d’un tableau de chaînes dans la propriété Context de l’objet.

Lorsque la sortie d’une Select-String commande est envoyée au pipeline vers une autre Select-String commande, la commande de réception recherche uniquement le texte de la ligne correspondante. La ligne mise en correspondance est la valeur de la propriété Line de l’objet MatchInfo , et non du texte dans les lignes de contexte. Par conséquent, le paramètre Context n’est pas valide sur la commande de Select-String réception.

Lorsque le contexte inclut une correspondance, l’objet MatchInfo pour chaque correspondance inclut toutes les lignes de contexte, mais les lignes qui se chevauchent n’apparaissent qu’une seule fois dans l’affichage.

Type:Int32[]
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Culture

Spécifie un nom de culture correspondant au modèle spécifié. Le paramètre Culture doit être utilisé avec le paramètre SimpleMatch . Le comportement par défaut utilise la culture de l’espace d’exécution PowerShell actuel (session).

Pour obtenir la liste de toutes les cultures prises en charge, utilisez la Get-Culture -ListAvailable commande.

De plus, ce paramètre accepte les arguments suivants :

  • CurrentCulture, c’est la valeur par défaut ;
  • Ordinal, qui est une comparaison binaire non linguistique ;
  • Invariant, il s’agit d’une comparaison indépendante de la culture.

Avec Select-String -Culture Ordinal -CaseSensitive -SimpleMatch la commande, vous bénéficiez d’une comparaison binaire la plus rapide.

Le paramètre Culture utilise la saisie semi-automatique de tabulation pour parcourir la liste des arguments qui spécifient les cultures disponibles. Pour répertorier tous les arguments disponibles, utilisez la commande suivante :

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

Pour plus d’informations sur la propriété .NET CultureInfo.Name, consultez CultureInfo.Name.

Le paramètre Culture a été introduit dans PowerShell 7.

Type:String
Position:Named
Valeur par défaut:Culture of the current PowerShell session
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Encoding

Spécifie le type de codage du fichier cible. La valeur par défaut est utf8NoBOM.

Les valeurs acceptables pour ce paramètre sont les suivantes :

  • ascii: utilise l’encodage pour le jeu de caractères ASCII (7 bits).
  • ansi: utilise l’encodage pour la page de codes ANSI de la culture actuelle. Cette option a été ajoutée dans PowerShell 7.4.
  • bigendianunicode: encode au format UTF-16 à l’aide de l’ordre d’octet big-endian.
  • bigendianutf32: encode au format UTF-32 à l’aide de l’ordre d’octet big-endian.
  • oem: utilise l’encodage par défaut pour les programmes MS-DOS et console.
  • unicode: encode au format UTF-16 à l’aide de l’ordre d’octet little-endian.
  • utf7: encode au format UTF-7.
  • utf8: encode au format UTF-8.
  • utf8BOM: encode au format UTF-8 avec marque d’ordre d’octet (BOM)
  • utf8NoBOM: encode au format UTF-8 sans marque d’ordre d’octet (BOM)
  • utf32: encode au format UTF-32.

À compter de PowerShell 6.2, le paramètre d’encodage autorise également les ID numériques des pages de codes inscrites (par -Encoding 1251exemple) ou des noms de chaînes de pages de codes inscrites (par exemple -Encoding "windows-1251"). Pour plus d’informations, consultez la documentation .NET pour Encoding.CodePage.

À compter de PowerShell 7.4, vous pouvez utiliser la Ansi valeur du paramètre Encodage pour passer l’ID numérique de la page de codes ANSI de la culture actuelle sans avoir à le spécifier manuellement.

Remarque

UTF-7* n’est plus recommandé à utiliser. À partir de PowerShell 7.1, un avertissement est écrit si vous spécifiez utf7 le paramètre Encodage .

Type:Encoding
Valeurs acceptées:ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32
Position:Named
Valeur par défaut:UTF8NoBOM
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Exclude

Exclure les éléments spécifiés. La valeur de ce paramètre qualifie le paramètre Path . Entrez un élément ou un modèle de chemin d’accès, tel que *.txt. Les caractères génériques sont autorisés.

Type:String[]
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:True

-Include

Inclut les éléments spécifiés. La valeur de ce paramètre qualifie le paramètre Path . Entrez un élément ou un modèle de chemin d’accès, tel que *.txt. Les caractères génériques sont autorisés.

Type:String[]
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:True

-InputObject

Spécifie le texte à rechercher. Entrez une variable contenant le texte, ou tapez une commande ou une expression qui obtient le texte.

L’utilisation du paramètre InputObject n’est pas la même que l’envoi de chaînes vers le bas du pipeline Select-String.

Lorsque vous dirigez plusieurs chaînes vers l’applet Select-String de commande, elle recherche le texte spécifié dans chaque chaîne et retourne chaque chaîne qui contient le texte de recherche.

Lorsque vous utilisez le paramètre InputObject pour envoyer une collection de chaînes, Select-String traite la collection comme une chaîne combinée unique. Select-String retourne les chaînes sous forme d’unité s’il trouve le texte de recherche dans n’importe quelle chaîne.

Les objets FileInfo sont traités comme un chemin d’accès à un fichier. Lorsque des chemins de fichier sont spécifiés, Select-String recherche le contenu du fichier, et non la ToString() représentation de l’objet.

Type:PSObject
Position:Named
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-List

Seule la première instance du texte correspondant est retournée à partir de chaque fichier d’entrée. Il s’agit du moyen le plus efficace de récupérer une liste de fichiers dont le contenu correspond à l’expression régulière.

Par défaut, Select-String retourne un objet MatchInfo pour chaque correspondance trouvée.

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-LiteralPath

Spécifie le chemin d'accès aux fichiers où effectuer la recherche. La valeur du paramètre LiteralPath est utilisée exactement comme elle est typée. Aucun caractère n’est interprété en tant que caractère générique. Si le chemin d’accès inclut des caractères d’échappement, mettez-le entre des guillemets simples. Les guillemets simples indiquent à PowerShell de ne pas interpréter de caractères comme séquences d’échappement. Pour plus d’informations, consultez about_Quoting_Rules.

Type:String[]
Alias:PSPath, LP
Position:Named
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

-NoEmphasis

Par défaut, Select-String met en surbrillance la chaîne qui correspond au modèle que vous avez recherché avec le paramètre Pattern . Le paramètre NoEmphasis désactive la mise en surbrillance.

L’accentuation utilise des couleurs négatives basées sur vos couleurs d’arrière-plan et de texte PowerShell. Par exemple, si vos couleurs PowerShell sont un arrière-plan noir avec du texte blanc. L’accent est un arrière-plan blanc avec du texte noir.

Ce paramètre a été introduit dans PowerShell 7.

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-NotMatch

Le paramètre NotMatch recherche du texte qui ne correspond pas au modèle spécifié.

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Path

Spécifie le chemin d’accès aux fichiers à rechercher. Les caractères génériques sont autorisés. L'emplacement par défaut est le répertoire local.

Spécifiez des fichiers dans le répertoire, tels que log1.txt, *.docou *.*. Si vous spécifiez seulement un répertoire, la commande échoue.

Type:String[]
Position:1
Valeur par défaut:Local directory
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:True

-Pattern

Spécifie le texte à rechercher sur chaque ligne. La valeur du modèle est traitée comme une expression régulière.

Pour en savoir plus sur les expressions régulières, consultez about_Regular_Expressions.

Type:String[]
Position:0
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Quiet

Indique que l’applet de commande retourne une réponse simple au lieu d’un objet MatchInfo . La valeur retournée est $true si le modèle est trouvé ou $null si le modèle est introuvable.

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Raw

Provoque la sortie de l’applet de commande uniquement des chaînes correspondantes, plutôt que des objets MatchInfo . Il s’agit du comportement le plus similaire aux commandes Grep ou Windows findstr.exe Unix.

Ce paramètre a été introduit dans PowerShell 7.

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-SimpleMatch

Indique que l’applet de commande utilise une correspondance simple plutôt qu’une correspondance d’expression régulière. Dans une correspondance simple, Select-String recherche l’entrée du texte dans le paramètre Pattern . Elle n’interprète pas la valeur du paramètre Pattern en tant qu’instruction d’expression régulière.

En outre, lorsque SimpleMatch est utilisé, la propriété Matches de l’objet MatchInfo retourné est vide.

Remarque

Lorsque ce paramètre est utilisé avec le paramètre AllMatches, allMatches est ignoré.

Type:SwitchParameter
Position:Named
Valeur par défaut:False
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

Entrées

PSObject

Vous pouvez diriger n’importe quel objet qui a une ToString() méthode vers cette applet de commande.

Sorties

MatchInfo

Par défaut, cette applet de commande retourne un objet MatchInfo pour chaque correspondance trouvée.

Boolean

Lorsque vous utilisez le paramètre Quiet , cette applet de commande retourne une valeur booléenne indiquant si le modèle a été trouvé.

String

Lorsque vous utilisez le paramètre Raw , cette applet de commande retourne un ensemble d’objets String qui correspondent au modèle.

Notes

PowerShell inclut les alias suivants pour Select-String:

  • Toutes les plateformes :
    • sls

Select-String est similaire à grep celui d’UNIX ou findstr.exe de Windows.

L’alias sls de l’applet Select-String de commande a été introduit dans PowerShell 3.0.

Remarque

Selon les verbes approuvés pour les commandes PowerShell, le préfixe d’alias officiel pour Select-* les applets de commande n’est scpas sl. Par conséquent, l’alias approprié pour Select-String doit être scs, et non sls. Il s’agit d’une exception à cette règle.

Lors de la canalisation d’objets vers Select-String:

  • Les objets FileInfo sont traités comme un chemin d’accès à un fichier. Lorsque des chemins de fichier sont spécifiés, Select-String recherche le contenu du fichier, et non la ToString() représentation de l’objet.
  • Le ToString() résultat de l’objet redirigé n’est pas la même représentation sous forme de chaîne riche produite par le système de mise en forme de PowerShell. Vous devrez peut-être diriger d’abord les objets Out-String . Pour plus d’informations, consultez l’exemple 10.

Pour utiliser Select-String, tapez le texte que vous souhaitez rechercher comme valeur du paramètre Pattern . Pour spécifier le texte à rechercher, utilisez les critères suivants :

  • Tapez le texte dans une chaîne entre guillemets, puis dirigez-le vers Select-String.
  • Stockez une chaîne de texte dans une variable, puis spécifiez la variable comme valeur du paramètre InputObject .
  • Si le texte est stocké dans des fichiers, utilisez le paramètre Path pour spécifier le chemin d’accès aux fichiers.

Par défaut, Select-String interprète la valeur du paramètre Pattern en tant qu’expression régulière. Pour plus d’informations, consultez about_Regular_Expressions. Vous pouvez utiliser le paramètre SimpleMatch pour remplacer la correspondance d’expression régulière. Le paramètre SimpleMatch recherche des instances de la valeur du paramètre Pattern dans l’entrée.

La sortie par défaut est Select-String un objet MatchInfo , qui inclut des informations détaillées sur les correspondances. Les informations contenues dans l’objet sont utiles lorsque vous recherchez du texte dans des fichiers, car les objets MatchInfo ont des propriétés telles que Filename et Line. Lorsque l’entrée ne provient pas du fichier, la valeur de ces paramètres est InputStream.

Si vous n’avez pas besoin des informations dans l’objet MatchInfo , utilisez le paramètre Quiet . Le paramètre Quiet retourne une valeur booléenne (True ou False) pour indiquer s’il a trouvé une correspondance, au lieu d’un objet MatchInfo .

Lors de la correspondance d’expressions, Select-String utilise la culture actuelle définie pour le système. Pour rechercher la culture actuelle, utilisez l’applet de Get-Culture commande.

Pour rechercher les propriétés d’un objet MatchInfo , tapez la commande suivante :

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