Méthode et opérateur de remplacement PowerShell : syntaxe, exemples

8 juin 2021 14361 Vues Comment utiliser PowerShell pour obtenir un fichier et certaines informations sur la version de l'application

PowerShell Remplacer peut être utilisé pour remplacer des caractères, des chaînes, des textes ou des caractères spéciaux. PowerShell a un Remplacer Méthode et un Remplacer Opérateur .

Cette zone S vous apprend à utiliser PowerShell Remplacer Méthode et Remplacer Opérateur pour effectuer diverses tâches de remplacement.

Le guide comporte 2 sections. La première section porte sur Remplacer Méthode avec plusieurs exemples.

Ensuite, dans la deuxième section, vous apprendrez à utiliser le Remplacer Opérateur , également avec plusieurs exemples.

Parcourir les sujets de publication

Comment utiliser la méthode PowerShell Replace avec plusieurs exemples

Comment utiliser la méthode PowerShell Replace avec plusieurs exemples

Comme je l'ai mentionné dans l'introduction, cette section vous apprend à utiliser le Remplacer la méthode . La section commence par la syntaxe de la Remplacer la méthode .

Syntaxe de la méthode de remplacement PowerShell

Les syntaxes du Remplacer Méthode est…

|__+_| |__+_|

Les syntaxes font la même chose. La seule raison pour laquelle j'ai les deux est d'illustrer que vous pouvez remplacer des caractères ou des chaînes.

La première syntaxe montre comment utiliser la méthode PowerShell Replace pour remplacer des caractères. Cependant, la deuxième syntaxe montre comment remplacer une chaîne.

Comment répertorier les méthodes dans un objet PowerShell

J'ai déjà mentionné que PowerShell a une méthode et un opérateur de remplacement. Vous pouvez répertorier toutes les méthodes disponibles dans un objet PowerShell en renvoyant l'objet vers le Get-Membre commander.

Par exemple, pour trouver les méthodes disponibles dans cet objet, exécutez la commande ci-dessous :

|__+_|

La commande renvoie un tas de méthodes. j'ai souligné le Remplacer Méthode dans la capture d'écran ci-dessous.

De plus, il existe une autre façon d'exécuter le Get-Membre commander. Au lieu de renverser l'objet dans le Get-Membre commande, vous pouvez spécifier l'objet dans le paramètre InputObject de Get-Membre .

Voici un exemple…

|__+_|

Le résultat répertorie également un certain nombre de méthodes disponibles dans l'objet - y compris le Remplacer Méthode .

Comment utiliser la méthode PowerShell Replace avec plusieurs exemples

Une dernière chose avant de passer à la sous-section suivante, si vous regardez la colonne Description du résultat des deux dernières commandes, elle a la syntaxe de la méthode.

Ceci est très utile car il vous indique comment utiliser la méthode.

Comment utiliser la méthode PowerShell Replace pour remplacer un caractère dans une chaîne

J'ai mentionné dans la sous-section Syntaxe que vous pouvez remplacer des caractères ou des chaînes. Pour vous donner un exemple simple, je veux remplacer V dans Victor par la lettre minuscule v.

Voici la commande…

|__+_|

Et voici le résultat en PowerShell…

Les valeurs de la méthode de remplacement PowerShell sont sensibles à la casse. Les valeurs vérifieront la casse exacte des caractères. Par exemple, si j'ai essayé de remplacer le v minuscule dans Victor et d'essayer de le remplacer par A, la commande renverra le même résultat.

Voici la commande que j'ai décrite dans la note ci-dessus…

|__+_|

Lorsque j'ai exécuté cette commande dans PowerShell, elle a renvoyé Victor, l'objet d'origine car il n'y a pas de v minuscule dans la chaîne, Victor !

Dans le PowerShell Remplacer Opérateur section de ce guide, vous apprendrez que, contrairement à la méthode de remplacement, la Remplacer Opérateur est insensible à la casse.

Comment utiliser la méthode PowerShell Replace pour remplacer plusieurs chaînes dans un fichier texte

