Sql server SQLAgent作业powershell步骤失败,返回“0”;登录失败(<;域>\&书信电报;计算机>$&引用;

Sql server SQLAgent作业powershell步骤失败,返回“0”;登录失败(<;域>\&书信电报;计算机>$&引用;,sql-server,powershell,login,powershell-2.0,Sql Server,Powershell,Login,Powershell 2.0,我正在使用SQL Server作业将一些wmiobject详细信息放入表中。 此代码使用默认安装运行,但在命名实例上执行时失败。到目前为止,我只看到了连接上的一个区别,对于命名实例,SQL代理使用的用户名中包含“$”作为名称的一部分(即NT Service\SQLAgent$instance) 我有没有办法克服这个问题?更改代理帐户不是一个选项,因为大多数服务器都使用此帐户运行,并且我的代码需要与所有帐户一起工作 $conn = New-Object System.Data.SqlCli

我正在使用SQL Server作业将一些wmiobject详细信息放入表中。 此代码使用默认安装运行,但在命名实例上执行时失败。到目前为止,我只看到了连接上的一个区别,对于命名实例,SQL代理使用的用户名中包含“$”作为名称的一部分(即
NT Service\SQLAgent$instance

我有没有办法克服这个问题?更改代理帐户不是一个选项,因为大多数服务器都使用此帐户运行,并且我的代码需要与所有帐户一起工作

    $conn = New-Object System.Data.SqlClient.SqlConnection("Data Source=$SqlSvr;Initial Catalog=$Database; Integrated Security=SSPI") 

$conn.Open()
以用户身份执行:NT服务\SQLAgent$实例。收到一个作业步骤 PowerShell脚本第21行出现错误。对应的行是 “$conn.Open()”。。。PowerShell返回的错误信息 is:'使用“0”参数调用“Open”异常:'登录失败 用户(域)(计算机)$“.”。进程退出代码-1

我尝试使用“identity impersonate=true”,但它不接受该命令

有什么想法吗?

使用“以太”代替“或使用转义字符”或使用字符(36)

以太使用“代替”或使用转义字符或使用字符(36)


问题是,它在代码中不可见。它正在内部发送帐户详细信息。此问题已解决。问题在于$SqlSvr。出于不同的原因,我通过另一个变量发送一个值,但由于一个bug,它将其作为一个文本字符串。您指的是什么“bug”#user3245595?问题是,它在代码中不可见。它正在内部发送帐户详细信息。此问题已解决。问题在于$SqlSvr。出于不同的原因,我通过另一个变量发送一个值,但由于一个bug,它将其作为一个文本字符串。您指的是什么“bug”#user3245595?您说这是一个SQL代理作业。它是在执行SQL PowerShell还是在执行操作系统(CmdExec)?为什么不创建一个代理帐户并在Job\Step\RunAs中使用它呢?您说这是一个SQL代理作业。它是在执行SQL PowerShell还是在执行操作系统(CmdExec)?为什么不创建一个代理帐户并在Job\Step\RunAs中使用它呢?
"blahblah`$blahblah"

'blahblah$blahblah'

"blahblah$([char](36))blahblah"