Introduction à PowerShell à distance
Configuration requise
Tout d'abord, assurez-vous d'avoir deux machines virtuelles suivant les caractéristiques suivantes :
Première VM (Contrôleur de domaine) appelé DC-01 :
- OS : Windows Server 2022 ou 2025
- Rôle : Contrôleur de domaine (Active Directory Domain Services - AD DS)
- Configuration réseau : Adresse IP statique (ex. 192.168.1.10)
Deuxième VM (Serveur membre) appelé CLIENT-01 :
- OS : Windows Server 2022 ou 2025 ou Windows 10/11
- Rôle : Serveur membre du domaine
- Configuration réseau : Adresse IP statique (ex. 192.168.1.11)
Les instructions dans les notes Mise en place vous guideront pour les étapes de configuration.
Pourquoi cette configuration?
La connexion PowerShell distante (PowerShell Remoting) est une fonctionnalité puissante qui permet aux administrateurs système de gérer des ordinateurs distants via des sessions PowerShell. En configurant un contrôleur de domaine et un serveur membre, vous pouvez simuler un environnement d'entreprise typique où les administrateurs doivent souvent gérer plusieurs serveurs à distance.
Établir une connexion PowerShell distante entre les deux machines
Pour établir une connexion PowerShell distante entre les deux machines, suivez les étapes ci-dessous :
- Activer PowerShell Remoting sur les deux machines
Sur chaque machine, ouvrez PowerShell en tant qu'administrateur et exécutez la commande suivante :Enable-PSRemoting -Force - Configurer les règles de pare-feu
Assurez-vous que les règles de pare-feu permettent les connexions PowerShell distantes. Vous pouvez exécuter la commande suivante sur chaque machine :
Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP" -Enabled True
Connexion 1-à-1 avec PowerShell Remoting
Depuis DC-01, essayez de vous connecter à CLIENT-01 en utilisant la commande suivante :
Enter-PSSession -ComputerName CLIENT-01 -Credential (Get-Credential)
Vous serez invité à entrer les informations d'identification d'un utilisateur ayant les droits nécessaires sur CLIENT-01. Utilisez le compte Administrateur du domaine (votreNom-5r3\Administrateur).
Vous devriez maintenant être connecté à CLIENT-01 via PowerShell distante. Vous pouvez exécuter des commandes sur CLIENT-01 comme si vous étiez localement connecté.
Par exemple, naviguez jusque dans le répertoire du bureau de votre utilisateur sur CLIENT-01 (avec votre matricule) et créez un fichier texte test.txt avec la commande suivante :
cd C:\Users\votreNom-5r3\Desktop
New-Item -Name "test.txt" -ItemType "File"
Vous devriez voir le fichier test.txt apparaître sur le bureau de CLIENT-01.
Pour quitter la session distante, utilisez la commande :
Exit-PSSession
Connexion 1-à-plusieurs avec PowerShell Remoting
Il peut être utile de se connecter à plusieurs machines en même temps. Pour cela, vous pouvez utiliser la commande Invoke-Command avec une liste de noms d'ordinateurs.
$servers = @("CLIENT-01", "CLIENT-02", "CLIENT-03")
Invoke-Command -ComputerName $servers -ScriptBlock { Get-Process } -Credential (Get-Credential)
Cette commande exécute Get-Process sur chaque serveur de la liste $servers. Vous serez invité à entrer les informations d'identification pour chaque serveur.
Vous pouvez remplacer Get-Process par n'importe quelle autre commande ou script que vous souhaitez exécuter à distance.
Puisque vous avez un environnement de test avec un contrôleur de domaine et un seul serveur membre, nous allons exécuter la commande sur CLIENT-01 et localhost (le contrôleur de domaine lui-même) pour simuler une connexion à plusieurs machines.
$servers = @("CLIENT-01", "localhost")
Invoke-Command -ComputerName $servers -ScriptBlock { Get-Process } -Credential (Get-Credential)
Il serait également possible d'utiliser un fichier texte contenant la liste des serveurs, par exemple servers.txt, avec un serveur par ligne. Vous pouvez lire ce fichier et passer son contenu à Invoke-Command comme suit :
$servers = Get-Content -Path ".\servers.txt"
Invoke-Command -ComputerName $servers -ScriptBlock { Get-Process } -Credential (Get-Credential)
Pour tester cette commande, vous pouvez créer un fichier servers.txt avec le contenu suivant :
CLIENT-01
localhost