================================================================================
QUICK CONNECTION REFERENCE - WinRM HTTPS
================================================================================

HOW TO CONNECT TO REMOTE PC FROM YOUR COMPUTER

================================================================================
METHOD 1: BASIC TEST (No Authentication Required)
================================================================================

Test if WinRM HTTPS is responding:

  Test-WSMan -ComputerName g9kn7pz3esf.logon.ds.ge.com -UseSSL -Port 5986

Replace "g9kn7pz3esf" with any PC hostname.

Expected Output:
  wsmid           : http://schemas.dmtf.org/wbem/wsman/identity/1/wsmanidentity.xsd
  ProtocolVersion : http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd
  ProductVendor   : Microsoft Corporation
  ProductVersion  : OS: 0.0.0 SP: 0.0 Stack: 3.0

================================================================================
METHOD 2: INTERACTIVE SESSION (Most Common)
================================================================================

Get an interactive PowerShell prompt on the remote PC:

  # Get credentials (will prompt)
  $cred = Get-Credential

  # Connect
  Enter-PSSession -ComputerName g9kn7pz3esf.logon.ds.ge.com `
      -Credential $cred -UseSSL -Port 5986

Your prompt will change to show the remote computer name:
  [g9kn7pz3esf.logon.ds.ge.com]: PS C:\>

Run commands normally. To exit:
  Exit-PSSession

================================================================================
METHOD 3: RUN SINGLE COMMAND (Quick Tasks)
================================================================================

Execute a command without entering interactive mode:

  # Get credentials first
  $cred = Get-Credential

  # Run command
  Invoke-Command -ComputerName g9kn7pz3esf.logon.ds.ge.com `
      -Credential $cred -UseSSL -Port 5986 `
      -ScriptBlock { hostname }

Example - Get system info:
  Invoke-Command -ComputerName g9kn7pz3esf.logon.ds.ge.com `
      -Credential $cred -UseSSL -Port 5986 `
      -ScriptBlock { Get-ComputerInfo | Select-Object CsName, OsVersion, TotalPhysicalMemory }

================================================================================
METHOD 4: PERSISTENT SESSION (Multiple Commands)
================================================================================

Create a reusable connection:

  # Get credentials
  $cred = Get-Credential

  # Create session
  $session = New-PSSession -ComputerName g9kn7pz3esf.logon.ds.ge.com `
      -Credential $cred -UseSSL -Port 5986

  # Use session multiple times (faster than reconnecting)
  Invoke-Command -Session $session -ScriptBlock { Get-Service }
  Invoke-Command -Session $session -ScriptBlock { Get-Process }
  Invoke-Command -Session $session -ScriptBlock { ipconfig }

  # Close when done
  Remove-PSSession $session

================================================================================
CERTIFICATE TRUST ISSUE? (Self-Signed Certs)
================================================================================

If you get certificate errors, skip certificate validation (testing only):

  # Create session option
  $sessionOption = New-PSSessionOption -SkipCACheck -SkipCNCheck

  # Use with any connection method:
  Test-WSMan -ComputerName g9kn7pz3esf.logon.ds.ge.com -UseSSL -Port 5986 `
      -SessionOption $sessionOption

  Enter-PSSession -ComputerName g9kn7pz3esf.logon.ds.ge.com `
      -Credential $cred -UseSSL -Port 5986 -SessionOption $sessionOption

  Invoke-Command -ComputerName g9kn7pz3esf.logon.ds.ge.com `
      -Credential $cred -UseSSL -Port 5986 -SessionOption $sessionOption `
      -ScriptBlock { hostname }

================================================================================
CONNECTING TO MULTIPLE PCs
================================================================================

Test/connect to all shopfloor PCs:

  # List of hostnames
  $pcs = @("g1jjvh63esf", "g1jjxh63esf", "g9kn7pz3esf")

  # Get credentials once
  $cred = Get-Credential

  # Test all PCs
  foreach ($pc in $pcs) {
      $fqdn = "$pc.logon.ds.ge.com"
      Write-Host "Testing $fqdn..." -ForegroundColor Yellow

      try {
          Test-WSMan -ComputerName $fqdn -UseSSL -Port 5986 -ErrorAction Stop
          Write-Host "  [OK] $fqdn is responding" -ForegroundColor Green
      } catch {
          Write-Host "  [FAIL] $fqdn failed: $($_.Exception.Message)" -ForegroundColor Red
      }
  }

================================================================================
USEFUL REMOTE COMMANDS
================================================================================