Suite aux réflexions de ce guide, vous pouvez également remplacer plusieurs chaînes dans un fichier texte.

Dans cet exemple, j'ai un fichier texte avec des noms de serveurs. Voici une capture d'écran du fichier texte.

Comment utiliser la méthode PowerShell Replace pour remplacer plusieurs chaînes dans un fichier texte

Je souhaite remplacer le nom du serveur, ITGServer1 par ITGServer4. De plus, je souhaite remplacer ITGServer2 par ITGServer5 et ITGServer3 par ITGServer6.

Voici le script qui fera la tâche…

|__+_|

La première ligne du script utilise Obtenir du contenu pour importer le contenu du fichier texte dans PowerShell. Ensuite, dirigez le résultat vers Pour chaque objet .

Enfin, au sein du Pour chaque objet boucle, PowerShell utilise la variable athématique, $_ créée pour chaque objet par Pour chaque objet pour remplacer les éléments comme spécifié.

J'ai enchaîné la méthode PowerShell Replace. Sinon, le script produit un résultat indésirable.

Pour exécuter le script, copiez-le dans PowerShell ISE et exécutez-le.

Dans la dernière version du script, PowerShell affiche le résultat dans la console. Tu peux écrire la sortie en renvoyant les commandes existantes vers le Contenu de l'ensemble commander.

Voici le script mis à jour. Pour éviter les erreurs d'écriture, j'ai enregistré la sortie de la version précédente du script dans une variable. Ensuite, j'ai canalisé la variable dans Contenu de l'ensemble commander.

|__+_|

Voici la sortie du nouveau fichier texte…

Comment utiliser la méthode PowerShell Replace pour remplacer plusieurs chaînes dans un fichier texte

Comment utiliser la méthode PowerShell Replace pour remplacer plusieurs caractères

Le traitement du remplacement de plusieurs chaînes dans un fichier texte est le même que le remplacement de plusieurs caractères dans une chaîne. À partir de l'exemple de la dernière section, il est préférable d'enchaîner la méthode de remplacement.

Dans cet exemple, je veux remplacer le M dans Method par T. De plus, je veux remplacer d par D.

Voici la commande…

|__+_|

Et le résultat dans PowerShell…

Comment utiliser la méthode de remplacement PowerShell dans le pipeline

Dans la dernière section, j'ai exécuté cette commande sans diriger la chaîne, Method vers le Remplacer Méthode:

|__+_|

Je peux exécuter la même commande, mais cette fois, dirigez la chaîne vers la méthode de remplacement. Cependant, une fois que je l'ai transmis à un pipeline, je dois appeler la chaîne avec la variable automatique du pipeline, $_.

La commande devra être modifiée comme indiqué ci-dessous :

|__+_|

Comme vous pouvez le voir sur la capture d'écran ci-dessous, la dernière commande produit le même résultat que la commande de la dernière sous-section…

Comment utiliser la méthode de remplacement PowerShell dans le pipeline

Comment utiliser la méthode PowerShell Replace pour remplacer toutes les chaînes après un caractère

Dans l'exemple de cette sous-section, je souhaite tout remplacer après la dernière barre oblique inverse, dans cette chaîne - c:programfiles vversion8uninstall.exe - par une chaîne vide.

Ces deux commandes feront l'affaire.

|__+_|

La première commande enregistre la chaîne dans une variable. Ensuite, la deuxième commande utilise la méthode PowerShell Replace pour remplacer tout après la chaîne par un espace vide.

En effet, tout ce qui suit est supprimé. Voici le résultat des commandes..

Comment utiliser la méthode PowerShell Replace pour remplacer une chaîne dans un fichier texte

j'ai un fichier texte qui s'appelle Processfile1.txt . Le fichier texte a une valeur, AgentSvc que je souhaite remplacer par AgentSvc_New.

Comment utiliser la méthode PowerShell Replace pour remplacer une chaîne dans un fichier texte

Les commandes ci-dessous termineront la tâche…

