From 4dde0ccdb5af42215ab3ad5180b251ce5edd0c35 Mon Sep 17 00:00:00 2001 From: Simone Bizzotto Date: Tue, 25 Feb 2025 21:38:46 +0100 Subject: [PATCH] Connect-DbaInstance, change username format only when joined to AD --- public/Connect-DbaInstance.ps1 | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/public/Connect-DbaInstance.ps1 b/public/Connect-DbaInstance.ps1 index 60c576dfd2..9796cad98a 100644 --- a/public/Connect-DbaInstance.ps1 +++ b/public/Connect-DbaInstance.ps1 @@ -693,11 +693,18 @@ function Connect-DbaInstance { $authType = 'local ' } if ($SqlCredential) { - # support both ad\username and username@ad - # username@ad works only for domain joined - # so we stick to what we get and allow ad\username - # as well, that works on local and workgroup $username = ($SqlCredential.UserName).TrimStart("\") + # support both ad\username and username@ad + # username@ad works only for domain joined and workgroup + # nobody remembers why, but username@ad is preferred + # so we switch ad\username to username@ad only doing a raw guess + # when USERDOMAIN -ne COMPUTERNAME, we're probably joined to ad + if ($env:USERDOMAIN -ne $env:COMPUTERNAME) { + if ($username -like "*\*") { + $domain, $login = $username.Split("\") + $username = "$login@$domain" + } + } if ($username -like '*@*' -or $username -like '*\*') { $authType += 'ad' } else {