在Powershell中打开SQL连接时如何使用Get-Credential

时间:2019-05-11 02:02:30

标签: sql sql-server powershell

我的公司需要验证是否已将每台计算机的费用开给了正确的部门(这是一家非常大的公司)。我通过确保将每台计算机记入最后登录该计算机的用户的部门ID来实现此目的。

一旦有了所有计算机的用户ID(使用PS脚本),我就需要运行SQL查询以选择每个用户的部门代码。然后,我可以使用该数据更新帐单信息。

但是,我似乎无法使SQL查询在PS中运行。它可以在服务器管理控制台中运行,但是只有一个步骤而不是两个步骤会更容易。这似乎是我通过使用“ Get-Credential”传递凭据的方式,因为我一直在同一位置($ connection.Open())收到错误。

我知道我的凭据有效,但是仍然出现错误“使用“ 0”参数调用“打开”的异常:用户'MY_ID'登录失败。”

我在这里想念什么?任何帮助将不胜感激!

function Invoke-SQL {
    $cred = Get-Credential
    $cred.Password.MakeReadOnly()
    $cred.UserName -replace("\\","")

    $sqlCred = New-Object System.Data.SqlClient.SqlCredential($cred.username,$cred.password)

    $connection = New-Object System.Data.SqlClient.SqlConnection
    $connection.ConnectionString = “Data Source=DS;Initial Catalog=DB”
    $connection.Credential = $sqlCred

    $sqlCommand = "Select * from HR_DATA
                   Where User_ID = '$ID'"

    $command = new-object system.data.sqlclient.sqlcommand($sqlCommand,$connection)
    $connection.Open()

    $adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command

    $dataset = New-Object System.Data.DataSet

    $adapter.Fill($dataset) | Out-Null

    $connection.Close()
    $dataset.Tables[0]

    }

    Invoke-SQL

0 个答案:

没有答案