使用数组为ssms中的用户列表添加权限
Use an array to add permission to a list of users in ssms
我 运行 几个 class 房间和实验室环境。 classes 之一的学生必须登录界面并连接到我的服务器,然后在 SSMS 中创建他们的帐户。然后我必须进去手动添加他们需要的权限来做他们需要为 class 做的事情。当我的服务器与其他在线服务器“重新同步”时,它们会失去 SSMS 权限。 (我故意含糊其词,不要关注他们为什么会掉烫发。我没有做错任何事)。
我可以创建用户列表并将其保存到数组中。我知道我需要 运行 的 ssms 命令。我要空白的地方是如何将 PS1 放入 SSMS 命令中。我相当确定我需要执行一个 foreach 循环并将其保存到一个 .sql 文件和 运行 那个,但是我的 google 技能让我失望了。任何帮助,将不胜感激!我也是第一次在这个网站上发帖,所以如果看起来很傻,我很抱歉。
$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
您可以执行类似以下操作来创建 file.sql
,您可以使用 Invoke-SqlCmd
或从 TSQL 运行。
$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
解释:
使用脚本块({}
周围代码),您可以指定仅在调用脚本块时才计算的变量。您可以使用 &
运算符简单地在子作用域中调用脚本块。
@""@
表示here-string.
我 运行 几个 class 房间和实验室环境。 classes 之一的学生必须登录界面并连接到我的服务器,然后在 SSMS 中创建他们的帐户。然后我必须进去手动添加他们需要的权限来做他们需要为 class 做的事情。当我的服务器与其他在线服务器“重新同步”时,它们会失去 SSMS 权限。 (我故意含糊其词,不要关注他们为什么会掉烫发。我没有做错任何事)。
我可以创建用户列表并将其保存到数组中。我知道我需要 运行 的 ssms 命令。我要空白的地方是如何将 PS1 放入 SSMS 命令中。我相当确定我需要执行一个 foreach 循环并将其保存到一个 .sql 文件和 运行 那个,但是我的 google 技能让我失望了。任何帮助,将不胜感激!我也是第一次在这个网站上发帖,所以如果看起来很傻,我很抱歉。
$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
您可以执行类似以下操作来创建 file.sql
,您可以使用 Invoke-SqlCmd
或从 TSQL 运行。
$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
解释:
使用脚本块({}
周围代码),您可以指定仅在调用脚本块时才计算的变量。您可以使用 &
运算符简单地在子作用域中调用脚本块。
@""@
表示here-string.