Introduction
Dans ce tutoriel, nous allons voir comment administrer à distance un serveur Windows en PowerShell (Powershell remoting) avec PSSession.
PSSession est le préfixe de plusieurs commande Powershell qui permet la connexion et la gestion de celle-ci.
L’ensemble des commandes de ce tutoriel sont à faire avec une invite de commande PowerShell
Prérequis
Sur le serveur où l’on souhaite se connecter, la gestion à distances doit être activée.
Par défaut, la gestion à distance est activée par défaut depuis Windows 2012.
Se connecter à un serveur
Avec l’utilisateur en cours :
Enter-PSSession -ComputerName LAB-FIC
En spécifiant l’utilisateur :
Enter-PSSession -ComputerName LAB-FIC -Credential LABAdministrateur
Une fenêtre d’identification s’ouvre où il faut indiquer le mot de passe du compte passé en paramètre.
Une fois connecté dans la console s’affiche en premier le nom du serveur entre crochets.
[LAB-FIC]: PS C:Usersadministrateur.LABDocuments>
Maintenant l’ensemble des commandes DOS et PowerShell seront exécutées sur le serveur distant.
Exemple : afficher les rôles et fonctionnalités installés.
[LAB-FIC]: PS C:Usersadministrateur.LABDocuments> Get-WindowsFeature | Where Installed Display Name Name Install State ------------ ---- ------------- [X] Services de fichiers et de stockage FileAndStorage-Services Installed [X] Services de fichiers et iSCSI File-Services Installed [X] Serveur de fichiers FS-FileServer Installed [X] Services de stockage Storage-Services Installed [X] Fonctionnalités de .NET Framework 4.6 NET-Framework-45-Fea... Installed [X] .NET Framework 4.6 NET-Framework-45-Core Installed [X] Services WCF NET-WCF-Services45 Installed [X] Partage de port TCP NET-WCF-TCP-PortShar... Installed [X] Fonctionnalités de Windows Defender Windows-Defender-Fea... Installed [X] Windows Defender Windows-Defender Installed [X] Interface utilisateur graphique de Windows D... Windows-Defender-Gui Installed [X] Prise en charge WoW64 WoW64-Support Installed [X] Support de partage de fichiers SMB 1.0/CIFS FS-SMB1 Installed [X] Windows PowerShell PowerShellRoot Installed [X] Windows PowerShell 5.1 PowerShell Installed [X] Windows PowerShell ISE PowerShell-ISE Installed
Déconnexion
Pour se déconnecter du serveur, entrer la commande suivante :
Exit-PSSession
Listes des commandes *-PSSession
Depuis une invite de commande entrer :
Get-Command -Noun PSSession CommandType Name Version Source ----------- ---- ------- ------ Cmdlet Connect-PSSession 3.0.0.0 Microsoft.PowerShell.Core Cmdlet Disconnect-PSSession 3.0.0.0 Microsoft.PowerShell.Core Cmdlet Enter-PSSession 3.0.0.0 Microsoft.PowerShell.Core Cmdlet Exit-PSSession 3.0.0.0 Microsoft.PowerShell.Core Cmdlet Export-PSSession 3.1.0.0 Microsoft.PowerShell.Utility Cmdlet Get-PSSession 3.0.0.0 Microsoft.PowerShell.Core Cmdlet Import-PSSession 3.1.0.0 Microsoft.PowerShell.Utility Cmdlet New-PSSession 3.0.0.0 Microsoft.PowerShell.Core Cmdlet Receive-PSSession 3.0.0.0 Microsoft.PowerShell.Core Cmdlet Remove-PSSession 3.0.0.0 Microsoft.PowerShell.Core
Afficher l’aide :
Get-Help *-PSSession ame Category Module Synopsis ---- -------- ------ -------- Connect-PSSession Cmdlet Microsoft.PowerShell.Core Reconnects to disconnected sessions. Disconnect-PSSession Cmdlet Microsoft.PowerShell.Core Disconnects from a session. Enter-PSSession Cmdlet Microsoft.PowerShell.Core Starts an interactive session with a remote co... Exit-PSSession Cmdlet Microsoft.PowerShell.Core Ends an interactive session with a remote comp... Get-PSSession Cmdlet Microsoft.PowerShell.Core Gets the Windows PowerShell sessions on local ... New-PSSession Cmdlet Microsoft.PowerShell.Core Creates a persistent connection to a local or ... Receive-PSSession Cmdlet Microsoft.PowerShell.Core Gets results of commands in disconnected sessi... Remove-PSSession Cmdlet Microsoft.PowerShell.Core Closes one or more Windows PowerShell sessions... Export-PSSession Cmdlet Microsoft.PowerShell.U... Imports commands from another session and save... Import-PSSession Cmdlet Microsoft.PowerShell.U... Imports commands from another session into the...
Dépannage
Vérifier le service WinRM
Get-Service WinRM Status Name DisplayName ------ ---- ----------- Running WinRM Gestion à distance de Windows (Gest...
Activer la gestion à distance en PowerShell
Enable-PSRemoting
Afficher la configuration WinRM
winrm get winrm/config Config MaxEnvelopeSizekb = 500 MaxTimeoutms = 60000 MaxBatchItems = 32000 MaxProviderRequests = 4294967295 Client NetworkDelayms = 5000 URLPrefix = wsman AllowUnencrypted = false Auth Basic = true Digest = true Kerberos = true Negotiate = true Certificate = true CredSSP = false DefaultPorts HTTP = 5985 HTTPS = 5986 TrustedHosts = * Service RootSDDL = O:NSG:BAD:P(A;;GA;;;BA)(A;;GR;;;IU)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD) MaxConcurrentOperations = 4294967295 MaxConcurrentOperationsPerUser = 1500 EnumerationTimeoutms = 240000 MaxConnections = 300 MaxPacketRetrievalTimeSeconds = 120 AllowUnencrypted = false Auth Basic = false Kerberos = true Negotiate = true Certificate = false CredSSP = false CbtHardeningLevel = Relaxed DefaultPorts HTTP = 5985 HTTPS = 5986 IPv4Filter = * IPv6Filter = * EnableCompatibilityHttpListener = false EnableCompatibilityHttpsListener = false CertificateThumbprint AllowRemoteAccess = true Winrs AllowRemoteShellAccess = true IdleTimeout = 7200000 MaxConcurrentUsers = 2147483647 MaxShellRunTime = 2147483647 MaxProcessesPerShell = 2147483647 MaxMemoryPerShellMB = 1024 MaxShellsPerUser = 2147483647
Autoriser l’administration depuis n’importe quel hôte distant
Set-Item WSMan:localhostClientTrustedHosts *
Cette commande est utile pour les hôtes hors domaine, car même si la gestion à distance est activée, aucun hôte n’est autorisé à se connecter.