# Check if OpenSSH client is available on AD2
$password = ConvertTo-SecureString "Paper123!@#" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential("INTRANET\sysadmin", $password)

Write-Host "=== Checking OpenSSH Client Availability ===" -ForegroundColor Cyan
Write-Host ""

Invoke-Command -ComputerName 192.168.0.6 -Credential $cred -ScriptBlock {
    Write-Host "[1] OpenSSH Client Installation Status" -ForegroundColor Yellow
    Write-Host "=" * 80 -ForegroundColor Gray

    # Check if OpenSSH client is installed
    $sshClient = Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH.Client*'

    if ($sshClient) {
        Write-Host "OpenSSH Client:" -ForegroundColor White
        Write-Host "  Name: $($sshClient.Name)" -ForegroundColor White
        Write-Host "  State: $($sshClient.State)" -ForegroundColor $(if ($sshClient.State -eq 'Installed') { "Green" } else { "Yellow" })
    } else {
        Write-Host "OpenSSH Client capability not found" -ForegroundColor Red
    }
    Write-Host ""

    Write-Host "[2] Available SSH Commands" -ForegroundColor Yellow
    Write-Host "=" * 80 -ForegroundColor Gray

    # Check for ssh.exe
    $sshPath = Get-Command ssh.exe -ErrorAction SilentlyContinue
    if ($sshPath) {
        Write-Host "[OK] ssh.exe found: $($sshPath.Source)" -ForegroundColor Green
        $sshVersion = & ssh.exe -V 2>&1
        Write-Host "     Version: $sshVersion" -ForegroundColor Gray
    } else {
        Write-Host "[MISSING] ssh.exe not found" -ForegroundColor Red
    }

    # Check for scp.exe
    $scpPath = Get-Command scp.exe -ErrorAction SilentlyContinue
    if ($scpPath) {
        Write-Host "[OK] scp.exe found: $($scpPath.Source)" -ForegroundColor Green
    } else {
        Write-Host "[MISSING] scp.exe not found" -ForegroundColor Red
    }

    # Check for sftp.exe
    $sftpPath = Get-Command sftp.exe -ErrorAction SilentlyContinue
    if ($sftpPath) {
        Write-Host "[OK] sftp.exe found: $($sftpPath.Source)" -ForegroundColor Green
    } else {
        Write-Host "[MISSING] sftp.exe not found" -ForegroundColor Red
    }
    Write-Host ""

    Write-Host "[3] Current PuTTY Tools" -ForegroundColor Yellow
    Write-Host "=" * 80 -ForegroundColor Gray

    # Check existing PuTTY tools
    $pscpPath = "C:\Program Files\PuTTY\pscp.exe"
    $plinkPath = "C:\Program Files\PuTTY\plink.exe"

    if (Test-Path $pscpPath) {
        Write-Host "[CURRENT] pscp.exe: $pscpPath" -ForegroundColor Cyan
        $pscpVersion = & $pscpPath -V 2>&1 | Select-Object -First 1
        Write-Host "          $pscpVersion" -ForegroundColor Gray
    }

    if (Test-Path $plinkPath) {
        Write-Host "[CURRENT] plink.exe: $plinkPath" -ForegroundColor Cyan
    }
    Write-Host ""

    Write-Host "[4] Test SCP Transfer (if available)" -ForegroundColor Yellow
    Write-Host "=" * 80 -ForegroundColor Gray

    if ($scpPath) {
        # Create a test file
        $testFile = "C:\Shares\test\scripts\openssh-test.txt"
        "OpenSSH SCP Test - $(Get-Date)" | Out-File -FilePath $testFile -Encoding ASCII

        Write-Host "Created test file: $testFile" -ForegroundColor White
        Write-Host "Ready to test SCP transfer to NAS" -ForegroundColor Green
        Write-Host ""
        Write-Host "Test command would be:" -ForegroundColor Yellow
        Write-Host "  scp -v $testFile root@192.168.0.9:/data/test/scripts/" -ForegroundColor Gray
        Write-Host ""
        Write-Host "Benefits vs PuTTY pscp:" -ForegroundColor Cyan
        Write-Host "  - Native error messages" -ForegroundColor White
        Write-Host "  - SSH key support (no passwords in scripts)" -ForegroundColor White
        Write-Host "  - Verbose logging with -v flag" -ForegroundColor White
        Write-Host "  - Better batch mode handling" -ForegroundColor White
        Write-Host "  - StrictHostKeyChecking=accept-new (auto-accept on first connect)" -ForegroundColor White
    } else {
        Write-Host "OpenSSH client not available - would need to install" -ForegroundColor Red
        Write-Host ""
        Write-Host "Install command:" -ForegroundColor Yellow
        Write-Host "  Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0" -ForegroundColor Gray
    }
}

Write-Host ""
Write-Host "=== Check Complete ===" -ForegroundColor Cyan