|__+_|

La première commande enregistre le chemin du fichier dans une variable. De plus, la deuxième commande enregistre la valeur que je veux trouver dans une autre variable.

De plus, la troisième ligne enregistre la chaîne de remplacement dans une autre variable. Enfin, dans la dernière commande, j'appelle la méthode Replace dans le résultat de la Obtenir du contenu commander.

Ensuite, dans la méthode Replace, j'utilise la valeur enregistrée dans les variables $find et $replace. Ensuite, redirigez la sortie vers Contenu de l'ensemble qui met à jour le fichier texte avec les nouvelles valeurs.

Après avoir exécuté les commandes, voici la nouvelle valeur dans le fichier texte.

Comment utiliser la méthode PowerShell Replace pour remplacer les guillemets doubles par des guillemets simples

Dans cette sous-section, je souhaite remplacer les guillemets doubles dans 234″20.1.2021 avec des guillemets simples. Voici les commandes…

|__+_|

La première ligne enregistre la chaîne, 234″20.1.2021 dans une variable. Ensuite, dans la deuxième ligne, j'ai utilisé la méthode PowerShell Replace pour remplacer les guillemets doubles dans la chaîne par des guillemets simples.

L'astuce réside dans l'application et l'utilisation des règles de cotation PowerShell. PowerShell utilise à la fois des guillemets simples et doubles pour spécifier une chaîne littérale.

Dans cet exemple, nous voulons remplacer les guillemets doubles, , dans une chaîne par des guillemets simples, . Cependant, si vous vous souvenez, dans PowerShell Replace Method, vous avez également besoin de guillemets pour spécifier la valeur que vous souhaitez remplacer et la nouvelle valeur.

Ainsi, pour spécifier la valeur actuelle (les guillemets doubles) dans la commande Remplacer, nous enveloppons le guillemet double dans des guillemets simples - ''.

De plus, pour spécifier la nouvelle valeur (les guillemets simples), vous les placez entre guillemets doubles - .

De plus, en raison de la présence de guillemets doubles dans la chaîne d'origine, 234″20.1.2021 , pour enregistrer la chaîne dans une variable, j'ai dû envelopper la chaîne entre guillemets simples.

Revenons aux commandes…

|__+_|

Voici le résultat en PowerShell…

Comment utiliser la méthode PowerShell Replace pour remplacer les guillemets doubles par des guillemets simples

Aussi simple que puisse paraître cet exemple, si vous ne comprenez pas les règles de citation de PowerShell, vous aurez du mal à faire en sorte que PowerShell accomplisse cette tâche !

Comment utiliser la méthode PowerShell Replace pour remplacer la correspondance exacte

Cette section propose un autre exemple de méthode de remplacement PowerShell. Cette fois, je veux vous apprendre à remplacer une correspondance exacte dans une chaîne.

L'exemple de cette section provient de ce stackoverflow.com fil. L'utilisateur qui a posté la question veut remplacer le thé dans cette chaîne, j'ai apporté du thé pour mon équipe avec du café.

Voici la commande qui fait le travail…

|__+_|

Et voici le résultat de la commande dans PowerShell…

Comment utiliser la méthode PowerShell Replace pour remplacer la barre oblique inverse ()

Dans cette sous-section, je remplacerai la seule barre oblique inverse, () dans cette chaîne, 23420.1.2021 avec double barre oblique inverse, (\). Voici la commande…

|__+_|

Le résultat dans PowerShell…

Comment utiliser la méthode PowerShell Replace pour remplacer la barre oblique inverse ()

Comme vous le verrez dans la section PowerShell Replace Operator de ce guide, remplacer une barre oblique inversée par Replace Operator n'est pas aussi simple.

Comment remplacer les caractères de nom de fichier non valides dans PowerShell

Le système d'exploitation Windows contient certains caractères qui ne peuvent pas être utilisés pour nommer des fichiers ou des dossiers. Ces caractères sont généralement appelés caractères de nom de fichier non valides.

