摘要:在另一台计算机上运行“get-wmiobject”可以正常工作。但是当我“调用命令”“get-wmiobject”时,我被拒绝访问。
详细信息:我在我们的中心站点有一个工作站(计算机中心),我从中运行一个库存脚本。清单脚本为我们所有远程站点上的每个 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,同样使用相同的凭据。但情况似乎并非如此。
有任何想法吗?
编辑:我运行这个命令来进行计算机中心查询本身。
invoke-command -computername Computer-Central {get-wmiobject -class win32_computersystem -property name -computername Computer-Central}
那行得通。如果我在以自身为目标的远程系统上调用“get-wmiobject”,它就可以工作。如果我在针对第三个系统的远程系统上调用“get-wmiobject”,它会失败。我希望这有帮助。