Skip to content

Commit f3e4022

Browse files
New-DbaLogin: add ExternalGroup support and SQL Server 2022 Entra login handling (#10225)
1 parent 85e129c commit f3e4022

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

public/New-DbaLogin.ps1

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)