使用数组向ssms中的用户列表添加权限



我运行了几个教室和实验室环境。其中一个班的学生必须登录到接口并连接到我的服务器,然后服务器在SSMS中创建他们的帐户。然后我必须进入并手动添加他们需要为类做的事情所需的权限。当我的服务器";重新同步";对于其他在线服务器,它们将失去SSMS权限。(我故意含糊其辞,不要关注他们为什么会失去烫发。我没有做错任何事(。

我可以创建用户列表并将其保存到数组中。我知道我需要运行的ssms命令。我的空白是如何将PS1输入SSMS命令。我确信我需要做一个foreach循环,并将其保存到.sql文件中,然后运行它,但我的谷歌技能让我失望了。任何帮助都将不胜感激!这也是我第一次在这个网站上发帖,所以如果这看起来很傻,我很抱歉。

$Response = 'y'
$User = $Null
$UserList = @()
#Get a list of users#
Do
{
$User = Read-Host -Prompt 'Input user name'
$Response = Read-Host 'Would you like to add any 
additional users? y/n'
if ($User -ne '') {$UserList += $User}
}
Until ($Response -eq 'n')
#Loop through the list of users and add to a sql file#
foreach ($User in $UserList) {

}
#The SQL command to add user perms in SQL#
#sqlcmd
#use <db>
#exec sp_addrolemember 'group1','$User'
#exec sp_addrolemember 'group2','$User'
#go

您可以执行以下操作来创建可以使用Invoke-SqlCmd或从TSQL运行的file.sql

$template = { @"
exec sp_addrolemember 'group1','$user'
exec sp_addrolemember 'group2','$user'
"@
}
'use <db>' | Set-Content file.sql
$SqlCommands = foreach ($user in $userlist) {
& $template
}
$SqlCommands | Add-Content file.sql
'go' | Add-Content file.sql

解释:

使用脚本块(围绕代码的{}(,可以指定仅在调用脚本块时计算的变量。您可以简单地使用&运算符调用子作用域中的脚本块。

@""@表示此处的字符串。

最新更新