2016-05-31 113 views
0

這裏是我當前的代碼:如何通過PowerShell使用Windows身份驗證而非本地身份驗證連接到SQL?

[string] $Server= "server" 
[string] $Database = "database" 
[string] $UserSqlQuery= $("SELECT * FROM [dbo].[User]") 
[string] $UserID = "userid" 
[string] $Pass = "pass" 

$resultsDataTable = New-Object System.Data.DataTable 
$resultsDataTable = ExecuteSqlQuery $Server $Database $UserSqlQuery $UserId $Pass 

# executes a query and populates the $datatable with the data 
function ExecuteSqlQuery ($Server, $Database, $SQLQuery, $UserID, $Pass) { 
    $Datatable = New-Object System.Data.DataTable 

    $Connection = New-Object System.Data.SQLClient.SQLConnection 
    $Connection.ConnectionString = "server='$Server';database='$Database';trusted_connection=true;User ID = '$UserID';Password='$Pass';" 
    $Connection.Open() 
    $Command = New-Object System.Data.SQLClient.SQLCommand 
    $Command.Connection = $Connection 
    $Command.CommandText = $SQLQuery 
    $Reader = $Command.ExecuteReader() 
    $Datatable.Load($Reader) 
    $Connection.Close() 

    return $Datatable 
} 

#validate we got data 
Write-Host ("The table contains: " + $resultsDataTable.Rows.Count + " rows") 

所以我知道我可以爲了使用Windows身份驗證與集成安全性=真更換用戶名和密碼。問題是我試圖使用一個Windows身份驗證,而不是我當前的身份驗證來獲取SQL。有沒有辦法做到這一點?謝謝。

回答

0

如果SQL連接字符串需要指定然後集成安全性,將需要用戶模擬。如果按住shift鍵並右鍵單擊powershell圖標,則可以通過選擇「運行方式」並輸入正確的Windows憑據來以另一用戶身份運行PowerShell進程。

如果腳本必須在一個Windows用戶下開始運行,但是爲SQL連接模擬不同的Windows用戶,則需要一些額外的腳本來設置該模擬。這裏有一個可能有用的鏈接 - http://poshcode.org/1867

相關問題