Files
2026-05-07 01:09:54 +00:00

78 lines
2.7 KiB
PowerShell

# PowerShell Script to Reset Tailscale on Windows
# Works even if Tailscale service is not present
function Get-TailscalePath {
$pathsToCheck = @(
"$env:ProgramFiles\Tailscale\tailscale.exe",
"${env:ProgramFiles(x86)}\Tailscale\tailscale.exe",
"$env:LOCALAPPDATA\Tailscale\tailscale.exe"
)
foreach ($path in $pathsToCheck) {
if (Test-Path $path) {
return $path
}
}
return $null
}
$tailscalePath = Get-TailscalePath
if (-not $tailscalePath) {
Write-Warning "Tailscale CLI not found on this system. Skipping CLI commands..."
} else {
Write-Host "Found Tailscale CLI at $tailscalePath"
& "$tailscalePath" logout
}
# Stop service if exists
$service = Get-Service -Name "Tailscale" -ErrorAction SilentlyContinue
if ($service) {
Write-Host "Stopping Tailscale service..."
Stop-Service Tailscale -Force
} else {
Write-Warning "Tailscale service not found, skipping stop."
}
# Remove ProgramData folder if present
$programDataPath = "C:\ProgramData\Tailscale"
if (Test-Path $programDataPath) {
Remove-Item $programDataPath -Recurse -Force
Write-Host "Removed folder: $programDataPath"
}
# Remove appdata folders
$localApp = "$env:LOCALAPPDATA\Tailscale"
$roamingApp = "$env:APPDATA\Tailscale"
foreach ($folder in @($localApp, $roamingApp)) {
if (Test-Path $folder) {
Remove-Item $folder -Recurse -Force
Write-Host "Removed folder: $folder"
}
}
# Set Headscale registry configuration
$registryPath = 'HKLM:\Software\Tailscale IPN'
New-Item -Path $registryPath -Force | Out-Null
New-ItemProperty -Path $registryPath -Name UnattendedMode -PropertyType String -Value "user-decides" -Force | Out-Null
New-ItemProperty -Path $registryPath -Name AllowIncomingConnections -PropertyType String -Value "never" -Force | Out-Null
New-ItemProperty -Path $registryPath -Name AdminConsole -PropertyType String -Value "hide" -Force | Out-Null
New-ItemProperty -Path $registryPath -Name NetworkDevices -PropertyType String -Value "hide" -Force | Out-Null
New-ItemProperty -Path $registryPath -Name TestMenu -PropertyType String -Value "hide" -Force | Out-Null
New-ItemProperty -Path $registryPath -Name LoginURL -PropertyType String -Value "http://headscale.estudiogroup.com:8080" -Force | Out-Null
Write-Host "Registry keys created successfully."
# Restart service if exists
if ($service) {
Start-Service Tailscale
Write-Host "Restarted Tailscale service"
}
# Show prefs if CLI was found
if ($tailscalePath) {
& "$tailscalePath" debug prefs
}
Write-Host "`n✅ Tailscale reset complete. If you're using Headscale, run:"
Write-Host "`ttailscale up --login-server http://headscale.estudiogroup.com:8080"