让我们想象一下上面的架构。 并假设您的计算机需要“ Get-WmiObject -class Win32_Service”。 假设您配置一切正常,最后尝试发送以下命令:
$server = "pc01.xxxx.yyy"
$User = "$server\admin_pc01"
$PWord = ConvertTo-SecureString -String "p4ssw0rd" -AsPlainText -Force
$Credential = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $User, $PWord
Get-WmiObject -class Win32_Service -ComputerName $server -Credential $Credential
但是您收到: Get-WmiObject:访问被拒绝。 (来自HRESULT的异常:0x80070005(E_ACCESSDENIED))
为什么?
我进行了一些研究,然后在pc01.xxxx.yyy的事件查看器中发现了三个事件:4776,4672,4624,其中包含凭据请求,凭据验证和访问权限。 代码错误:0x0 =>没有错误,凭据有效。 在网络信息的事件ID 4624上,我找到了我的工作站名称,我的IP和我的tcp源端口:(例如:17380)
很好..但是甚至发疯了!
然后,我深入研究防火墙(绿色路由循环的一部分),发现了一个有趣的东西。
在我的PC上,我有两个连接: 1)从mypc到192.168.1.1从端口17380到端口135 2)从mypc到10.10.10.1从端口17381到端口135
哈哈哈...那我明白了!
Mypc在pc01.zzzz.nnn的同一域zzzz.nnn中 当我发送命令Get-WmiObject使用pc01.xxxx.yyy打开auth会话(源端口17380)(并且工作正常)之后,Get-WmiObject打开另一个端口以传输数据(源端口17381),但是在此过程中case 命令不使用FQDN,仅使用主机名 !!!! 这意味着Get-WmiObject将命令发送到pc01,我的计算机添加了DNS解析的默认域(zzzz.nnn),并... etvolià...它将第二个请求发送到10.10.10.1 !!!!
很显然,如果在我的主机文件中,则添加该行 pc01 192.168.1.1 Get-WmiObject请求工作。
但这对我来说不是一个可以接受的解决方案。