我有一个从 Visual Studio Web 应用程序 (C#) 调用的 powershell 脚本。我设置了一个应用程序池,并且脚本执行。但是,当我使用任何Invoke-DbaQuery
使用-SqlCredential
.
这是一些测试代码:
$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 运行时仍然是机器名称。
任何想法为什么会发生这种情况以及如何解决?
编辑:$SourceCredential
设置如下:
$SourceUsername = 'MYDOMAIN\MyAdUserName' $SecureIntPw = Get-Content "C:\Scripts\Security\MyAdUserName.txt" | ConvertTo-SecureString $SourceCredential = new-object -typename System.Management.Automation.PSCredential -argumentlist $SourceUserName, $SecureIntPw