在远程服务器中授予SQL Server角色

问题描述 投票:0回答:1

我正在进行一项活动,我在服务器1中有一个表(t1),它存储服务器名,用户ID和角色信息。

我创建了一个PowerShell脚本以在server1上运行,从表中收集这些信息,连接到远程服务器(servername)并将请求的角色授予userid。

请找到以下脚本:

    $SQLServer = "Server1" 
$SQLDatabase = "Db1"
$user = "select userid from T1"
$role = "select access from T1"
$server1 = "Select servername from T1"

<#store the table information in a text file for auditing#>
$Sqlquery = "Select servername,userid,access from T1"
$Test = Invoke-SQLCMD -Query $SqlQuery -serverinstance $SQLServer -Database 
$SQLDatabase
$Test | format-list servername,userid,access| out-file "G:\EP\test.txt"

 $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $Server1; Integrated Security = 
  True"

$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$sqlSrv = New-Object 'Microsoft.SqlServer.Management.Smo.Server' 
"SQLServer\Instance"

foreach ($login in $user)
 {
   $login.AddToRole($role)
 }
 $SqlConnection.Close()

运行上面的代码时,我看到以下错误:

方法调用失败,因为[System.String]不包含名为“AddToRole”的方法。

sql powershell roles
1个回答
0
投票

$User中的foreach ($login in $user)在哪里定义?

它的null和foreach迭代到null(被驱逐的行为),而$login在这里变得一无所有。

你可能错过了在这里设置$user

© www.soinside.com 2019 - 2024. All rights reserved.