function Restart-Wsl { <# .SYNOPSIS Restarts Wsl and waits for it to restart .DESCRIPTION Restarts Wsl and waits for it to restart .EXAMPLE Restart-Wsl #> [CmdletBinding()] param() $ErrorActionPreference = "Stop" $logLead = (Get-LogLeadName) Write-Host "$logLead : Stopping all Docker Desktop processes" Get-Process "*docker desktop*" | Stop-Process Write-Host "$logLead : Shutting down WSL" wsl --shutdown Write-Host "$logLead : Waiting for Wsl to shutdown" Start-Sleep -Seconds 5 Write-Host "$logLead : Starting all Docker Desktop processes" Start-Process "C:\Program Files\Docker\Docker\Docker Desktop.exe" Write-Host "$logLead : Waiting for Docker Desktop to startup" $job = Start-Job -ScriptBlock { do { docker version } while($lastexitcode -ne 0) } Wait-Job -Job $job | Out-Null Remove-Job -Job $job Write-Host "$logLead : Wsl successfully restarted" }