PowerShell: 调用命令权限问题

5

摘要: 在另一台计算机上运行 "get-wmiobject" 正常工作。但是当我使用 "invoke-command" "get-wmiobject" 时,会收到访问被拒绝的错误消息。

详细信息: 我在我们的中央站有一台工作站 (计算机-Central),从中我运行清单脚本。清单脚本循环遍历所有远程站点上每个 IP 的多个 "get-wmi" 命令。如果我以域管理员身份登录计算机-Central,则脚本正常工作。

现在我在其中一个远程站点。我的当前工作站是(计算机-SiteA)。所以我不能直接登录到计算机-Central;我必须通过 RDP 进入。问题在于,在脚本完成之前,RDP 会话会超时(需要大约12小时)。所以我不能登录RDP,启动脚本并离开。由于各种原因,创建定时任务也不可行。

Powershell 远程控制已启用。我使用域管理员帐户登录计算机-SiteA 并运行以下命令:

invoke-command -computername Computer-Central {dir c:}

这个操作正常进行。于是我用下面的命令启动了库存脚本(再次强调,要以域管理员身份在计算机SiteA上运行):

invoke-command -computername Computer-Central -filepath c:\inventory.ps1

脚本已经启动并运行了一整夜。但是所有的get-wmi命令都产生了“访问被拒绝”的错误。 我通过远程桌面连接到Central计算机,并运行了以下命令:
get-wmiobject -class win32_computersystem -property name -computername Computer-SiteB

这个命令正常执行了,我成功地获取了WMI信息。

然后我登录到Computer-SiteA,并执行了以下命令:

invoke-command -computername Computer-Central {get-wmiobject -class     win32_computersystem -property name -computername Computer-SiteB}

这个操作失败了,提示“拒绝访问”。我已经以域管理员身份登录,并使用“以不同用户运行”功能,确保PS控制台以我的域管理员帐户打开。
我对此感到非常困惑。“Invoke-Command”应该使用本地PC上使用的凭据在远程系统上启动Powershell.exe进程。“get-wmiobject”命令应该将WMI查询从远程PC传递到目标PC,同样使用相同的凭证。但情况并非如此。
有什么想法吗?
编辑:我运行了这个命令,使Computer-Central查询自己。
invoke-command -computername Computer-Central {get-wmiobject -class     win32_computersystem -property name -computername Computer-Central}

搞定了。如果我在远程系统上调用“get-wmiobject”来对自身进行定位,那么它就能正常工作。但是如果我在远程系统上调用“get-wmiobject”来对第三个系统进行定位,它就会失败。希望这可以帮到你。

1个回答

3
问题在于您正在使用NTLM(Windows)身份验证连接到远程计算机,然后尝试连接到另一台计算机。这是经典的“双跳”问题:您在A机器上,对B机器进行身份验证,然后尝试通过B(通过WMI)连接到C机器。

http://blogs.msdn.com/b/besidethepoint/archive/2010/05/09/double-hop-authentication-why-ntlm-fails-and-kerberos-works.aspx

因为你是通过RDP从A连接到B,然后将你的用户名和密码提供给B(必须在RDP中输入),所以它可以使用NTLM连接到C。当你不使用RDP时,你是通过NTLM从A连接到B的,如果你想再次使用NTLM从B连接到C,就必须再次输入用户名和密码。
幸运的是,PowerShell有一个解决方案,叫做CredSSP身份验证。虽然需要一些额外的设置工作,但一旦完成,你就可以做你需要做的事情了。这是一个很好的步骤指南:

https://blogs.technet.microsoft.com/heyscriptingguy/2012/11/14/enable-powershell-second-hop-functionality-with-credssp/

CredSSP将您的用户名和密码从A传输到B,以便您可以使用NTLM对C进行身份验证。当然,您必须重新输入您的凭据——它无法从您对A(可能是您的桌面或笔记本电脑)的初始登录中确定您的密码。

希望这可以帮助您,


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接