Si vous essayez de créer un nom de fichier avec l'un des caractères, vous recevrez une erreur.

Ainsi, si vous écrivez un script PowerShell qui utilise une sortie pour créer un nom de fichier mais que ces sorties contiennent des caractères de nom de fichier non valides, vous devez supprimer ces caractères.

Le script décrit dans cette sous-section n'utilise pas la méthode PowerShell Replace. Cependant, j'ai décidé de l'inclure car je pense qu'il résout un problème unique auquel la plupart des administrateurs système peuvent être confrontés.

Passant à autre chose, j'ai eu l'exemple dont je parlerai bientôt à partir de ce Stackoverflow.com question. L'utilisateur qui a posé la question souhaite supprimer les caractères non valides d'une chaîne avant d'utiliser la chaîne pour créer un fichier.

De plus, si la chaîne contient des espaces, l'utilisateur souhaite conserver les espaces dans le nom de fichier.

J'ai jeté un œil aux solutions préférées par différents utilisateurs. Celui avec la meilleure solution a été posté par Jean Longmuir .

Dans l'exemple de John, il souhaite supprimer tous les caractères de nom de fichier non valides dans la chaîne 'abc* def.txt'. Cependant, comme l'a demandé l'auteur de la question d'origine, il souhaite conserver les espaces dans la chaîne.

Voici le script de John…

|__+_|

Dans la première commande, il enregistre la chaîne dans une variable. Puis, dans la première partie de la deuxième commande (avant le pipeline), il convertit le $ na me variable dans un type de données [char].

Le type de données [char] est un caractère Unicode 16 bits.

Dans la deuxième partie de la commande, John dirige la sortie du type de données [char] converti vers une commande Where-Object. Dans le bloc de script Where-Object, il appelle le GetinvalidFileNameChars() Méthode de la Classe de chemin , [IO.Path] .

Ensuite, indique à PowerShell de renvoyer uniquement les valeurs non contenues dans le GetinvalidFileNameChars() Méthode.

le GetinvalidFileNameChars() La méthode répertorie tous les caractères de nom de fichier non valides.

Enfin, une fois les caractères de nom de fichier non valides supprimés, il utilise PowerShell Join pour transformer tous les caractères en une chaîne.

Le résultat final est… Les caractères spéciaux (caractères de nom de fichier non valides) ont disparu, mais la chaîne est renvoyée avec les espaces !

Pour le rendre facile à utiliser, et basé sur le script original posté par le Stackoverflow.com auteur de la question, j'ai décidé de transformer le script de John en une fonction PowerShell.

Voici la fonction PowerShell, Remove-InvalidFileNameChars.

|__+_|

Comment utiliser PowerShell Replace Operator avec plusieurs exemples

Comment utiliser PowerShell Replace Operator avec plusieurs exemples

Dans la première section de ce guide, j'ai couvert différents exemples de PowerShell Replace Method. Dans cette section, je vais me concentrer sur PowerShell Replace Operator.

La section commence par discuter de la syntaxe de PowerShell Replace Operator.

Syntaxe de l'opérateur de remplacement PowerShell

La syntaxe de PowerShell Replace Operator est…

|__+_| |__+_|

Une différence claire entre une méthode PowerShell et un opérateur est la façon dont ils sont utilisés. Dans une méthode, vous placez un point (.) à côté de l'objet, suivi du nom de la méthode et des crochets ().

Au contraire, pour un opérateur, vous ajoutez un espace après l'objet PowerShell, suivi de – et du nom si l'opérateur.

Ainsi, dans les exemples qui suivent, au lieu d'utiliser .Remplacer() , je vais utiliser -Remplacer !

Comment utiliser la méthode PowerShell Replace pour opérateur un caractère dans une chaîne

Pour remplacer le caractère i par I dans la chaîne, Victor, je vais utiliser la commande ci-dessous…

|__+_|

Le résultat dans PowerShell…

