Требуется помощь VB.Net для Powershell - Перечислите права доступа к базе данных - PullRequest
0 голосов
/ 21 декабря 2010

У меня есть подпрограмма VB.Net, которую я пытаюсь преобразовать в Powershell.Я не очень хорош в .Net, поэтому мне нужна помощь, но я нашел основу кода VB и сумел заставить его работать.Я пишу сценарии всех объектов в базе данных, и мне нужно получить разрешения для ролей.Это код VB:

    Public Sub ObjectPermissions(ByVal dbrname As String)
  ' dbrname = database role name
    ' this code will enumerate permissions on objects for a role - need to exclude fixed and public roles
    Dim dbrp As ObjectPermissionInfo()
    dbrp = db.EnumObjectPermissions(dbrname)
    Dim opi As ObjectPermissionInfo
    If db.Roles(dbrname).IsFixedRole = False And db.Roles(dbrname).Name <> "public" Then
        For Each opi In dbrp
            fs.WriteLine("GRANT " + opi.PermissionType.ToString + " ON [" + opi.ObjectSchema + "].[" + opi.ObjectName + "] TO [" + opi.Grantee + "]")
            fs.Flush()
        Next
    End If

End Sub

1 Ответ

0 голосов
/ 25 марта 2011

Вот почти прямой перевод в PowerShell:

# substitute the assembly version to suit your SQL Server SMO version
Add-Type -AssemblyName 'Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'

$Server = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Server -ArgumentList 'YourServer'
$Database = $Server.Databases['YourDatabase']
$DbrName = 'YourRole'

$Role = $Database.Roles[$DbrName]
if (-not $Role.IsFixedRole -and $Role.Name -ne 'public') {
    $Database.EnumObjectPermissions($DbrName) |
        ForEach-Object {
            Write-Output ('GRANT {0} ON [{1}].[{2}] TO [{3}]' -f $_.PermissionType, $_.ObjectSchema, $_.ObjectName, $_.Grantee)
        }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...