workgroup
Troubleshooting
Troubleshooting Guide for Workgroup Networks
This guide covers diagnosing and resolving common issues in Windows Server 2025 workgroup environments.
Diagnostic Tools Overview
Built-in Tools
| Tool | Purpose | Command |
|---|---|---|
| ping | Network connectivity | ping server01 |
| ipconfig | IP configuration | ipconfig /all |
| nslookup | DNS resolution | nslookup server01 |
| tracert | Network path | tracert server01 |
| netstat | Network connections | netstat -an |
| Test-NetConnection | PowerShell connectivity test | Test-NetConnection server01 -Port 445 |
| Get-NetAdapter | Network adapter info | Get-NetAdapter |
| Get-Service | Service status | Get-Service |
Useful PowerShell Commands
# Network
Test-Connection -ComputerName SERVER01 -Count 4
Test-NetConnection -ComputerName SERVER01 -Port 445
Get-NetIPConfiguration
Get-DnsClientServerAddress
Resolve-DnsName SERVER01
# Services
Get-Service | Where-Object Status -eq "Running"
Get-Service -Name "ServiceName" | Restart-Service
# Event Logs
Get-WinEvent -LogName System -MaxEvents 50
Get-WinEvent -LogName Application -MaxEvents 50
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4625} -MaxEvents 20
# Shares
Get-SmbShare
Get-SmbSession
Get-SmbOpenFile
# Users
Get-LocalUser
Get-LocalGroup
Get-LocalGroupMember -Group "Administrators"
Issue 1: Cannot Access Server Shares
Symptoms
- “Network path not found”
- “Access denied”
- “Cannot connect to server”
- Shares visible but can’t open
Diagnostic Steps
# Step 1: Test basic connectivity
ping SERVER01
ping 192.168.1.10
# Step 2: Test name resolution
nslookup SERVER01
Resolve-DnsName SERVER01
# Step 3: Test SMB port
Test-NetConnection -ComputerName SERVER01 -Port 445
# Step 4: List available shares
net view \\SERVER01
# Step 5: Check credentials
cmdkey /list
Solutions
Problem: Network Path Not Found
# Fix DNS - add static entry if DNS not working
Add-Content -Path "C:\Windows\System32\drivers\etc\hosts" -Value "192.168.1.10 SERVER01"
# Verify firewall allows SMB
Get-NetFirewallRule -DisplayGroup "File and Printer Sharing" | Select-Object Name, Enabled
# Enable file sharing firewall rules
Enable-NetFirewallRule -DisplayGroup "File and Printer Sharing"
Problem: Access Denied
# Clear cached credentials
net use * /delete /yes
cmdkey /delete:SERVER01
# Reconnect with explicit credentials
net use \\SERVER01\Share /user:SERVER01\username
# Verify user account exists on server (run on server)
Get-LocalUser -Name "username"
# Verify group membership (run on server)
Get-LocalGroupMember -Group "Users"
Problem: Shares Not Visible
# Check if shares exist (on server)
Get-SmbShare
# Check share permissions (on server)
Get-SmbShareAccess -Name "ShareName"
# Verify network discovery is enabled (on client)
Get-NetFirewallRule -DisplayGroup "Network Discovery" | Select-Object Name, Enabled
Enable-NetFirewallRule -DisplayGroup "Network Discovery"
Issue 2: DHCP Not Working
Symptoms
- Clients getting 169.254.x.x (APIPA) addresses
- No IP address assigned
- “Limited connectivity”
Diagnostic Steps
# On client
ipconfig /all
ipconfig /release
ipconfig /renew
# On server
Get-Service DHCPServer
Get-DhcpServerv4Scope
Get-DhcpServerv4ScopeStatistics
Get-WinEvent -LogName "Microsoft-Windows-Dhcp-Server/Operational" -MaxEvents 20
Solutions
Problem: DHCP Service Not Running
# Check and start service
Get-Service DHCPServer
Start-Service DHCPServer
Set-Service DHCPServer -StartupType Automatic
# Verify service is running
Get-Service DHCPServer
Problem: Scope Exhausted
# Check available addresses
Get-DhcpServerv4ScopeStatistics
# Expand scope
Set-DhcpServerv4Scope -ScopeId 192.168.1.0 -EndRange 192.168.1.240
# Or add exclusions to free up addresses
Get-DhcpServerv4Lease -ScopeId 192.168.1.0 | Where-Object LeaseState -eq "Inactive" | Remove-DhcpServerv4Lease
# Reduce lease time for faster turnover
Set-DhcpServerv4Scope -ScopeId 192.168.1.0 -LeaseDuration 1.00:00:00
Problem: Scope Not Active
# Activate scope
Set-DhcpServerv4Scope -ScopeId 192.168.1.0 -State Active
# Verify scope options
Get-DhcpServerv4OptionValue -ScopeId 192.168.1.0
Problem: Firewall Blocking DHCP
# Open DHCP ports
New-NetFirewallRule -DisplayName "DHCP Server" -Direction Inbound -Protocol UDP -LocalPort 67 -Action Allow
New-NetFirewallRule -DisplayName "DHCP Client" -Direction Inbound -Protocol UDP -LocalPort 68 -Action Allow
Issue 3: DNS Resolution Failures
Symptoms
- Can ping by IP but not by name
- “Server not found” errors
- Slow name resolution
Diagnostic Steps
# Test DNS resolution
nslookup SERVER01
nslookup SERVER01 192.168.1.10 # Query specific DNS server
Resolve-DnsName SERVER01
# Check DNS settings
Get-DnsClientServerAddress
ipconfig /all | findstr "DNS"
# Test DNS service (on server)
Get-Service DNS
Test-DnsServer -IPAddress 192.168.1.10
Solutions
Problem: Wrong DNS Server
# Set correct DNS servers
Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses 192.168.1.10, 8.8.8.8
# Flush DNS cache
Clear-DnsClientCache
ipconfig /flushdns
# Re-register DNS
ipconfig /registerdns
Problem: DNS Service Not Running
# Check and start DNS service
Get-Service DNS
Start-Service DNS
# Verify DNS is listening
Test-NetConnection -ComputerName localhost -Port 53
Problem: Missing DNS Records
# Add missing A record (on DNS server)
Add-DnsServerResourceRecordA -Name "SERVER01" -ZoneName "office.local" -IPv4Address "192.168.1.10"
# Add PTR record
Add-DnsServerResourceRecordPtr -Name "10" -ZoneName "1.168.192.in-addr.arpa" -PtrDomainName "SERVER01.office.local"
# Verify records
Get-DnsServerResourceRecord -ZoneName "office.local"
Problem: Forwarders Not Configured
# Add DNS forwarders
Add-DnsServerForwarder -IPAddress 8.8.8.8
Add-DnsServerForwarder -IPAddress 1.1.1.1
# Verify
Get-DnsServerForwarder
Issue 4: Remote Desktop Connection Failures
Symptoms
- “Remote Desktop can’t connect”
- Connection timeout
- Authentication errors
Diagnostic Steps
# Test RDP port
Test-NetConnection -ComputerName SERVER01 -Port 3389
# Check RDP is enabled (on server)
Get-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections"
# Check firewall
Get-NetFirewallRule -DisplayName "*Remote Desktop*" | Select-Object Name, Enabled
# Check who can RDP
Get-LocalGroupMember -Group "Remote Desktop Users"
Solutions
Problem: RDP Not Enabled
# Enable RDP
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections" -Value 0
# Enable firewall rule
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
# Restart terminal services
Restart-Service TermService -Force
Problem: NLA Blocking Connection
# Disable NLA (less secure, but may fix compatibility issues)
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name "UserAuthentication" -Value 0
Problem: User Not Authorized
# Add user to Remote Desktop Users
Add-LocalGroupMember -Group "Remote Desktop Users" -Member "username"
Issue 5: Slow Network Performance
Symptoms
- Slow file transfers
- Share access delays
- General sluggishness
Diagnostic Steps
# Check network adapter speed
Get-NetAdapter | Select-Object Name, LinkSpeed, Status
# Check for packet loss
ping SERVER01 -n 100 | findstr "loss"
# Check SMB connections
Get-SmbConnection
Get-SmbSession
# Check disk performance on server
Get-Counter '\PhysicalDisk(*)\Disk Read Bytes/sec','\PhysicalDisk(*)\Disk Write Bytes/sec'
Solutions
Problem: SMBv1 Being Used
# Disable SMBv1 (slow and insecure)
Set-SmbServerConfiguration -EnableSMB1Protocol $false
# Verify SMB2/3 is enabled
Get-SmbServerConfiguration | Select-Object EnableSMB1Protocol, EnableSMB2Protocol
Problem: Network Duplex Mismatch
# Check adapter settings
Get-NetAdapterAdvancedProperty -Name "Ethernet" | Where-Object DisplayName -like "*Speed*"
# Set to auto-negotiate
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Speed & Duplex" -DisplayValue "Auto Negotiation"
Problem: Jumbo Frames Mismatch
# Check MTU size
netsh interface ipv4 show subinterfaces
# Reset to standard MTU
netsh interface ipv4 set subinterface "Ethernet" mtu=1500 store=persistent
Issue 6: User Authentication Failures
Symptoms
- “Username or password is incorrect”
- “Logon failure: unknown user name”
- Account lockouts
Diagnostic Steps
# Check user account
Get-LocalUser -Name "username" | Select-Object Name, Enabled, PasswordExpires, LastLogon
# Check for lockout
Get-LocalUser -Name "username" | Select-Object Name, AccountExpires, Enabled
# Check security log
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4625} -MaxEvents 20
Solutions
Problem: Account Disabled
# Enable account
Enable-LocalUser -Name "username"
Problem: Password Expired
# Reset password
$password = ConvertTo-SecureString "NewP@ssw0rd!" -AsPlainText -Force
Set-LocalUser -Name "username" -Password $password
# Don't require password change
Set-LocalUser -Name "username" -PasswordExpired $false
Problem: Account Locked
# Note: Windows Server doesn't have Unlock-LocalUser
# Reset password to unlock, or wait for lockout duration
# Check lockout settings
net accounts
Problem: Password Mismatch (Workgroup)
When using matching accounts:
# Ensure password matches on both server and client
# On server:
Set-LocalUser -Name "username" -Password (ConvertTo-SecureString "MatchingP@ss!" -AsPlainText -Force)
# On client:
Set-LocalUser -Name "username" -Password (ConvertTo-SecureString "MatchingP@ss!" -AsPlainText -Force)
Issue 7: Mapped Drives Disconnect
Symptoms
- Red X on mapped drives
- “Reconnecting” message
- Drives disconnect after idle
Diagnostic Steps
# Check current connections
net use
# Check SMB sessions on server
Get-SmbSession
# Check auto-disconnect setting
Get-SmbServerConfiguration | Select-Object AutoDisconnectTimeout
Solutions
Problem: Auto-Disconnect Timeout
# Disable auto-disconnect on server
Set-SmbServerConfiguration -AutoDisconnectTimeout 0 -Force
Problem: Credentials Not Saved
# Save credentials permanently
cmdkey /add:SERVER01 /user:SERVER01\username /pass:password
# Or map with /savecred
net use Z: \\SERVER01\Share /user:SERVER01\username /persistent:yes /savecred
Problem: Group Policy Blocking
# Check if "Do not reconnect" policy is set
Get-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Policies\Network" -ErrorAction SilentlyContinue
Issue 8: Services Not Starting
Diagnostic Steps
# Check service status
Get-Service -Name "ServiceName"
# Check why service failed
Get-WinEvent -LogName System | Where-Object { $_.Message -like "*ServiceName*" } | Select-Object -First 5
# Check dependencies
Get-Service -Name "ServiceName" -DependentServices
Get-Service -Name "ServiceName" -RequiredServices
Solutions
# Try starting manually
Start-Service -Name "ServiceName"
# Check for dependency issues
Get-Service -Name "ServiceName" -RequiredServices | Start-Service
# Reset service to default
Set-Service -Name "ServiceName" -StartupType Automatic
sc.exe config ServiceName start= auto
# Check service account permissions
# Service may need Log on as a service right
Issue 9: Firewall Blocking Connections
Diagnostic Steps
# Check firewall status
Get-NetFirewallProfile | Select-Object Name, Enabled
# Check specific rules
Get-NetFirewallRule -DisplayGroup "File and Printer Sharing"
Get-NetFirewallRule | Where-Object { $_.Enabled -eq 'True' -and $_.Direction -eq 'Inbound' }
# Check blocked connections
Get-WinEvent -LogName 'Microsoft-Windows-Windows Firewall With Advanced Security/Firewall' -MaxEvents 50
Solutions
# Enable common rules
Enable-NetFirewallRule -DisplayGroup "File and Printer Sharing"
Enable-NetFirewallRule -DisplayGroup "Network Discovery"
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
# Create custom rule
New-NetFirewallRule -DisplayName "Allow Custom App" -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allow
# Temporarily disable firewall for testing
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
# Remember to re-enable!
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
System Health Check Script
# Save as C:\Scripts\HealthCheck.ps1
Write-Host "=== Server Health Check ===" -ForegroundColor Green
$date = Get-Date
Write-Host "`n--- System Info ---"
Write-Host "Computer: $env:COMPUTERNAME"
Write-Host "Date: $date"
Write-Host "Uptime: $((Get-Date) - (Get-CimInstance Win32_OperatingSystem).LastBootUpTime)"
Write-Host "`n--- Network Status ---"
Get-NetAdapter | Where-Object Status -eq "Up" | ForEach-Object {
Write-Host "$($_.Name): $($_.LinkSpeed) - $($_.Status)"
}
Write-Host "`n--- IP Configuration ---"
Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.IPAddress -notlike "127.*" } | ForEach-Object {
Write-Host "$($_.InterfaceAlias): $($_.IPAddress)"
}
Write-Host "`n--- Critical Services ---"
$services = @("DHCPServer", "DNS", "LanmanServer", "LanmanWorkstation", "W32Time")
foreach ($svc in $services) {
$service = Get-Service -Name $svc -ErrorAction SilentlyContinue
if ($service) {
$status = if ($service.Status -eq "Running") { "OK" } else { "STOPPED" }
$color = if ($service.Status -eq "Running") { "Green" } else { "Red" }
Write-Host "$($svc): $status" -ForegroundColor $color
}
}
Write-Host "`n--- Disk Space ---"
Get-WmiObject Win32_LogicalDisk -Filter "DriveType=3" | ForEach-Object {
$freeGB = [math]::Round($_.FreeSpace/1GB, 2)
$totalGB = [math]::Round($_.Size/1GB, 2)
$pctFree = [math]::Round(($_.FreeSpace/$_.Size)*100, 1)
$color = if ($pctFree -lt 10) { "Red" } elseif ($pctFree -lt 20) { "Yellow" } else { "Green" }
Write-Host "$($_.DeviceID) $freeGB GB free of $totalGB GB ($pctFree%)" -ForegroundColor $color
}
Write-Host "`n--- Recent Errors (Last 24 hours) ---"
$yesterday = (Get-Date).AddDays(-1)
$errors = Get-WinEvent -FilterHashtable @{LogName='System'; Level=2; StartTime=$yesterday} -MaxEvents 5 -ErrorAction SilentlyContinue
if ($errors) {
$errors | ForEach-Object { Write-Host "[$($_.TimeCreated)] $($_.Message.Substring(0, [Math]::Min(100, $_.Message.Length)))..." -ForegroundColor Yellow }
} else {
Write-Host "No critical errors" -ForegroundColor Green
}
Write-Host "`n--- Failed Logons (Last 24 hours) ---"
$failedLogons = Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4625; StartTime=$yesterday} -ErrorAction SilentlyContinue
Write-Host "Count: $($failedLogons.Count)" -ForegroundColor $(if ($failedLogons.Count -gt 10) { "Red" } else { "Green" })
Write-Host "`n=== Health Check Complete ===" -ForegroundColor Green
Quick Reference
Network Troubleshooting
ping server01 # Basic connectivity
Test-NetConnection server01 -Port 445 # Test specific port
nslookup server01 # DNS resolution
tracert server01 # Network path
ipconfig /flushdns # Clear DNS cache
ipconfig /release; ipconfig /renew # Refresh DHCP
Share Troubleshooting
net view \\server01 # List shares
net use # View mapped drives
net use * /delete /yes # Clear all mappings
cmdkey /list # View credentials
cmdkey /delete:server01 # Remove credentials
Service Troubleshooting
Get-Service servicename # Check status
Start-Service servicename # Start service
Restart-Service servicename # Restart
Get-WinEvent -LogName System -MaxEvents 20 # Check logs
Firewall Troubleshooting
Get-NetFirewallProfile # Check status
Get-NetFirewallRule -Enabled True # Active rules
Enable-NetFirewallRule -DisplayGroup "group" # Enable rule group