我的客户使用 ActiveDirectory 控制对其数据库的访问。我想执行以下操作:
$cred = Get-Credential
Start-Job -Credential $cred {
#do some stuff with the db
}
这对于任何本地用户来说都很好,但是当在 vpn 上输入我的 ActiveDirectory 凭据时,验证失败。
runas
我知道,只有提供该标志,我才能以 ActiveDirectory 用户身份启动进程/netonly
(否则不起作用)。我认为以下内容可能会有所帮助
$cred = (Get-Credential).GetNetworkCredential()
但结果对象不能转换为PsCredential
,而这正是-Credential
参数所采用的。
相关这个问题但看来我可能问错了。
答案1
如果你尝试执行集成安全 SQL 查询,则可能可以使用模拟模块来实现。我还没有尝试过 SQL,但有一篇文章介绍了如何使用 PowerShell 模拟模块进行网络共享访问在我的博客上,我相信它与 SQL 服务器所需的网络凭据相同(例如,与使用带有 /netonly 的 runas 相同)。
如果你只是因为认为它可以让你更改网络访问凭据而使用该作业,那么只需摆脱它并改用 Push-ImpersonationContext。如果你需要由于其他原因,您必须调用 Push-ImpersonationContext在工作中,这意味着您必须将您的凭据放入作业中(可能通过序列化密码并将其作为加密的安全字符串传递)。
我现在无法测试它(我手边没有域名甚至数据库服务器),所以,嗯...如果它不起作用请告诉我;)