摘要:在另一台计算机上运行"get-wmiobject“可以正常工作。但是当我使用"invoke-command“" get -wmiobject”时,访问被拒绝。
详细信息:我在中心站点有一个工作站(Computer- central ),我从该工作站运行清单脚本。inventory脚本为我们所有远程站点上的每个IP循环执行几个"get-wmi“命令。如果我以域管理员身份登录到Computer-Central,脚本可以正常工作。
我现在在一个偏远的地方。我现在的工作站是(Computer-SiteA)。所以我不能直接登录到Computer-Central;我必须登录RDP。问题是,RDP会话在脚本结束之前超时(大约需要12个小时)。所以我不能RDP进入,启动脚本,然后离开。出于各种原因,制定计划任务也是不存在的。
Powershell远程处理已启用。我用域管理员帐户登录到Computer-SiteA,并运行以下命令:
invoke-command -computername Computer-Central {dir c:}这是正常工作的。因此,我使用以下命令启动了清单脚本(同样,以域管理员身份在Computer-SiteA上运行):
invoke-command -computername Computer-Central -filepath c:\inventory.ps1脚本启动并连夜运行。但是,get-wmi命令都会产生“访问被拒绝”的错误。我使用RDP进入Computer-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“,它将失败。我希望这能帮到你。
发布于 2013-06-21 22:51:10
问题是,您正在对远程计算机使用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一起工作,因为您使用RDP从A连接到B,并将您的用户名和密码提供给B(您必须为RDP键入用户名和密码)。此时,B可以使用NTLM连接到C。如果不使用RDP,则使用NTLM从A连接到B,并且不允许在不提供用户名和密码的情况下再次使用NTLM从B连接到C。
谢天谢地,PowerShell有一个解决方案,叫做CredSSP身份验证。它确实需要一些额外的工作来设置,但是一旦完成,你就可以做你需要做的事情了。下面是一个很好的演练:
CredSSP将你的用户名和密码从A“隧道”到B,这样你就可以使用NTLM对C进行身份验证。当然,你必须重新输入你的凭证-它不能从你首次登录到A(可能是你的台式机或笔记本电脑)来确定你的密码。
希望这能帮上忙
https://stackoverflow.com/questions/17237512
复制相似问题