# Set remote hostname variable
$remoteHost="HV01"
# Install psexec
Install-Module -Name psexec
# psexec \\$remoteHost reg add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v SessTimeout /t REG_DWORD /d 3600 /f
# Run this snippet to enable WinRM
psexec.exe \\$remoteHost -s C:\Windows\system32\winrm.cmd qc -quiet
Output of successful enabling WinRM
PS C:\Windows\system32> psexec.exe \\$remoteHost -s C:\Windows\system32\winrm.cmd qc -quiet
PsExec v2.2 - Execute processes remotely
Copyright (C) 2001-2016 Mark Russinovich
Sysinternals - www.sysinternals.com
WinRM service is already running on this machine.
WinRM is already set up for remote management on this computer.
C:\Windows\system32\winrm.cmd exited on HV01 with error code 0.
# Test to see if WinRM is indeed installed
test-netconnection $remoteHost -port 5985
# Enter PowerShell session on remote host
enter-pssession $remotehost
Scripted function
# This script will check whether the remote host is pingable, then it will set WinRM to be enabled using psexec
# Set remote hostname variable
$remoteHost="HV01"
function pingTest{
Param([string]$node)
try{
Return Test-Connection $node -Count 1 -Quiet -ea Stop;
}
catch{Return $False}
}
function enableRemoteWinRM{
Param([string]$computername)
if (pingTest $computername){
try{
$isWinRMEnabled = Test-WSMan $computername -ea Stop
}
catch{
$isWinRMEnabled=$False
Write-Host "WinRM has not been detected. Enabling now..."
continue;
}
if (!($isWinRMEnabled)){psexec.exe \\$computername -s C:\Windows\system32\winrm.cmd qc -quiet}
else{Write-Host "WinRM has been already enabled. No changes to WinRM have been made."}
}
Else{Write-Host "Unable to determine if WinRM is enabled on $computername`.`n Ping test has failed. Check if this computer is online and whether there's a firewall blocking of ICMP";}
}
enableRemoteWinRM $remoteHost
Categories: