Internal/functions/New-DssObjectConfig.ps1
Function New-DssObjectConfig { <# .SYNOPSIS Creates a new user config section for scanning Output dumped to STDOUT .PARAMETER SqlInstance SQL Server instance holding the databse to be used as the base for the configuration .PARAMETER SqlCredential A PSCredential object to connect to SqlInstance .PARAMETER Database Database to use as basis for config .PARAMETER IncludeSystemObjects Switch to include system objects. #> [CmdletBinding(DefaultParameterSetName = "Default")] param ( [string]$SqlInstance, [PSCredential]$SqlCredential, [String]$Database, [switch]$IncludeSystemObjects ) begin { if ($IncludeSystemObjects) { $exclude = $false } else { $exclude = $true } } process {} end { $output = @() $objects = @() $objects += Get-DbaDbTable -SqlInstance $SqlInstance -SqlCredential $SqlCredential -Database $Database | Select-Object Schema, Name $objects += Get-DbaDbView -SqlInstance $SqlInstance -SqlCredential $SqlCredential -Database $Database -ExcludeSystemView:$exclude | Select-Object Schema, Name $objects += Get-DbaDbStoredProcedure -SqlInstance $SqlInstance -SqlCredential $SqlCredential -Database $Database -ExcludeSystemSp:$exclude | Select-Object Schema, Name $permissions = Get-DbaUserPermission -SqlInstance $SqlInstance -SqlCredential $SqlCredential -Database $Database -IncludePublicGuest ForEach ($object in $objects){ $permission = $permissions | Where-Object {$_.SchemaOwner -eq $object.Schema -and $_.Securable -eq $object.name} | select-Object grantee, permission $output += [PSCustomObject]@{ object = $object.Name schema = $object.schema permissions = $permission } } $output } } |