摘要: 在另一台计算机上运行“get-wmiobject”可以正常工作。但是当我“调用命令”“get-wmiobject”时,我的访问被拒绝。
详细信息:我在我们的中心站点有一个工作站(Computer-Central),我从中运行了一个清单脚本。库存脚本为我们所有远程站点上的每个 IP 循环执行多个“get-wmi”命令。如果我以域管理员身份登录 Computer-Central,脚本可以正常工作。
我现在在那些远程站点之一。我当前的工作站是 (Computer-SiteA)。所以我无法直接登录Computer-Central;我必须进入 RDP。问题是,RDP 会话在脚本完成之前超时(大约需要 12 小时)。所以我无法进入 RDP,启动脚本,然后走开。由于各种原因,制作计划任务也出来了。
Powershell 远程处理已启用。我使用域管理员帐户登录 Computer-SiteA 并运行以下命令:
invoke-command -computername Computer-Central {dir c:}
Run Code Online (Sandbox Code Playgroud)
这工作正常。因此,我使用以下命令启动了清单脚本(同样,在 Computer-SiteA 上以域管理员身份运行):
invoke-command -computername Computer-Central -filepath c:\inventory.ps1
Run Code Online (Sandbox Code Playgroud)
脚本启动并运行了一夜。但是 get-wmi 命令都产生了“拒绝访问”错误。我 RDP 进入 Computer-Central 并运行以下命令:
get-wmiobject -class win32_computersystem -property name -computername Computer-SiteB
Run Code Online (Sandbox Code Playgroud)
这工作正常。我得到了 WMI 信息。
然后我登录到 Computer-SiteA 并运行以下命令:
invoke-command -computername Computer-Central {get-wmiobject -class win32_computersystem -property name -computername Computer-SiteB}
Run Code Online (Sandbox Code Playgroud)
这因“拒绝访问”而失败。我以域管理员身份登录,甚至执行了“以不同用户身份运行”以确保 PS 控制台作为我的域管理员帐户打开。
我对此感到非常困惑。“调用命令”应该使用我在本地 PC 上使用的凭据在远程系统上启动 Powershell.exe 进程。“get-wmiobject”命令应该再次使用相同的凭据将 WMI 查询从远程 PC 传递到目标 PC。但情况似乎并非如此。
有任何想法吗?
编辑:我运行此命令是为了使计算机中心查询本身。
invoke-command -computername Computer-Central {get-wmiobject -class win32_computersystem -property name -computername Computer-Central}
Run Code Online (Sandbox Code Playgroud)
那奏效了。如果我在针对自身的远程系统上调用“get-wmiobject”,它会起作用。如果我在针对第三个系统的远程系统上调用“get-wmiobject”,它将失败。我希望这有帮助。
问题是您正在对远程计算机使用 NTLM (Windows) 身份验证,然后尝试连接到另一台计算机。这是典型的“双跳”问题:您在机器 A 上,向机器 B 进行身份验证,然后尝试从 B 连接到机器 C(通过 WMI)。
它适用于 RDP,因为您使用 RDP 从 A 连接到 B,并向 B 提供您的用户名和密码(您必须在 RDP 中实际输入该用户名和密码)。此时,B 能够使用 NTLM 连接到 C。不要使用 RDP,您正在使用 NTLM 从 A 连接到 B,并且如果不再次提供用户名和密码,则不允许您再次从 B 到 C 使用 NTLM。
值得庆幸的是,PowerShell 有一个解决方案,称为 CredSSP 身份验证。虽然它确实需要一些额外的工作来设置,但是一旦完成,您就可以做您需要做的事情。这是一个很好的演练:
CredSSP 将您的用户名和密码从 A“传输”到 B,以便您可以通过 NTLM 向 C 进行身份验证。当然,您必须重新输入您的凭据 - 它无法从您首次登录到 A(可能是您的台式机或笔记本电脑)时确定您的密码。
希望这可以帮助,