Предоставление роли SQL Server на удаленном сервере
Я работаю над действием, где у меня есть таблица (t1) на сервере server1, в которой хранится информация о имени сервера, имени пользователя и роли.
Я создал сценарий PowerShell для запуска на сервере server1, собрал эту информацию из таблицы, подключился к удаленному серверу (имя сервера) и присвоил запрошенную роль идентификатору пользователя.
Пожалуйста, найдите скрипт ниже:
$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".
1 ответ
Где $User
в foreach ($login in $user)
определен?
Его ноль и foreach
повторяется null
(ожидаемое поведение) и $login
здесь ничего не становится
Вы могли пропустить настройки $user
Вот.