Files
win-remote-toolkit/scripts/powershell/diagnose-winget.ps1
2026-04-24 17:44:02 +08:00

83 lines
2.5 KiB
PowerShell

[Console]::OutputEncoding = [Text.Encoding]::UTF8
$ErrorActionPreference = 'Continue'
Write-Host "[*] Diagnosing winget configuration and connectivity"
Write-Host ""
Write-Host "[1] Checking winget version and status..."
try {
$wingetVersion = & winget --version
Write-Host " winget version: $wingetVersion"
} catch {
Write-Host " [!] winget command failed"
}
Write-Host ""
Write-Host "[2] Checking winget sources..."
try {
$sources = & winget source list
Write-Host " winget sources:"
Write-Host "$sources"
} catch {
Write-Host " [!] Failed to list winget sources"
}
Write-Host ""
Write-Host "[3] Testing network connectivity..."
$testUrls = @(
"github.com",
"cdn.winget.microsoft.com",
"storeedgefd.dsx.mp.microsoft.com"
)
foreach ($url in $testUrls) {
try {
$testResult = Test-NetConnection -ComputerName $url -Port 443 -WarningAction SilentlyContinue
if ($testResult.TcpTestSucceeded) {
Write-Host " [OK] $url - Accessible"
} else {
Write-Host " [!] $url - Not accessible"
}
} catch {
Write-Host " [!] $url - Test failed"
}
}
Write-Host ""
Write-Host "[4] Testing simple winget search..."
try {
Write-Host " Searching for Chrome..."
$searchResult = & winget search "Google.Chrome" --exact
Write-Host " Search result: $searchResult"
} catch {
Write-Host " [!] winget search failed"
}
Write-Host ""
Write-Host "[5] Checking Windows version compatibility..."
$windowsVersion = Get-ComputerInfo | Select-Object WindowsProductName, WindowsVersion, WindowsBuildLabEx
Write-Host " OS: $($windowsVersion.WindowsProductName)"
Write-Host " Version: $($windowsVersion.WindowsVersion)"
Write-Host " Build: $($windowsVersion.WindowsBuildLabEx)"
Write-Host ""
Write-Host "[6] Testing manual installation with verbose output..."
Write-Host " Attempting to install 7-Zip with verbose logging..."
try {
$installTest = & winget install 7zip.7zip --accept-package-agreements --accept-source-agreements --verbose 2>&1
Write-Host " Install output:"
Write-Host "$installTest"
} catch {
Write-Host " [!] Manual install test failed: $($_.Exception.Message)"
}
Write-Host ""
Write-Host "Diagnosis completed!"
Write-Host ""
Write-Host "Possible solutions based on findings:"
Write-Host "1. If network connectivity issues: Configure proxy or firewall"
Write-Host "2. If source issues: Reset winget sources"
Write-Host "3. If permissions issues: Run as Administrator"
Write-Host "4. If Windows version issues: Update Windows or use manual installation"