Exécuter à distance un script ou une commande sur plusieurs PCs dont les noms figurent dans un fichier CSV, à raison de 1 par Ligne (marche aussi avec du TXT…)
foreach ($Computer in Get-Content C:\temp\ClientFix.csv) {Invoke-Command -ComputerName $Computer -ScriptBlock {{COMMANDE}}
On prends le fichier C:\temp\Clients.csv et on le lit avec Get-content.
On annote ligne par ligne la valeur lue dans $computer
avec le foreach on fait la boucle pour répéter l’opération jusqu’à la fin du fichier.
et avec {Invoke-Command -ComputerName $Computer -ScriptBlock {COMMANDE}}, on exécute la COMMANDE (Invoke-command) sur le client distant (-computername) actuellement contenu dans la variable $computer. Dans le script ci dessus, les caractères { …. } servent à délimiter une action groupée (le lancement de la commande sur chacun des client) alors que les (….) servent à délimiter une condition qui dure et se répète tant que foreach ne finit pas.
Simple et efficace!
un bon exemple, mon script de rafraichissement des actions du client SCCM disponible sur la galerie Technet Script Center,ici : https://gallery.technet.microsoft.com/Remote-SCCM-Client-Actions-1afc136c
Un petit exemple simple de la facilité qu’apporte Power Shell dans les taches d’administration récurrentes
bon Scripting et bon lundi!
Pierre.