86 lines
3.5 KiB
PowerShell
86 lines
3.5 KiB
PowerShell
[Console]::OutputEncoding = [Text.Encoding]::UTF8
|
|
$ErrorActionPreference = 'SilentlyContinue'
|
|
|
|
function Section($title) {
|
|
Write-Host ''
|
|
Write-Host ('=' * 8) $title ('=' * 8) -ForegroundColor Green
|
|
}
|
|
|
|
Section "WinRM Network Diagnostics"
|
|
|
|
# Check if WinRM is running
|
|
$winrmService = Get-Service WinRM
|
|
Write-Host "WinRM Service Status: $($winrmService.Status)" -ForegroundColor $(if($winrmService.Status -eq 'Running') {'Green'} else {'Red'})
|
|
|
|
# Check WinRM listeners
|
|
Section "WinRM Listeners"
|
|
try {
|
|
$listeners = winrm enumerate winrm/config/listener
|
|
Write-Host $listeners
|
|
} catch {
|
|
Write-Host "Failed to enumerate listeners: $_" -ForegroundColor Red
|
|
}
|
|
|
|
# Check firewall rules specifically for WinRM
|
|
Section "Firewall Rules for WinRM"
|
|
$winrmRules = Get-NetFirewallRule | Where-Object { $_.DisplayName -like "*WinRM*" -or $_.DisplayName -like "*Windows Remote Management*" }
|
|
foreach ($rule in $winrmRules) {
|
|
$ruleDetails = Get-NetFirewallPortFilter -AssociatedNetFirewallRule $rule -ErrorAction SilentlyContinue
|
|
$color = if ($rule.Enabled) { 'Green' } else { 'Red' }
|
|
Write-Host "$($rule.DisplayName): $($rule.Enabled) [$($rule.Direction)] Port: $($ruleDetails.LocalPort)" -ForegroundColor $color
|
|
}
|
|
|
|
# Check network connections on port 5985
|
|
Section "Network Connections on Port 5985"
|
|
$connections = Get-NetTCPConnection -LocalPort 5985 -ErrorAction SilentlyContinue
|
|
if ($connections) {
|
|
$connections | Select-Object LocalAddress, LocalPort, State, OwningProcess | Format-Table -AutoSize
|
|
} else {
|
|
Write-Host "No connections found on port 5985" -ForegroundColor Red
|
|
}
|
|
|
|
# Check listening ports
|
|
Section "Listening Ports (including 5985)"
|
|
Get-NetTCPConnection -State Listen | Where-Object { $_.LocalPort -in @(22, 5985, 5986) } |
|
|
Select-Object LocalAddress, LocalPort, State, OwningProcess | Format-Table -AutoSize
|
|
|
|
# Get detailed WinRM configuration
|
|
Section "Detailed WinRM Configuration"
|
|
try {
|
|
Write-Host "Service Configuration:" -ForegroundColor Yellow
|
|
winrm get winrm/config/service
|
|
|
|
Write-Host "`nListener Configuration:" -ForegroundColor Yellow
|
|
winrm get winrm/config/listener?Address=*+Transport=HTTP
|
|
|
|
} catch {
|
|
Write-Host "Failed to get WinRM config: $_" -ForegroundColor Red
|
|
}
|
|
|
|
# Test local WinRM connection
|
|
Section "Local WinRM Connection Test"
|
|
try {
|
|
$testResult = Test-WSMan -ComputerName localhost -ErrorAction Stop
|
|
Write-Host "✅ Local WinRM test successful" -ForegroundColor Green
|
|
} catch {
|
|
Write-Host "❌ Local WinRM test failed: $_" -ForegroundColor Red
|
|
}
|
|
|
|
# Network interface information
|
|
Section "Network Interfaces"
|
|
Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.InterfaceAlias -notmatch 'Loopback' } |
|
|
Select-Object InterfaceAlias, IPAddress, PrefixLength | Format-Table -AutoSize
|
|
|
|
# Proposed fixes
|
|
Section "Recommended Fixes"
|
|
Write-Host "1. Enable WinRM firewall rules:" -ForegroundColor Yellow
|
|
Write-Host " Enable-NetFirewallRule -DisplayName 'Windows Remote Management (HTTP-In)'" -ForegroundColor White
|
|
|
|
Write-Host "`n2. Set AllowUnencrypted to true:" -ForegroundColor Yellow
|
|
Write-Host " winrm set winrm/config/service '@{AllowUnencrypted=`"true`"}'" -ForegroundColor White
|
|
|
|
Write-Host "`n3. Ensure listener is on all interfaces:" -ForegroundColor Yellow
|
|
Write-Host " winrm set winrm/config/listener?Address=*+Transport=HTTP '@{Enabled=`"true`"}'" -ForegroundColor White
|
|
|
|
Write-Host "`n4. Test from remote after fixes:" -ForegroundColor Yellow
|
|
Write-Host " Test-WSMan -ComputerName 192.168.88.108 -UseSSL:`$false" -ForegroundColor White |