我的客户端使用ActiveDirectory控制对数据库的访问。 我想要做以下事情:
$cred = Get-Credential Start-Job -Credential $cred { #do some stuff with the db }
这适用于任何本地用户,但在vpn上并input我的ActiveDirectory凭据时无法进行身份validation。
我知道我可以使用runas作为ActiveDirectory用户启动进程,只要我提供/netonly标志(否则不起作用)。 我认为以下可能会有所帮助
$cred = (Get-Credential).GetNetworkCredential()
但生成的对象不能转换为PsCredential ,这是-Credential参数的作用。
与此有关的这个问题,但似乎我可能一直在问错的东西。
如果您正在尝试执行集成安全性SQL查询,则可以使用模拟模块执行此操作。 我还没有尝试SQL,但是有一篇关于如何在我的博客上使用PowerShell模拟模块进行networking共享访问的post,我相信它与SQL服务器需要的是相同的networking凭据(例如,与使用runas / netonly)。
如果你只是使用这个工作,因为你认为它可以让你改变networking访问的凭据,那么只要摆脱它,并使用Push-ImpersonationContext来代替。 如果您因为其他原因需要这个工作,那么您必须在作业内部调用Push-ImpersonationContext,这意味着您必须将您的凭据join作业(可能通过序列化密码并将其作为encryption的安全string传递)。
我现在无法testing(我没有域名,甚至没有数据库服务器),所以,嗯…让我知道,如果它不工作;)