Test if powershell remoting is enabled Test if powershell remoting is enabled powershell powershell

Test if powershell remoting is enabled


You can use the Test-WSMan cmdlet to check whether the WinRM service is running on a remote computer.

[bool](Test-WSMan -ComputerName 'ComputerName' -ErrorAction SilentlyContinue)


at the risk of being off-topic ...

function server_available?( $_server_to_act_on ) {   if ( Test-Connection -ComputerName $_server_to_act_on -Count 1 -Quiet ) {     Write-Host "`nTest-Connection: $_server_to_act_on OK" -NoNewline     if ( [bool](Test-WSMan -ComputerName $_server_to_act_on -ErrorAction SilentlyContinue) ) {       Write-Host ", Test-WSMan: $_server_to_act_on OK" -NoNewline       if ( [bool](Invoke-Command -ComputerName $_server_to_act_on -ScriptBlock {"hello from $env:COMPUTERNAME"} -ErrorAction SilentlyContinue) ) {         Write-Host ", Invoke-Command: $_server_to_act_on OK" -NoNewline         return $true       }     }  }  return $false}


Working from Straffs code above, this is my working version of how to determine if PS Remoting is working on 1 or more machines. Save the code and put it in the same folder with a file named "PCList.txt" Run the script and it will display the status as each system in the list AND produce a new report each time you run it in .CSV format directly clickable into excel. Put one machine per line in the PCList.txt file. You must have local admin access to the remote machines for this to work, always "Run As Administrator"

function Test-CanRemoteSystetmRunPSCmd( $_server_to_act_on ) {  Write-host "`n`n$Counter of $Total - Testing System:`t$_server_to_act_on`n"  if ( Test-Connection -ComputerName $_server_to_act_on -Count 1 -Quiet )   {    Write-Host "`nTest-Connection: $_server_to_act_on OK, " -NoNewline    if ( [bool](Test-WSMan -ComputerName $_server_to_act_on -ErrorAction SilentlyContinue) )     {      Write-Host "Test-WSMan: $_server_to_act_on OK, " -NoNewline      if ( [bool](Invoke-Command -ComputerName $_server_to_act_on -ScriptBlock {"hello from $env:COMPUTERNAME"} -ErrorAction SilentlyContinue) )       {        Write-Host "Invoke-Command: $_server_to_act_on OK. `n"          return "$_server_to_act_on,SUCCESS"      }      Else      {        Return "$_server_to_act_on,FAILED Invoke-Command"        Continue       }    }    Else    {      Return "$_server_to_act_on,FAILED Test-WSMAN"      Continue     }  }  Else  {    Return "$_server_to_act_on,FAILED Test-Connection"    Continue   }  }Clear-Host# Intialze the report name  and header anchored in the current script folder $_NewRunTime    = Get-Date                                                              # Initialize the time of the script being run$_LastRunTime   = $_NewRunTime$_Year          = $_NewRunTime.Year$_Month         = $_NewRunTime.Month$_Day           = $_NewRunTime.Day$_Hour          = $_NewRunTime.Hour$_Min           = $_NewRunTime.Minute$_Sec           = $_NewRunTime.Second$_Report_DateTime_Header = "$_Year.$_Month.$_Day.$_Hour.$_Min.$_Sec"$_report_File = "$PSScriptRoot" + '\' + "$_Report_DateTime_Header"  + '_PSRemotingStatusReport.csv'$_ReportHeader = "Computer Name,PS Remoting Status,Test Time" Out-File -FilePath $_report_File -InputObject $_ReportHeader -Encoding UTF8  # Add a line to the report$PCList = Get-Content -Path "$PSScriptRoot\PCList.txt"$Total = $PCList.Count$Counter = 0ForEach ($PC in $PCList){  $Counter = $Counter + 1 $T = Measure-Command {$RemoteCommandCheck = Test-CanRemoteSystetmRunPSCmd $PC} $TestTimeTotal = $T.Totalseconds  If($RemoteCommandCheck -like "*Fail*")  {    Write-Host "$RemoteCommandCheck,$TestTimeTotal" -ForegroundColor Red -BackgroundColor Yellow  }  Else  {    Write-Host "$RemoteCommandCheck,$TestTimeTotal" -ForegroundColor White -BackgroundColor DarkGreen  }  $RemoteCommandCheck + ',' + $TestTimeTotal | Out-File -FilePath $_report_File -Encoding UTF8 -Append}