From e18ae8184a347a28b95b0c80acd0b140fbc47274 Mon Sep 17 00:00:00 2001 From: Fabio Scotto di Santolo Date: Thu, 2 Apr 2026 11:58:32 +0200 Subject: [PATCH] Handle existing WinRM HTTPS listeners in bootstrap --- scripts/bootstrap_windows_workstation.ps1 | 25 ++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/scripts/bootstrap_windows_workstation.ps1 b/scripts/bootstrap_windows_workstation.ps1 index 65d0ebf..ecc054c 100644 --- a/scripts/bootstrap_windows_workstation.ps1 +++ b/scripts/bootstrap_windows_workstation.ps1 @@ -36,15 +36,30 @@ function Ensure-WinRMHttpsListener { $listener = Get-ChildItem -Path WSMan:\localhost\Listener | Where-Object { - $_.Keys -match 'Transport=HTTPS' -and $_.Keys -match "Hostname=$($env:COMPUTERNAME)" + $_.Keys -match 'Transport=HTTPS' } | Select-Object -First 1 if ($null -eq $listener) { - New-WSManInstance -ResourceURI winrm/config/Listener ` - -SelectorSet @{ Transport = 'HTTPS'; Address = '*' } ` - -ValueSet @{ Hostname = $env:COMPUTERNAME; CertificateThumbprint = $CertificateThumbprint } | Out-Null - return $true + try { + New-WSManInstance -ResourceURI winrm/config/Listener ` + -SelectorSet @{ Transport = 'HTTPS'; Address = '*' } ` + -ValueSet @{ Hostname = $env:COMPUTERNAME; CertificateThumbprint = $CertificateThumbprint } | Out-Null + return $true + } + catch { + $existingHttpsListener = Get-ChildItem -Path WSMan:\localhost\Listener | + Where-Object { + $_.Keys -match 'Transport=HTTPS' + } | + Select-Object -First 1 + + if ($null -ne $existingHttpsListener) { + return $false + } + + throw + } } return $false