Table of Contents
Introduction
In this tutorial, we will see how to remotely administer a Windows server in PowerShell (Powershell remoting) with PSSession.
PSSession is the prefix of several Powershell commands that allow connection and management of it.
All the commands in this tutorial are to be done with a PowerShell command prompt
Prerequisites
On the server where you want to connect, remote management must be enabled.

By default, remote management is enabled by default since Windows 2012.
Connect to a server
With the current user:
Enter-PSSession -ComputerName LAB-FIC
By specifying the user:
Enter-PSSession -ComputerName LAB-FIC -Credential LABAdministrateur
An identification window opens where you must indicate the password of the account passed as a parameter.
Once logged into the console, the name of the server in square brackets appears first.
[LAB-FIC]: PS C:Usersadministrateur.LABDocuments>
Now all the DOS and PowerShell commands will be executed on the remote server.
Example: View installed roles and features.
[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 InstalledDisconnect
To disconnect from the server, enter the following command:
Exit-PSSession
Lists of commands * -PSSession
From a command prompt enter:
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
Show help:
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...
Troubleshooting
Check the WinRM service
Get-Service WinRM Status Name DisplayName ------ ---- ----------- Running WinRM Gestion à distance de Windows (Gest...
Enable remote management in PowerShell
Enable-PSRemoting
View WinRM configuration
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 = 2147483647Allow administration from any remote host
Set-Item WSMan:localhostClientTrustedHosts *
This command is useful for non-domain hosts because even if Remote Management is enabled, no hosts are allowed to connect.
