Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SMO:获取登录的服务器权限集(ServerPermissionSet)_Sql Server_Powershell_Smo - Fatal编程技术网

Sql server SMO:获取登录的服务器权限集(ServerPermissionSet)

Sql server SMO:获取登录的服务器权限集(ServerPermissionSet),sql-server,powershell,smo,Sql Server,Powershell,Smo,尝试获取登录名的ServerPermissionSet并将其应用于新登录名。似乎无法理解ServerPermissionSet和Server.Login之间是否存在关系,或者是否有更好的方法来实现这一点。我可以用tSQL实现这一点,但我试图从SMO的角度来看待这一点。下面是一些关于我试图实现的sudo代码 $server = new-object ('Microsoft.SqlServer.Management.Smo.Server') "my_server" $sps = new-objec

尝试获取登录名的ServerPermissionSet并将其应用于新登录名。似乎无法理解ServerPermissionSet和Server.Login之间是否存在关系,或者是否有更好的方法来实现这一点。我可以用tSQL实现这一点,但我试图从SMO的角度来看待这一点。下面是一些关于我试图实现的sudo代码

$server = new-object ('Microsoft.SqlServer.Management.Smo.Server') 
"my_server"
$sps = new-object -TypeName 
Microsoft.SqlServer.Management.SMO.ServerPermissionSet
$newlogin = new-object ('Microsoft.SqlServer.Management.Smo.Login') $Server, 
"new_login"
$oldlogin = $server.Logins["old_login"]
// THIS PART OBVIOUSLY DOESN'T WORK
$newlogin.Create("password")
$sps = $oldlogin.ServerPermissionSet
$server.Grant($sps,"new_login")

我正在使用代码示例告知我的答案:

$server = new-object ('Microsoft.SqlServer.Management.Smo.Server') 
"my_server"
$newlogin = new-object ('Microsoft.SqlServer.Management.Smo.Login') $Server, 
"new_login"

$newlogin.Create("password")
$sps = $server.EnumServerPermissions("old_login")
$server.Grant($sps,"new_login")
也就是说,您必须要求服务器枚举旧_登录的服务器权限,这将生成一个ServerPermissionSet[],然后您可以将其传递给服务器对象上的Grant方法


但我必须问:有没有理由不使用服务器级别的角色来封装这些权限,而只是将角色中的成员身份授予新登录名?

为什么不使用tsql?您可以运行任何tsql代码来执行您的逻辑并使用Invoke-Sqlcmd来获得结果吗?谢谢您的响应。这足以让我走上正确的道路。服务器角色可以实现这一点,但有些用户已经被授予了权限,我需要确定这些权限。我还试图创建一个进程,将用户传输到另一台可能没有配置相同服务器角色的服务器。