【问题标题】:Use an array to add permission to a list of users in ssms使用数组向 ssms 中的用户列表添加权限
【发布时间】:2020-07-16 16:49:00
【问题描述】:

我经营着多个教室和实验室环境。其中一个班级的学生必须登录界面并连接到我的服务器,然后在 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

【问题讨论】:

    标签: powershell loops foreach ssms-2012


    【解决方案1】:

    您可以执行以下操作来创建 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
    

    说明:

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

    @""@ 表示here-string

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-08
      • 2018-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-13
      相关资源
      最近更新 更多