背景:我在本地运行一个必须以SYSTEM身份运行的脚本,让我们不了解为什么会这样.:)该脚本尝试使用简单查询检查我的MSSQL集群的运行状况.然而,我遇到的问题是本地SYSTEM帐户无权访问远程数据库.在这一点上,我已经尝试了很多东西,我将在稍后介绍,但我老实说,任何有意义的解决方案.如果这意味着在数据库中创建一个本地帐户,可以回答我的简单查询.
到目前为止我有:
$Server = 'myserver.domain.tld'
$Database = 'myDatabase'
$Query = 'SELECT DB_NAME() AS DataBaseName'
$Username = 'myDomain\myUsername'
$Password = 'myPasswordWithPlainText'
Invoke-SQLCmd -ServerInstance $Server -Database $Database -ConnectionTimeout 300 -QueryTimeout 600 -Query $Query -Username $Username -Password $Password
Run Code Online (Sandbox Code Playgroud)
结果: Invoke-Sqlcmd : Login failed for user 'myDomain\myUsername'
也许Invoke-SQL没有采用我认为的Windows身份验证,但它不使用-Credential.所以我尝试使用Invoke-Command作为包装器.
$Server = 'myserver.domain.tld'
$Database = 'myDatabase'
$Query = 'SELECT DB_NAME() AS DataBaseName'
$Username = 'myDomain\myUsername'
$Password = 'myPasswordWithPlainText'
$secpasswd = ConvertTo-SecureString $Password -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ($Username, $secpasswd)
Invoke-Command -script {Invoke-SQLCmd -ServerInstance $Server -Database …Run Code Online (Sandbox Code Playgroud)