摘要: 在另一台计算机上运行 "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”来对第三个系统进行定位,它就会失败。希望这可以帮到你。