From 9e163bbc10954b01a33600cad1d12f858e8ee8d0 Mon Sep 17 00:00:00 2001 From: avm Date: Mon, 4 Feb 2019 12:58:47 +0300 Subject: [PATCH 1/6] Added check if database from $Database array is accessible or not before getting roles membership --- functions/Get-DbaDbRoleMember.ps1 | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/functions/Get-DbaDbRoleMember.ps1 b/functions/Get-DbaDbRoleMember.ps1 index fe534d8b31a3..48e64e47163e 100644 --- a/functions/Get-DbaDbRoleMember.ps1 +++ b/functions/Get-DbaDbRoleMember.ps1 @@ -106,6 +106,17 @@ function Get-DbaDbRoleMember { Stop-Function -Message 'Failure' -Category ConnectionError -ErrorRecord $_ -Target $instance -Continue } + foreach($item in $Database) { + try { + if($server.Databases[$item].IsAccessible -eq $false) { + throw "Database: $item is not accessible. Check your permissions or database state." + } + } + catch { + Stop-Function -Message 'Failure' -Category ResourceUnavailable -ErrorRecord $_ -Target $instance -Continue + } + } + $databases = $server.Databases | Where-Object { $_.IsAccessible -eq $true } if (Test-Bound -Parameter 'Database') { From ec1a234927d63d887497b0dcc44b17d7fdb3ff8f Mon Sep 17 00:00:00 2001 From: avm Date: Mon, 4 Feb 2019 13:18:51 +0300 Subject: [PATCH 2/6] add messaging in verbose mode --- functions/Get-DbaDbRoleMember.ps1 | 1 + 1 file changed, 1 insertion(+) diff --git a/functions/Get-DbaDbRoleMember.ps1 b/functions/Get-DbaDbRoleMember.ps1 index 48e64e47163e..a911addd43af 100644 --- a/functions/Get-DbaDbRoleMember.ps1 +++ b/functions/Get-DbaDbRoleMember.ps1 @@ -107,6 +107,7 @@ function Get-DbaDbRoleMember { } foreach($item in $Database) { + Write-Message -Level Verbose -Message "Check if database: $item on $instance is accessible or not" try { if($server.Databases[$item].IsAccessible -eq $false) { throw "Database: $item is not accessible. Check your permissions or database state." From 535405a2ed23ceb50ebd3bdcd3265aafe40164d0 Mon Sep 17 00:00:00 2001 From: avm Date: Mon, 4 Feb 2019 14:37:37 +0300 Subject: [PATCH 3/6] Invoke-DbatoolsFormatter --- functions/Get-DbaDbRoleMember.ps1 | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/functions/Get-DbaDbRoleMember.ps1 b/functions/Get-DbaDbRoleMember.ps1 index a911addd43af..ff0f676a3fd9 100644 --- a/functions/Get-DbaDbRoleMember.ps1 +++ b/functions/Get-DbaDbRoleMember.ps1 @@ -106,14 +106,13 @@ function Get-DbaDbRoleMember { Stop-Function -Message 'Failure' -Category ConnectionError -ErrorRecord $_ -Target $instance -Continue } - foreach($item in $Database) { + foreach ($item in $Database) { Write-Message -Level Verbose -Message "Check if database: $item on $instance is accessible or not" try { - if($server.Databases[$item].IsAccessible -eq $false) { + if ($server.Databases[$item].IsAccessible -eq $false) { throw "Database: $item is not accessible. Check your permissions or database state." } - } - catch { + } catch { Stop-Function -Message 'Failure' -Category ResourceUnavailable -ErrorRecord $_ -Target $instance -Continue } } From 9286f97eeaee224e7d42f1b7ac9b08e92efe59e0 Mon Sep 17 00:00:00 2001 From: avm Date: Tue, 5 Feb 2019 13:13:35 +0300 Subject: [PATCH 4/6] add LoginType to returned [PSCustomObject]$user --- functions/Get-DbaDbRoleMember.ps1 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/functions/Get-DbaDbRoleMember.ps1 b/functions/Get-DbaDbRoleMember.ps1 index ff0f676a3fd9..47cd8d868a76 100644 --- a/functions/Get-DbaDbRoleMember.ps1 +++ b/functions/Get-DbaDbRoleMember.ps1 @@ -162,9 +162,10 @@ function Get-DbaDbRoleMember { Add-Member -Force -InputObject $user -MemberType NoteProperty -Name Database -Value $db.Name Add-Member -Force -InputObject $user -MemberType NoteProperty -Name Role -Value $dbRole.Name Add-Member -Force -InputObject $user -MemberType NoteProperty -Name UserName -Value $user.Name + Add-Member -Force -InputObject $user -MemberType NoteProperty -Name LoginType -Value $user.LoginType # Select object because Select-DefaultView causes strange behaviors when assigned to a variable (??) - Select-Object -InputObject $user -Property 'ComputerName', 'InstanceName', 'SqlInstance', 'Database', 'Role', 'UserName', 'Login', 'IsSystemObject' + Select-Object -InputObject $user -Property 'ComputerName', 'InstanceName', 'SqlInstance', 'Database', 'Role', 'UserName', 'Login', 'IsSystemObject', 'LoginType' } } } From bafd2d822727db7f3f23dd73e49ac1f8e9076041 Mon Sep 17 00:00:00 2001 From: avm Date: Tue, 5 Feb 2019 14:00:22 +0300 Subject: [PATCH 5/6] Revert "add LoginType to returned [PSCustomObject]$user" This reverts commit 9286f97eeaee224e7d42f1b7ac9b08e92efe59e0. revert last commit --- functions/Get-DbaDbRoleMember.ps1 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/functions/Get-DbaDbRoleMember.ps1 b/functions/Get-DbaDbRoleMember.ps1 index 47cd8d868a76..ff0f676a3fd9 100644 --- a/functions/Get-DbaDbRoleMember.ps1 +++ b/functions/Get-DbaDbRoleMember.ps1 @@ -162,10 +162,9 @@ function Get-DbaDbRoleMember { Add-Member -Force -InputObject $user -MemberType NoteProperty -Name Database -Value $db.Name Add-Member -Force -InputObject $user -MemberType NoteProperty -Name Role -Value $dbRole.Name Add-Member -Force -InputObject $user -MemberType NoteProperty -Name UserName -Value $user.Name - Add-Member -Force -InputObject $user -MemberType NoteProperty -Name LoginType -Value $user.LoginType # Select object because Select-DefaultView causes strange behaviors when assigned to a variable (??) - Select-Object -InputObject $user -Property 'ComputerName', 'InstanceName', 'SqlInstance', 'Database', 'Role', 'UserName', 'Login', 'IsSystemObject', 'LoginType' + Select-Object -InputObject $user -Property 'ComputerName', 'InstanceName', 'SqlInstance', 'Database', 'Role', 'UserName', 'Login', 'IsSystemObject' } } } From dd87f7f6fbf9b33221299b3592e32508a39b2bfd Mon Sep 17 00:00:00 2001 From: uncletimmy3 <34276679+uncletimmy3@users.noreply.github.com> Date: Wed, 6 Feb 2019 11:55:29 +0500 Subject: [PATCH 6/6] Update Get-DbaDbRoleMember.ps1 got rid of try/catch add Logintype to output --- functions/Get-DbaDbRoleMember.ps1 | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/functions/Get-DbaDbRoleMember.ps1 b/functions/Get-DbaDbRoleMember.ps1 index ff0f676a3fd9..c80999fc27d3 100644 --- a/functions/Get-DbaDbRoleMember.ps1 +++ b/functions/Get-DbaDbRoleMember.ps1 @@ -108,12 +108,8 @@ function Get-DbaDbRoleMember { foreach ($item in $Database) { Write-Message -Level Verbose -Message "Check if database: $item on $instance is accessible or not" - try { - if ($server.Databases[$item].IsAccessible -eq $false) { - throw "Database: $item is not accessible. Check your permissions or database state." - } - } catch { - Stop-Function -Message 'Failure' -Category ResourceUnavailable -ErrorRecord $_ -Target $instance -Continue + if ($server.Databases[$item].IsAccessible -eq $false) { + Stop-Function -Message "Database: $item is not accessible. Check your permissions or database state." -Category ResourceUnavailable -ErrorRecord $_ -Target $instance -Continue } } @@ -164,7 +160,7 @@ function Get-DbaDbRoleMember { Add-Member -Force -InputObject $user -MemberType NoteProperty -Name UserName -Value $user.Name # Select object because Select-DefaultView causes strange behaviors when assigned to a variable (??) - Select-Object -InputObject $user -Property 'ComputerName', 'InstanceName', 'SqlInstance', 'Database', 'Role', 'UserName', 'Login', 'IsSystemObject' + Select-Object -InputObject $user -Property 'ComputerName', 'InstanceName', 'SqlInstance', 'Database', 'Role', 'UserName', 'Login', 'IsSystemObject', 'LoginType' } } } @@ -174,4 +170,4 @@ function Get-DbaDbRoleMember { end { Test-DbaDeprecation -DeprecatedOn "1.0.0" -Alias Get-DbaRoleMember } -} \ No newline at end of file +}