PowerShell
Définition
-
Une cmdlet a toujours la même syntaxe, ce qui rend son utilisation et sa compréhension relativement simple. Elle est composée d’un verbe + un nom (en anglais, Verb + Noun) séparé par un tiret.
-
Le préfixe de cmdlet est appelé verbe car il détermine l’action à effectuer sur les entités désignées dans la phrase. Les plus courants : Get, Set, New, Add, Remove, Start…
-
Les commandes comportent des paramètres obligatoires ou optionnels qui commencent toujours par un tiret avec plusieurs ou aucun argument(s).
-
PowerShell assure la compatibilité avec les commandes DOS par l’intermédiaire des alias ; la liste des alias est disponible en exécutant la commande
Get-Alias
. -
Par exemple, la cmdlet
Get-Service
respecte parfaitement ce format. Le verbe Get signifie « obtenir ». Le nom Service signifie un objet ou une liste d’objets représentant les services. Cela signifie en clair : « lister un ou plusieurs objets représentant les services ».
Vous pouvez également commenter plusieurs lignes en utilisant le bloc <# ... #>
Aide et premiers doigts sur la console !
Version de PowerShell installée :
PowerShell assure la compatibilité avec les commandes DOS par l’intermédiaire des alias :
Lister les commandes disponibles :
Lister les commande comprenant la chaine de caractère "user" :
Lister les services commençant par get :
Aide
Mettre à jour l'aide :
Obtenir des informations détaillées sur l’utilisation des cmdlets, comme le nom et la description de la syntaxe de la cmdlet :
Le paramètre -examples permet d’obtenir des exemples d’utilisation :
Pipe
En PowerShell, le concept de "pipe" est fondamental. Il permet de passer la sortie d'une commande comme entrée à une autre commande. Cela facilite la manipulation et le traitement des données de manière fluide et efficace.
Syntaxe de base :
Exemples d'utilisation :
Vous pouvez lister les fichiers dans un répertoire et afficher leurs détails en utilisant Get-ChildItem
et Format-List
:
Vous pouvez lister les fichiers et filtrer ceux qui ont une extension spécifique, par exemple .txt :
Vous pouvez lister les processus en cours d'exécution et filtrer ceux qui ont un nom spécifique, par exemple notepad :
Vous pouvez lister les services et arrêter un service spécifique, par exemple wuauserv (Windows Update) :Commandes utiles
Nommer la machine
Services
Get-Service
Restart-service UpdateServices
Stop-Service
Set-Service spooler –startuptype manual –passthru
Créer un compte utilisateur local
Windows Subsystem for Linux
Autoriser l'éxécution des scipts
Connexion ordinateur distant
Ouvrir une connexion distante interactive et non presistante : 1 session à la fois :
Ouvrir une connexion distante persistante, plusieurs sessions peuvent âtre créées. New-pssession
renvoie un objet de session PowerShell qui peut être utilisé pour exécuter des commandes ultérieures à distance :
Lister les sessions ouvertes :
Fermer la session concernée :winRM
Get-Service WinRM
Enable-PSRemoting
winrm get winrm/config
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "192.168.29.10"
Disques
Volume simple
Lister les disques :
Initialiser le disque 2 (GPT par défaut) "–PartitionStyle MBR" pour MBR :
Supprimer tous les volumes du disque 2 :
Créer la partition sur le disque 2 en utiliant tout l'espace disponible :
Formater en NTFS le volume concerné et lui attribuer une lettre de lecteur (ici E) :
Lister les volume :
List disks that are not system disks to avoid accidently formatting your system drive :
Lister le disque hors ligne et l’initialiser :
Miroir RAID 1
Tapez la cmdlet suivante pour obtenir la liste des disques disponibles :
Identifiez les numéros des deux disques que vous souhaitez utiliser pour le volume en miroir. Dans cet exemple, nous utiliserons les disques 1 et 2.
Identifiez les identifiants uniques des disques en utilisant la cmdlet
Créez un nouveau pool de stockage à l'aide de la cmdlet suivante :
New-StoragePool -FriendlyName "RAID1_pool" -StorageSubsystemFriendlyName "Windows Storage*" -PhysicalDisks (Get-PhysicalDisk -CanPool $True | Where-Object {$_.UniqueId -eq "Disk1UniqueID" -or $_.UniqueId -eq "Disk2UniqueID"})
Dans cette cmdlet, nous créons un nouveau pool de stockage nommé "RAID1_pool" à l'aide des deux disques sélectionnés. Remplacez "Disk1UniqueID" et "Disk2UniqueID" par les identifiants uniques des disques que vous avez sélectionnés.
Créez un volume stockage en miroir à l'aide de la cmdlet suivante :
New-Volume -StoragePoolFriendlyName "RAID1" -FriendlyName "RAID1_volume" -FileSystem CSVFS_NTFS -Size 512GB -ResiliencySettingName Mirror
Dans cette cmdlet, nous créons un nouveau volume en miroir nommé "RAID1_volume" à l'aide du pool de stockage "RAID1Pool". Nous définissons la taille du volume sur 512 Go et utilisons le système de fichiers NTFS. Le paramètre -ResiliencySettingName est défini sur Mirror pour créer un volume en miroir.
Vérifiez que le volume en miroir a été créé en utilisant la cmdlet suivante :
Dosssiers et fichiers
Lister le contenu du répertoire courant :
Changer de répertoire :
Créer un répertoire :
Créer un fichier :
Ecrire dans un fichier :
Lire un fichier :
Copier un fcihier dans un répertoire :
Copier le contenu d'un répertoire vers un répertoire de destination :
Copier un fichier vers un ordinateur distant, besoin d'ouvrir une session permanente (penser à fermer la session) :
$MASession = New-PSSession -ComputerName "Server01" -Credential "upn@domaine.fr"
Copy-Item "D:\Folder001\test.log" -Destination "C:\Folder001_Copy\" -ToSession $MASession
Remove-PSSession -Session $MASESSION
Lister les services et leurs status
Réseau
Lister les interfaces Ethernet :
Assigner une adresse Ip statique/fixe si vide :
Assigner une adresse Ip statique/fixe si déjà présente :
Activer le DHCP client :
Assigner le ou les adresses IP DNS :
Désactiver Pare-feu Windows avec netsh :
Activer Pare-feu Windows avec netsh :
Lister profil de connexion du réseau/pare-feu :
Changer de profil (Domain Authenticated / Private / Public) :
Lister les connexions TCP :
Lister les ports en écoute :
Tester un port en particulier (ici DNS) :
Lister les ports d'écoute en affichant l'IP locale et le nom du processus associés :
Get-NetTCPConnection -State Listen | Select-Object -Property LocalAddress,LocalPort,@{'Name' = 'ProcessName';'Expression'={(Get-Process -Id $\_.OwningProcess).Name}}
Lister les connexions TCP vers Internet :