首页 > 解决方案 > Invoke-Sqlcmd:无法验证参数“用户名”上的参数。参数为 null 或为空

问题描述

我有一个中央服务器,其中存储了所有服务器详细信息及其凭据。我正在使用查询获取服务器名称及其登录名和密码,并从远程 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" -Username "$Login" -Password "$Pass ...

标签: powershell-3.0

解决方案


我认为问题出在
$Result = (Invoke-SqlCmd -ServerInstance $a -Username "$Login" -Password "$Password" -Database master -Query "$Query")
"$Login" : may be null
不管里面有什么" " ,powershell 将其视为变量而不是字符串。


推荐阅读