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