Once connected (via Enter-PSSession or Invoke-Command), try these:

System Information:
  hostname
  ipconfig
  Get-ComputerInfo
  systeminfo

WinRM Status:
  Get-Service WinRM
  winrm enumerate winrm/config/listener
  Get-ChildItem Cert:\LocalMachine\My

Services:
  Get-Service
  Get-Service WinRM | Select-Object Name, Status, StartType

Processes:
  Get-Process
  Get-Process | Sort-Object CPU -Descending | Select-Object -First 10

Disk Space:
  Get-PSDrive -PSProvider FileSystem

Event Logs:
  Get-EventLog -LogName System -Newest 10

================================================================================
TROUBLESHOOTING
================================================================================

Cannot Reach PC:
  Test-Connection g9kn7pz3esf.logon.ds.ge.com
  Resolve-DnsName g9kn7pz3esf.logon.ds.ge.com
  Test-NetConnection -ComputerName g9kn7pz3esf.logon.ds.ge.com -Port 5986

Authentication Failed:
  # Try different username formats:
  Get-Credential -UserName "DOMAIN\username"
  Get-Credential -UserName ".\localadmin"
  Get-Credential -UserName "G9KN7PZ3ESF\username"

Certificate Errors:
  # Use -SessionOption to skip validation (see above)
  # Or install certificate on your computer:
  Import-Certificate -FilePath "C:\path\to\cert.cer" `
      -CertStoreLocation Cert:\LocalMachine\Root

WinRM Client Settings (run as Administrator on YOUR computer):
  # Enable WinRM client
  Enable-PSRemoting -Force

  # Add to trusted hosts
  Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*.logon.ds.ge.com" -Force

  # View current settings
  Get-Item WSMan:\localhost\Client\TrustedHosts

================================================================================
COMPLETE TESTING SCRIPT
================================================================================

Save this as Test-RemotePC.ps1 and run it:

  param([string]$ComputerName)

  Write-Host "Testing $ComputerName..." -ForegroundColor Cyan

  # Test connectivity
  if (Test-Connection $ComputerName -Count 2 -Quiet) {
      Write-Host "  [OK] PC is reachable" -ForegroundColor Green
  } else {
      Write-Host "  [FAIL] Cannot reach PC" -ForegroundColor Red
      exit
  }

  # Test WinRM HTTPS
  $sessionOption = New-PSSessionOption -SkipCACheck -SkipCNCheck
  try {
      Test-WSMan -ComputerName $ComputerName -UseSSL -Port 5986 `
          -SessionOption $sessionOption -ErrorAction Stop
      Write-Host "  [OK] WinRM HTTPS is responding" -ForegroundColor Green
  } catch {
      Write-Host "  [FAIL] WinRM HTTPS not responding" -ForegroundColor Red
      exit
  }

  # Test authenticated connection
  $cred = Get-Credential
  try {
      $result = Invoke-Command -ComputerName $ComputerName -Credential $cred `
          -UseSSL -Port 5986 -SessionOption $sessionOption `
          -ScriptBlock { hostname } -ErrorAction Stop
      Write-Host "  [OK] Remote command succeeded: $result" -ForegroundColor Green
  } catch {
      Write-Host "  [FAIL] Authentication failed" -ForegroundColor Red
  }

Usage:
  .\Test-RemotePC.ps1 -ComputerName g9kn7pz3esf.logon.ds.ge.com

================================================================================
CREDENTIAL FORMATS
================================================================================

When prompted for credentials, use one of these formats:

Domain Account:
  Username: DOMAIN\username
  Username: username@domain.com

Local Account:
  Username: .\Administrator
  Username: .\localadmin
  Username: COMPUTERNAME\username

================================================================================
PORT INFORMATION
================================================================================

WinRM HTTPS: Port 5986 (configured by deployment scripts)
WinRM HTTP:  Port 5985 (still available, but unencrypted)

Always use -UseSSL flag to ensure encrypted connection!

================================================================================
NEXT STEPS AFTER TESTING
================================================================================

1. Test basic connectivity with Test-WSMan
2. Test authenticated connection with Enter-PSSession
3. Run a few remote commands to verify functionality
4. If all works, deploy to 3-5 more PCs
5. Test connectivity to all deployed PCs
6. Document any issues in deployment logs
7. Proceed with full production rollout (175 PCs)

================================================================================
FOR MORE DETAILS
================================================================================

See: TEST-REMOTE-CONNECTION-GUIDE.md (comprehensive testing guide)

================================================================================
