我有一个Powershell脚本,可以从Visual Studio Web应用程序(C#)调用。我设置了一个应用程序池,并且脚本执行。但是,当我通过Invoke-DbaQuery
使用任何-SqlCredential
命令时,它在Powershell控制台中运行正常,但是在从Web应用程序中调用时使用了应用程序池凭据。
以下是一些测试代码:
$mytest = Invoke-DbaQuery -SqlInstance $BackupInstance -Database "master" -SqlCredential $SourceCredential -Query "select suser_name()" -as SingleValue
write-output "I am currently running as: $mytest"
从powershell中返回:
我当前的运行身份为:MYDOMAIN \ myAdUserName
通过网络应用程序运行时,我得到:
我当前的运行身份为:MYDOMAIN \ AppPoolServerName $
我已更改凭据以尝试使用其他用户,并且从控制台运行时,它将返回该新用户,但是从Web运行时,它仍返回计算机名称。
有什么想法为什么会发生这种情况以及如何解决?