![](/img/trans.png)
[英]Powershell and Jenkins - Execute Powershell Script as another user
[英]Powershell remoting - cannot execute an exe as another user
我有一个命令行程序(c#),它根据机器密钥对配置文件进行加密。 Powershell脚本会将内部版本复制到目标服务器,并相应地修改配置并安装Windows服务。 所有Windows服务都以本地系统帐户(标准用户,非管理员)运行-我们将此帐户称为“ locuser”。
目标服务器是Win 2012 R2服务器。 通过将PS从Build Server远程移动到此Target服务器,可以实现上述所有功能。
现在,我需要以“ locuser”身份运行加密命令行程序,以便该程序可以使用帐户特定的密钥进行加密。 我知道可以通过使用-Credentials
参数调用Start-Process
cmdlet轻松实现。 好吧,这是要解决的问题,如果我远程(RDP)到目标服务器,然后运行Start-Process .... -Credential $cred
从Powershell控制台中获得Start-Process .... -Credential $cred
,上述方法就可以正常工作。
但是,当我在部署时(使用脚本)远程登录到TargetServer时,我需要这样做。 当我远程访问TargetServer时,我使用具有Admin特权的凭据。
我尝试了以下
Set-PSSessionConfiguration -Name Microsoft.PowerShell -ShowSecurityDescriptorUI
命令,我已经向“ locuser”授予了“完全控制”和“调用(执行)”权限。 我已经为Microsoft.Powershell
和Microsoft.Powershell32
都运行了此命令-仍然会拒绝访问 我很确定,PS Remoting方面有一些配置我遗失了,但无法弄清楚是什么-因为所有Powershell抛出的都是我Access Denied
错误(请参见屏幕截图),几乎没有用处有关进一步排除故障的信息。
此外,检查事件日志中是否有任何跟踪,但无济于事。
您已成为可怕的Double Hop的牺牲品。 基本上,您是从计算机A到计算机B进行身份验证,然后再次尝试从计算机B到计算机C进行身份验证(在本例中也恰好是B)。
如果可能的话,最好结束该会话并使用locuser凭据启动一个新会话,然后仅调用Start-Process。 另一种更混乱的方法是使用schtasks。
我可以告诉您如何在同一会话中执行此操作,但是它有点混乱且非常复杂,应该只能作为最后的选择:
在原始服务器(构建服务器)上:
Enable-WSManCredSSP -Role Client -Delegate [name]
,其中[name]
是IP或DNS地址/范围,包括任何目标服务器(例如“ 192.168.1。*”) Computer Configuration\\Administrative Templates\\System\\Credentials Delegation
并检查是否Allow delegating fresh credentials
了规则“ Allow delegating fresh credentials
和Allow delegating fresh credentials with NTLM...
并包括[name]
在目标服务器上:
Enable-WSManCredSSP -Role Server
运行命令:
Invoke-Command [targetserver] [-Credential $cred] -Scriptblock {
## do stuff
Invoke-Command . -Credential $locusercred -Authentication Credssp -ScriptBlock {
Start-Process -FilePath $sc #etc
}
}
要注意的一些事情:
首先,我使用此设置创建了一个本地会话,然后从那里创建了一个远程会话(因此是AAB而不是ABB),因此组策略的内容可能放在错误的位置,但可以肯定它是正确的。
其次,我发现凭据很难在会话中工作(在本例中$locusercred
)。 我确实将它本地化,但是很奇怪,它突然无法解密安全字符串。 我最终用注册表的定义密钥保存了安全字符串,因此可以始终从任何帐户对其进行解密,您可能需要在此处提出自己的解决方案。
免费的电子书“ PowerShell Remoting的秘密”中对所有这些内容进行了说明,如果您选择双跳方法,建议您阅读一下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.