Contrairement à la méthode de remplacement PowerShell qui est sensible à la casse, l'opérateur de remplacement PowerShell ne l'est pas. Ainsi, la commande ci-dessous produira le même résultat que la commande précédente…

|__+_|

Cette fois, j'ai utilisé un I majuscule du côté de la valeur de Remplacer opérateur. Notez qu'il n'y a pas de I majuscule dans la chaîne, Victor.

Ainsi, si vous écrivez un script PowerShell qui doit remplacer les caractères supérieurs et inférieurs, utilisez l'opérateur de remplacement au lieu de la méthode de remplacement.

Comment utiliser la méthode PowerShell Replace pour remplacer plusieurs chaînes dans un fichier texte

Dans la section Remplacer la méthode, j'ai donné un exemple où j'ai remplacé les noms de serveur dans ce fichier texte.

Comment utiliser la méthode PowerShell Replace pour remplacer plusieurs chaînes dans un fichier texte

Je souhaite remplacer le nom du serveur, ITGServer1 par ITGServer4. De plus, je souhaite remplacer ITGServer2 par ITGServer5 et ITGServer3 par ITGServer6.

Voici la version de l'opérateur de remplacement du script utilisé dans l'exemple de la méthode de remplacement…

|__+_| Comme nous l'avons fait dans l'exemple Replace Method, la partie Replace Operator du dernier script est chaînée.

Comment utiliser PowerShell Replace Operator pour remplacer les chaînes et les caractères sensibles à la casse

À divers moments de ce guide, j'ai laissé entendre que la méthode de remplacement PowerShell est sensible à la casse. Cependant, PowerShell Replace Operator ne l'est pas.

Dans cette section, je veux illustrer avec un exemple.

Par exemple, cette commande ne remplacera PAS R car la méthode de remplacement est sensible à la casse.

|__+_|

Cependant, cette commande remplacera R car Remplacer l'opérateur n'est PAS sensible à la casse par défaut

|__+_|

Comment utiliser l'opérateur de remplacement PowerShell pour remplacer la barre oblique inverse ()

Dans la première section de ce guide, j'ai utilisé cette commande PowerShell pour remplacer la seule barre oblique inverse, () dans cette chaîne, 23420.1.2021 , avec double antislash, (\)…

|__+_|

Comme vous pouvez le voir, j'ai simplement utilisé la seule barre oblique inverse dans la méthode de remplacement sans aucun problème.

Cependant, si je transforme la dernière commande en version Remplacer l'opérateur, je reçois un message d'erreur. Voici la version Remplacer l'opérateur de la commande :

|__+_|

Si j'exécute la commande dans PowerShell, je recevrai un message d'erreur…

La raison de cette erreur est que dans PowerShell, est traité comme un modèle d'expression régulière. Pour surmonter ce problème, j'ai besoin d'ajouter une deuxième barre oblique inverse dans .

Cela fera apparaître la barre oblique inverse unique dans , comme double, \. Cependant, la deuxième barre oblique inverse indique à PowerShell de ne pas traiter comme un modèle d'expression régulière.

Donc, la commande sera maintenant ..

|__+_|

Maintenant, la commande fonctionne comme un charme !

C'est tout - un guide de remplacement PowerShell complet et remanié! J'espère que vous l'avez trouvé utile?

Si vous l'avez trouvé utile, merci de voter Oui à la question Was this post Helpful ci-dessous.

Alternativement, vous pouvez poser une question, laisser un commentaire ou fournir plus de commentaires avec le formulaire Laisser une réponse qui se trouve à la fin de cette page.

Enfin, pour plus de zones S techniques PowerShell, visitez notre page de guide pratique Windows PowerShell. Vous pouvez également trouver notre page Travail à domicile très utile.

Références et lectures complémentaires

  1. À propos des méthodes
  2. À propos de l'opérateur
  3. about_Quoting_Rules
  4. Guide pratique : définir les types de données PowerShell
  5. Classe de chemin
  6. Comment extraire une sous-chaîne Powershell d'une chaîne
  7. Powershell si sinon expliqué : syntaxe et exemples