Select-String
Recherche du texte dans des chaînes et des fichiers.
Syntax
Select-String
[-Culture <String>]
[-Pattern] <String[]>
[-Path] <String[]>
[-SimpleMatch]
[-CaseSensitive]
[-Quiet]
[-List]
[-NoEmphasis]
[-Include <String[]>]
[-Exclude <String[]>]
[-NotMatch]
[-AllMatches]
[-Encoding <Encoding>]
[-Context <Int32[]>]
[<CommonParameters>]
Select-String
[-Culture <String>]
-InputObject <PSObject>
[-Pattern] <String[]>
-Raw
[-SimpleMatch]
[-CaseSensitive]
[-List]
[-NoEmphasis]
[-Include <String[]>]
[-Exclude <String[]>]
[-NotMatch]
[-AllMatches]
[-Encoding <Encoding>]
[-Context <Int32[]>]
[<CommonParameters>]
Select-String
[-Culture <String>]
-InputObject <PSObject>
[-Pattern] <String[]>
[-SimpleMatch]
[-CaseSensitive]
[-Quiet]
[-List]
[-NoEmphasis]
[-Include <String[]>]
[-Exclude <String[]>]
[-NotMatch]
[-AllMatches]
[-Encoding <Encoding>]
[-Context <Int32[]>]
[<CommonParameters>]
Select-String
[-Culture <String>]
[-Pattern] <String[]>
[-Path] <String[]>
-Raw
[-SimpleMatch]
[-CaseSensitive]
[-List]
[-NoEmphasis]
[-Include <String[]>]
[-Exclude <String[]>]
[-NotMatch]
[-AllMatches]
[-Encoding <Encoding>]
[-Context <Int32[]>]
[<CommonParameters>]
Select-String
[-Culture <String>]
[-Pattern] <String[]>
-LiteralPath <String[]>
-Raw
[-SimpleMatch]
[-CaseSensitive]
[-List]
[-NoEmphasis]
[-Include <String[]>]
[-Exclude <String[]>]
[-NotMatch]
[-AllMatches]
[-Encoding <Encoding>]
[-Context <Int32[]>]
[<CommonParameters>]
Select-String
[-Culture <String>]
[-Pattern] <String[]>
-LiteralPath <String[]>
[-SimpleMatch]
[-CaseSensitive]
[-Quiet]
[-List]
[-NoEmphasis]
[-Include <String[]>]
[-Exclude <String[]>]
[-NotMatch]
[-AllMatches]
[-Encoding <Encoding>]
[-Context <Int32[]>]
[<CommonParameters>]
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 et des fichiers d’entrée. Vous pouvez utiliser Select-String
comme grep
dans UNIX ou findstr.exe
dans 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, il affiche le nom de fichier, le numéro de ligne et tout le texte de la ligne contenant la correspondance. Vous pouvez diriger Select-String
pour rechercher 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 s’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 que 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 nomenclature, il suppose que l’encodage est UTF8.
Exemples
Exemple 1 : Rechercher une correspondance respectant la casse
Cet exemple montre comment respecter la casse du texte qui a été envoyé dans le pipeline vers l’applet de Select-String
commande.
'Hello', 'HELLO' | Select-String -Pattern 'HELLO' -CaseSensitive -SimpleMatch
Les chaînes de texte Hello et HELLO sont envoyées vers le bas du 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 qui 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 dans 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 de Out-File
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 l’astérisque (*
) générique pour rechercher tous les fichiers du répertoire actif avec l’extension .txt
de nom de fichier . Le paramètre Pattern spécifie le texte correspondant à 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 trouver 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 d’accès 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 de fermeture 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 dans 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 la Select-String
fonction affiche la sortie dans la console PowerShell.
Exemple 5 : Recherche pour 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 de l’application. Le paramètre MaxEvents obtient les 50 événements les plus récents à partir du journal. Le contenu du journal est stocké dans la variable nommée $Events
.
La $Events
variable est envoyée vers le bas du pipeline à l’applet de Select-String
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 définit la chaîne Failed et recherche des 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 une chaîne de texte spécifique dans un répertoire et tous ses sous-répertoires.
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.
Notes
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 dans le 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 fichierCommand.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 dans le 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 fichierCommand.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 (>
). 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 trouve chaque modèle correspondant 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 d’accès 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 vers le bas du pipeline à l’applet de Select-String
commande. Select-String
utilise le paramètre Pattern pour rechercher dans chaque fichier la chaîne PowerShell.
À partir de la ligne de commande PowerShell, le contenu de la $A
variable s’affiche. Une ligne 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 Get-ChildItem
applets de commande et Select-String
, 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
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 de chaîne riche produite par le système de mise en forme de PowerShell. Par conséquent, vous devrez peut-être diriger d’abord les objets vers Out-String
.
Le piping vers Out-String
convertit la sortie mise en forme en un seul objet de chaîne multiligne. Cela signifie que lorsque Select-String
trouve une correspondance, il génère la chaîne multiligne entière.
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
Le piping vers Out-String -Stream
convertit la sortie mise en forme en plusieurs objets de chaîne d’une seule ligne. Cela signifie que lorsque Select-String
trouve 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
trouve plusieurs correspondances dans une ligne de texte, il n’émet toujours qu’un seul objet MatchInfo pour la ligne, mais la propriété Matches de l’objet contient toutes les correspondances.
Notes
Ce paramètre est ignoré lorsqu’il est utilisé en association avec le paramètre SimpleMatch . Si vous souhaitez retourner toutes les correspondances et que le modèle que vous recherchez contient des caractères d’expression régulière, vous devez placer ces caractères dans une séquence d’échappement au lieu d’utiliser SimpleMatch. Pour plus d’informations sur l’échappement des expressions régulières, consultez about_Regular_Expressions .
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CaseSensitive
Indique que les correspondances de l’applet de commande respectent la casse. Par défaut, les correspondances ne respectent pas la casse.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 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 dans le pipeline vers une autre Select-String
commande, la commande de réception recherche uniquement le texte de la ligne correspondante. La ligne correspondante 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 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Culture
Spécifie un nom de culture qui correspond 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’instance d’exécution PowerShell actuelle (session).
Pour obtenir la liste de toutes les cultures prises en charge, utilisez la Get-Culture -ListAvailable
commande .
En outre, ce paramètre accepte les arguments suivants :
- CurrentCulture, c’est la valeur par défaut ;
- Ordinal, c’est-à-dire la comparaison binaire non linguistique ;
- Invariant, c’est-à-dire 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 par tabulation pour faire défiler 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 |
Default value: | Culture of the current PowerShell session |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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).bigendianunicode
: encode au format UTF-16 à l’aide de l’ordre d’octets 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’octets 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 Encodage autorise également les ID numériques des pages de code inscrites (comme -Encoding 1251
) ou les noms de chaîne des pages de code inscrites (comme -Encoding "windows-1251"
). Pour plus d’informations, consultez la documentation .NET pour Encoding.CodePage.
Notes
Il n’est plus recommandé d’utiliser UTF-7*. À partir de PowerShell 7.1, un avertissement est écrit si vous spécifiez utf7
pour le paramètre Encodage .
Type: | Encoding |
Accepted values: | ASCII, BigEndianUnicode, BigEndianUTF32, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32 |
Position: | Named |
Default value: | UTF8NoBOM |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Exclude
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 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 chose 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 en tant qu’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 d’accès 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 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-List
Seul le premier instance de texte correspondant est retourné à 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 qu’il trouve.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 il est tapé. 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 des séquences d’échappement. Pour plus d’informations, consultez about_Quoting_Rules.
Type: | String[] |
Aliases: | PSPath, LP |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | 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 en fonction de 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 mis sur un arrière-plan blanc avec du texte noir.
Ce paramètre a été introduit dans PowerShell 7.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NotMatch
Le paramètre NotMatch recherche le texte qui ne correspond pas au modèle spécifié.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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
, *.doc
ou *.*
. Si vous spécifiez seulement un répertoire, la commande échoue.
Type: | String[] |
Position: | 1 |
Default value: | Local directory |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-Pattern
Spécifie le texte à rechercher sur chaque ligne. La valeur de 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 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Quiet
Indique que l’applet de commande retourne une valeur booléenne (True ou False), au lieu d’un objet MatchInfo . La valeur est True si le modèle est trouvé ; sinon, la valeur est False.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Raw
Entraîne la sortie de l’applet de commande uniquement les chaînes correspondantes, plutôt que les objets MatchInfo . Il s’agit des résultats 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 |
Default value: | False |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | 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 dans l’entrée le texte dans le paramètre Pattern . Il n’interprète pas la valeur du paramètre Pattern comme une instruction d’expression régulière.
En outre, lorsque SimpleMatch est utilisé, la propriété Matches de l’objet MatchInfo retourné est vide.
Notes
Lorsque ce paramètre est utilisé avec le paramètre AllMatches , le paramètre AllMatches est ignoré.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entrées
Vous pouvez diriger n’importe quel objet qui a une ToString()
méthode vers Select-String
.
Sorties
Microsoft.PowerShell.Commands.MatchInfo, System.Boolean, System.String
Par défaut, la sortie est un ensemble d’objets MatchInfo avec un pour chaque correspondance trouvée. Si vous utilisez le paramètre Quiet , la sortie est une valeur booléenne indiquant si le modèle a été trouvé. Si vous utilisez le paramètre Raw , la sortie est un ensemble d’objets String qui correspondent au modèle.
Notes
Select-String
est similaire à grep
dans UNIX ou findstr.exe
dans Windows.
L’alias sls
de l’applet Select-String
de commande a été introduit dans PowerShell 3.0.
Notes
Selon Les verbes approuvés pour les commandes PowerShell, le préfixe d’alias officiel pour Select-*
les applets de commande est sc
, et non 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 du piping d’objets vers Select-String
:
- Les objets FileInfo sont traités comme un chemin d’accès à un fichier. Lorsque des chemins d’accès de fichier sont spécifiés,
Select-String
recherche le contenu du fichier, et non laToString()
représentation de l’objet. - Le
ToString()
résultat de l’objet redirigé n’est pas la même représentation de chaîne riche produite par le système de mise en forme de PowerShell. Par conséquent, vous devrez peut-être diriger d’abord les objets versOut-String
. Pour plus d’informations, consultez l’exemple 10.
Pour utiliser Select-String
, tapez le texte que vous souhaitez trouver 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 comme une 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 de Select-String
est 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 renvoie 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 *