Meilleur auteur de réponses
Modifier un fichier texte en powershell

Question
-
Bonjour,
Je dois remplacer une valeur contenu dans un fichier texte par une autre valeur correspondant au trois derniers caractères du nom du PC.
Exemple : Si le nom du PC est PC-001, j'ai besoin de récupérer 001 pour l'insérer dans une ligne d'un fichier texte.
J'ai réussi à faire ce code :
$NAMECOMPUTER = hostname (get-content C:\Users\fabien\Documents\fichier.bat) | %{$_ -replace "=1","=$NAMECOMPUTER"} | set-content C:\Users\fabien\Documents\fichier.bat
Mais avec ce code je peux insérer tout le hostname et non les trois derniers caractères.
Pourriez-vous m'aider à écrire ce script ?
D'avance merci
Réponses
-
Un truc comme ça ?
$computer = $env:computername $texte=$computer.Substring($computer.Length-3,3) $nom=$texte if ($texte[0] -eq "0") { $nom=$texte.substring($texte.length-2,2) if ($texte[1] -eq "0") { $nom=$texte.substring($texte.length-1,1) } } (get-content C:\Users\fabien\Documents\fichier.bat) | %{$_ -replace "=1","=$nom"} | set-content C:\Users\fabien\Documents\fichier.bat
Merci de marquer comme reponses les interventions qui vous ont ete utile.
- Marqué comme réponse Fabien-VIRT jeudi 3 mai 2018 12:07
Toutes les réponses
-
Bonjour,
Vous pouvez utiliser la méthode substring
$NAMECOMPUTER = $env:computername $texte=$NAMECOMPUTER.Substring($NAMECOMPUTER.Length-3,3) (get-content C:\Users\fabien\Documents\fichier.bat) | %{$_ -replace "=1","=$NAMECOMPUTER"} | set-content C:\Users\fabien\Documents\fichier.bat
Merci de marquer comme reponses les interventions qui vous ont ete utile.
-
-
-
C'est normal c'est ma faute xD
Il faut dans la dernière ligne utiliser $texte et non plus $namecomputer :)
$NAMECOMPUTER = $env:computername $texte=$NAMECOMPUTER.Substring($NAMECOMPUTER.Length-3,3) (get-content C:\Users\fabien\Documents\fichier.bat) | %{$_ -replace "=1","=$texte"} | set-content C:\Users\fabien\Documents\fichier.bat
Merci de marquer comme reponses les interventions qui vous ont ete utile.
- Modifié matteu31400 jeudi 3 mai 2018 09:27
-
Impec !!
Et maintenant, j'essaie de supprimer les zéro s'ils sont devant une valeur positive.
En gros il faut que pour un Pc qui s'appelle PC-001 je ne conserve que le 1
Pour un PC qui s'appelle PC-020, je ne conserve que 20
Pour un PC qui s'appelle PC-120, je conserve 120
C'est possible ?
-
Un truc comme ça ?
$computer = $env:computername $texte=$computer.Substring($computer.Length-3,3) $nom=$texte if ($texte[0] -eq "0") { $nom=$texte.substring($texte.length-2,2) if ($texte[1] -eq "0") { $nom=$texte.substring($texte.length-1,1) } } (get-content C:\Users\fabien\Documents\fichier.bat) | %{$_ -replace "=1","=$nom"} | set-content C:\Users\fabien\Documents\fichier.bat
Merci de marquer comme reponses les interventions qui vous ont ete utile.
- Marqué comme réponse Fabien-VIRT jeudi 3 mai 2018 12:07
-