2017-11-22 10 views
0

servername, userid 및 역할 정보를 저장하는 server1에 테이블 (t1)이있는 작업을 수행하고 있습니다.원격 서버에서 SQL Server 역할 부여

나는 server1에서 실행하기 위해 PowerShell 스크립트를 만들고, 테이블에서이 정보를 수집하고, 원격 서버 (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() 

을, 나는 다음과 같은 오류를 참조하십시오

Method invocation failed because [System.String] does not contain a method named 'AddToRole'.

답변

0

foreach ($login in $user)에서 $User 정의를?

null 및 foreachnull (반복 동작)으로 반복되고 $login은 여기에 표시되지 않습니다.

여기에 $user 설정이 누락되었을 수 있습니다.

+0

죄송합니다. 문제가 해결되었지만 스크립트가 너무 길어 1180자를 초과하므로 여기에서 공유 할 수 없습니다. –