Invoke-Sqlcmd:无法验证参数“用户名”上的参数。参数为null或为空

时间:2019-05-13 16:58:29

标签: powershell-v3.0

我有一个中央服务器,其中存储了所有服务器详细信息及其凭据。我正在使用查询来获取服务器名称及其登录名和密码,并从远程SQL服务器中获取结果。我能够获取结果,但是在Powershell输出中抛出错误。

PS脚本:

$computers=Get-Content "$MyDir\$Role-serverlist.txt";
ForEach($a in $computers)
{
$Login= (Invoke-SqlCmd -ServerInstance $Server -Username "abc" -Password "defg" -Database $Database -Query "select username")
$Password=(Invoke-SqlCmd -ServerInstance $Server -Username "abc" -Password "defg" -Database $Database -Query "select Password")

$Result = (Invoke-SqlCmd -ServerInstance $a -Username "$Login" -Password "$Password" -Database master -Query "$Query")
 $Result
}

错误:

Invoke-Sqlcmd:无法验证参数“用户名”上的参数。参数为null或为空。提供一个不为null或为空的参数,然后重试该命令。 在E:\ Query.ps1:100 char:56 + $ result =(Invoke-SqlCmd -ServerInstance“ $ a”-用户名“ $ Login”-密码“ $ Pass ...

1 个答案:

答案 0 :(得分:0)

我认为问题出在
$ Result =(调用Invoke-SqlCmd -ServerInstance $ a -用户名“ $ Login” -密码“ $ Password”-数据库主数据库-Query“ $ Query”)
“ $ Login”:可以为空
无论“”中包含什么内容,powershell都将其视为变量而不是字符串。