Hello, je partage avec vous quelques commandes/scripts Windows PowerShell que j’ai trouvé un peu partout pour optimiser un peu votre temps de travail. N’hésitez pas à partager avec moi vos scripts, vos commandes, vos astuces…etc, en commentaire.
Quelques liens sympa :
- Galerie Microsoft Script : microsoft.com/scriptcenter/
- Awesome-PowerShell : janikvonrotz/awesome-powershell
- PowerShell Scripts : lazywinadmin/PowerShell
- PowerShell xExchange : PowerShell/xExchange
- PowerShell Scripts : scriptrunner/ActionPacks
- PowerShell Scripts : nickrod518/PowerShell-Scripts
- PowerShell AD Sysadmin : a118n/poweradmin
- PowerShell Gallery : powershellgallery.com/
- Posh GUI : poshgui.com/
Remarque : merci de tester les scripts dans un environnement de test avant de passer à la PROD.
Windows PowerShell Version
Je suis sous Windows 10 en version 5.
Pour afficher la version PowerShell :
PS C:\Users\pixelabs#> $PSVersionTable Name Value ---- ----- PSVersion 5.1.15063.1387 PSEdition Desktop PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} BuildVersion 10.0.15063.1387 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1
Afficher la stratégie d’exécution :
PS C:\Users\pixelabs#> Get-ExecutionPolicy Unrestricted PS C:\Users\pixelabs>
Ou encore :
PS C:\Users\pixelabs#> Get-PSVersion Major Minor Build Revision ----- ----- ----- -------- 5 1 15063 1387 PS C:\Users\pixelabs>
Pour autoriser l’exécution des scripts :
PS C:\Users\pixelabs#> Set-ExecutionPolicy remotesigned
ou :
PS C:\Users\pixelabs#> Set-ExecutionPolicy unrestricted
PowerShell > Windows Update
J’ai bricolé ce script en rassemblant des morceaux un peu partout. Il permet de vérifier si vos serveurs ont besoin d’un reboot après une mise à jour. Il peut ainsi redémarrer tous les serveurs ou les arrêter.
Télécharger : Check Update, Reboot, Shutdown
Avant de lancer le script, vous devez ajouter les informations de votre domaine. Ligne 86 :
$computernames = Get-ADComputer -SearchBase 'OU=SERVEURS,DC=PIXELABS,DC=LAN' -Filter '*' | Select -Exp Name | Sort-Object Name
- OU = unité d’organisation ou se trouve vos serveurs.
- DC = domaine AD. Exemple ici : pixelabs.lan
Sauvegarder et lancer le script :
- [0] = il vérifie si un serveur à besoin de redémarrer
- [1] = affiche la liste des serveurs trouvés
- [2] = il est possible d’éditer la liste des serveurs pour en rajouter/supprimer
- [3] = permet de vérifier l’état des serveurs (ping)
- [4] = pour arrêter ou redémarrer les serveurs présents dans la liste
![]() | ![]() |
PowerShell > PS2EXE
Permet de convertir un script PowerShell en fichier exécutable (.exe). Nous allons convertir le script ci-dessus (Check Update, Reboot, Shutdown).
L’ensemble des fichiers doivent être dans le même dossier. Placez donc vos scripts/icônes dans le dossier PS2EXE-GUI :
- Le script en question
- Une icône au format ICO (pixelabs.ico – 30x30px) l’icône c’est pour le fun bien entendu 😀
Ouvrir la console PowerShell et allez dans le répertoire PS2EXE-GUI.
Voici une petite astuce pour réaliser cette action rapidos :
- Ouvrir le répertoire PS2EXE-GUI
- Dans la barre d’adresse, effacez l’arborescence : C:\Users\pixelabs\Desktop\PS2GUI-GUI
![]() | ![]() |
- Tapez à la place : powershell.exe et Entrée
- Pour CMD, tapez simplement : cmd et Entrée
- La console PowerShell/CMD s’affiche et vous y êtes déjà dans le dossier PS2EXE-GUI. C’est cool hein…Windows nous cache des choses 🙂
Pour générer le fichier exécutable, tapez la commande suivante :
PS C:\Users\pixelabs\Desktop\PS2EXE-GUI#> .\ps2exe.ps1 .\check_update.ps1 check_update.exe -iconFile 'pixelabs.ico' -version '1.0' -noConfigfile PS2EXE-GUI v0.5.0.13 by Ingo Karstein, reworked and GUI support by Markus Scholtes You are using PowerShell 4.0 or above. Reading input file C:\Users\pixelabs\Desktop\PS2EXE-GUI\check_update.ps1 Compiling file... Output file C:\Users\pixelabs\Desktop\PS2EXE-GUI\check_update.exe written PS C:\Users\pixelabs\Desktop\PS2EXE-GUI>
Le fichier EXE est généré dans le même dossier :
Consulter le fichier Usage.txt pour voir d’autres paramètres.
PowerShell > Search By MAC
Chercher une réservation DHCP par adresse MAC :
PS C:\Users\pixelabs#> Invoke-Command -ComputerName serv-dhcp01,serv-dhcp02 -ScriptBlock {Get-DhcpServerv4Scope | Get-DhcpServerv4Lease -EA SilentlyContinue -ClientId "30055C576350"}
-ClientId "30055C576350"}
= adresse MAC
PowerShell > Réservation DHCP
Ajouter une réservation DHCP. Exemple pour une réservation d’imprimante. Ce qu’il nous faut :
- Serveurs DHCP
- L’étendue DHCP (-ScopeId)
- Nom de l’imprimante
- Adresse IP disponible
- Adresse MAC de l’imprimante (-ClientId)
- Description
PS C:\Users\pixelabs#> Invoke-Command -ComputerName serv-dhcp01,serv-dhcp02 -ScriptBlock {Add-DhcpServerv4Reservation -ScopeId 172.16.0.0 -Name IMP-CANON -IPAddress 172.16.1.11 -Description "CANON" -ClientId "80ce62594653"}
Pour supprimer une réservation :
- Serveur DHCP
- L’étendue DHCP (-ScopeId)
- Adresse MAC de l’imprimante (-ClientId)
PS C:\Users\pixelabs#> Invoke-Command -ComputerName serv-dhcp01,serv-dhcp02 -ScriptBlock {Remove-DhcpServerv4Reservation -ScopeId 172.16.0.0 -ClientId "80ce62594653"}
PowerShell > Ajout entrée DNS
Ajouter une entrée DNS de type AAA :
PS C:\Users\pixelabs#> Invoke-Command -ComputerName serv-dns01 -ScriptBlock {Add-DnsServerResourceRecordA -ZoneName pixelabs.lan -AllowUpdateAny -CreatePtr -Name IMP-CANON -IPv4Address 172.16.1.11}
PowerShell > Update VM-Tools Linux
Permet de mettre à jour les VMWare Tools automatiquement sur toutes vos VMs Linux sans redémarrer les serveurs et une fois terminé, une notification peut être envoyée sur votre boite mail.
Télécharger : Update VMWare Tools PowerShell Script
- Vous devez installer VMware vSphere PowerCLI
- Ligne 2 : ajouter l’adresse IP de votre vCenter
- Pour les notifications :
- Ligne 39 : votre adresse mail
- Ligne 42 : votre serveur SMTP
Copier le script dans Notepad++ par exemple pour voir les numéros de ligne.
#Enter your vCenter Host below $vcenter = "serv-vcenter" ################################ #Load the VMware Powershell Module Add-PSsnapin VMware.VimAutomation.Core #Connect to the vCenter server defined above. Ignore certificate errors Connect-VIServer $vcenter -wa 0 #Get the folder name from the user. Update all VM's if blank $folder = Read-Host "Quel dossier souhaitez-vous mettre à jour ? (laisser vide pour mettre à jour toutes les VMs)" #Check if the user entered a folder. If a folder was provided return only the VM's for that folder If($folder) { Write-Host "Mise à jour des VMs dans $folder" #Get all VM's for a specified folder and return only their names $virtualmachines = Get-Folder $folder | Get-VM | select -expandproperty Name } #Else if the user left the folder blank, get all VM's Else { Write-Host "Mise à jour de toutes VM's" #Get all VM's in the vCenter and return only their names $virtualmachines = Get-VM | select -expandproperty Name } #Perform the following for each VM returned ForEach ($vm in $virtualmachines) { Write-Host "Updating VMware Tools on $VM" #Update VMware tools without rebooting the VM Update-Tools $vm -NoReboot } #Send out an email with the names $emailFrom = "VMware vCenter" $emailTo = "pixelabs@pixelabs.fr" $subject = "VMWare Tools Updated Success ! :D" $message = "Mise à jour des VMTools OK ! " $smtpServer = "pixelabs.smtp.fr" $smtp = new-object Net.Mail.SmtpClient($smtpServer) $smtp.Send($emailFrom, $emailTo, $subject, $message, $Report)
PowerShell > Update VM-Tools Windows
Permet de mettre à jour les VMWare Tools automatiquement sur toutes vos VMs Windows sans redémarrer les serveurs.
- Vous devez installer VMware vSphere PowerCLI
- ‘VMware vCenter IP’ = adresse IP de votre serveur VMWare vCenter.
Get-VM -Location 'VMware vCenter IP' | Where-Object { $_.ExtensionData.Guest.ToolsVersionStatus -eq 'guestToolsNeedUpgrade' -and $_.PowerState -like 'PoweredOn' } | Get-VMGuest | Where-Object { $_.GuestFamily -like 'WindowsGuest'} | Update-Tools -NoReboot -RunAsync
PowerShell > Export File d’impression
Ce script permet d’exporter toutes vos files d’impressions (imprimantes) et les stocker dans un joli tableau Excel automatiquement :
- Un fichier texte avec tous vos serveurs d’impression (1 serveur par ligne)
- Microsoft Excel doit être installé
Pour le respect des droits d’auteur, voici le script original :
Télécharger : Get Printers PowerShell Script
Le script ne renvoie pas l’adresse IP de l’imprimante, mais le nom DNS. J’ai donc apporté une petite modification pour avoir l’adresse IP :
Télécharger : Exporter Imprimante PowerShell Script
Lancez simplement le script :
.\Get-Printer-pixelabs.ps1
Excel se lancement automatiquement et vous devez patienter :
PowerShell > Windows10Debloater
Supprimer toutes les applications pré-installés sous Windows 10. Windows PowerShell doit être installé. Disponible ici : Sycnex/Windows10Debloater
Liste des apps :
3DBuilder, Appconnector, Bing Finance, Bing News, Bing Sports, Bing Weather, Fresh Paint, Get started, Microsoft Office Hub, Microsoft Solitaire Collection, Microsoft Sticky Notes, OneNote, OneConnect, People, Skype for Desktop, Alarms, Camera, Maps, Phone, SoundRecorder, XboxApp, Zune Music, Zune Video, Windows communications apps, Minecraft, PowerBI, Network Speed Test, Phone, Messaging, Office Sway, OneConnect, Windows Feedback Hub, Bing Food And Drink, Bing Travel, Bing Health And Fitness, Windows Reading List, Twitter, Pandora, Flipboard, Shazam, CandyCrush, CandyCrushSoda, King apps, iHeartRadio, Netflix, DrawboardPDF, PicsArt-PhotoStudio, FarmVille 2 Country Escape, TuneInRadio, Asphalt8, NYT Crossword, CyberLink MediaSuite Essentials, Facebook, Royal Revolt 2, Caesars Slots Free Casino, March of Empires, Phototastic Collage, Autodesk SketchBook, Duolingo, EclipseManager, ActiproSoftware, BioEnrollment, Windows Feedback, Xbox Game CallableUI, Xbox Identity Provider, and ContactSupport.
Télécharger : Windows 10 Debloater
Lancer le script Windows10Debloater.ps1. Cliquez sur « Oui » puis confirmer encore en cliquant sur « Oui » :
![]() | ![]() |
La suppression de ces apps merdique commence automatiquement :
PowerShell > Ajouter un User AD
Créer un utilisateur AD rapidement. Ouvrir le script avec Windows PowerShell ISE :
Modifier la ligne selon votre configuration : $Path = "OU=Users,DC=PIXELABS,DC=LAN"
Import-Module ActiveDirectory $NewUser = Read-Host "Nom de session" $PrincipalName = Read-Host "Nom de session principal" $FirstName = Read-Host "votre nom" $LastName = Read-Host "votre prénom" $NewName = "$FirstName $LastName" $Path = "OU=Centreon,DC=PIXELABS,DC=LAN" New-ADUser -SamAccountName $NewUser -UserPrincipalName $PrincipalName -Name $NewName -GivenName $FirstName -Surname $LastName -Path $Path -AccountPassword (Read-Host "Password" -AsSecureString) -PasswordNeverExpires $true -Enabled $true
PowerShell > Export Server List
Exporter la liste de serveurs AD en filtrant par nom :
Remarque : la commande doit être exécutée sur un contrôleur de domaine.
PS C:\WINDOWS\system32> Get-ADComputer -Filter 'Name -Like "PC-PIX*"' -Property IPv4Address | FT DNSHostName,IPv4Address -A DNSHostName IPv4Address ----------- ----------- PC-PIXEL1.pixelabs.lan 172.16.4.124 PC-PIXEL2.pixelabs.lan 172.16.2.124 PC-PIXEL3.pixelabs.lan 172.16.3.124 PC-PIXEL4.pixelabs.lan 172.16.5.124 ...
PowerShell > Redémarrer un service (multiple serveurs)
Redémarrer un service Windows depuis une liste de serveur :
Exemple : Redémarrage du servie SNMP.
$servers = Get-Content “C:\list-servers.txt” Invoke-Command -ComputerName $servers {Restart-Service SNMP}
PowerShell >
…
bonjour,
Exporter Imprimante PowerShell Script j’ai essayer ce script marche pas
j’aimerai faire un script « Un fichier texte exporté via PowerShell listant l’ensemble des imprimantes installées et partagées avec tous les détails affichables »
Bonjour,
Le script fonctionne, il faut pas oublier d’ajouter les serveurs d’impressions dans le fichier : « C:\scripts\imp.txt »
$PrintServers = Get-Content "C:\scripts\imp.txt"