@@ -443,7 +443,7 @@ function New-DbaLogin {
443443 $newLogin.Set_Sid ($currentSid )
444444 }
445445
446- if ($loginType -in (" WindowsUser" , " WindowsGroup" , " SqlLogin" , " ExternalUser" )) {
446+ if ($loginType -in (" WindowsUser" , " WindowsGroup" , " SqlLogin" , " ExternalUser" , " ExternalGroup " )) {
447447 if ($currentDefaultDatabase ) {
448448 Write-Message - Level Verbose - Message " Setting $loginName default database to $currentDefaultDatabase "
449449 $withParams += " , DEFAULT_DATABASE = [$currentDefaultDatabase ]"
@@ -501,7 +501,7 @@ function New-DbaLogin {
501501
502502 # Attempt to add login using SMO, then T-SQL
503503 try {
504- if ($loginType -in (" WindowsUser" , " WindowsGroup" , " AsymmetricKey" , " Certificate" , " ExternalUser" )) {
504+ if ($loginType -in (" WindowsUser" , " WindowsGroup" , " AsymmetricKey" , " Certificate" , " ExternalUser" , " ExternalGroup " )) {
505505 if ($withParams ) { $withParams = " WITH " + $withParams.TrimStart (' ,' ) }
506506 $newLogin.Create ()
507507 } elseif ($loginType -eq " SqlLogin" ) {
@@ -527,8 +527,8 @@ function New-DbaLogin {
527527 elseif ($loginType -eq ' SqlLogin' -and $server.DatabaseEngineType -eq ' SqlAzureDatabase' ) {
528528 # Azure SQL doesn't support HASHED so we have to dump out the plain text password :(
529529 $sql = " CREATE LOGIN [$loginName ] WITH PASSWORD = '$ ( $SecurePassword | ConvertFrom-SecurePass ) '"
530- } elseif ($loginType -eq ' ExternalUser' -and ($server.DatabaseEngineType -eq ' SqlAzureDatabase' -or $server.DatabaseEngineEdition -eq ' SqlManagedInstance' )) {
531- # Azure SQL DB and Azure SQL Managed Instance are the only ones that currently support FROM EXTERNAL PROVIDER syntax
530+ } elseif ($loginType -in ( ' ExternalUser' , ' ExternalGroup ' ) -and ($server.DatabaseEngineType -eq ' SqlAzureDatabase' -or $server.DatabaseEngineEdition -eq ' SqlManagedInstance' -or $server .VersionMajor -ge 16 )) {
531+ # Azure SQL DB, Azure SQL Managed Instance, and SQL Server 2022+ support FROM EXTERNAL PROVIDER syntax
532532 $sql = " CREATE LOGIN [$loginName ] FROM EXTERNAL PROVIDER" + $withParams
533533 } elseif ($loginType -eq ' SqlLogin' ) {
534534 $sql = " CREATE LOGIN [$loginName ] WITH PASSWORD = $currentHashedPassword HASHED" + $withParams
0 commit comments