【发布时间】:2017-01-24 15:51:01
【问题描述】:
我有以下 PowerShell 脚本。
代码:
$User = "DOMAIN\user"
$PWord = ConvertTo-SecureString -String "somePassword" -AsPlainText -Force
$Credential = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $User, $PWord
$query=...
Get-WmiObject -Computer 192.168.172.10 -Class Win32_ComputerSystem -ErrorAction Stop # Fails
Get-WinEvent -FilterXML $query -ComputerName 192.168.172.10 -Credential $Credential -ea stop # Works
情况:我在一个 IP 为 192.168.1.1 的 AD 服务器上并正在执行我的脚本。 [AD 拥有所有子网的访问权限,没有防火墙阻止访问]
问题:我想查询以下计算机:server1 ip 192.168.172.10 然后这个:
Get-WmiObject -Computer 192.168.172.10 -Class Win32_ComputerSystem -ErrorAction Stop # Fails
因“RPC-Server 不可用”错误而失败,但是:
Get-WmiObject -Computer server1 -Class Win32_ComputerSystem -ErrorAction Stop # Works
有效,这也有效:
Get-WinEvent -FilterXML $query -ComputerName 192.168.172.10 -Credential $Credential -ea stop # Works
服务器与 AD 位于同一域中,并且出于测试目的禁用了 Windows 防火墙。 另一台 IP 为 192.168.172.11 的服务器“server2”同时使用 FQDN 和 IP。
有谁知道为什么在某些情况下(百分之五)Get-WmiObject 会因 ip 失败而使用 FQDN?
我搜索了类似的问题,但都是关于 WinRM 并且正在使用 Invoke-Command 之类的命令。当然,在这种情况下首先需要正确配置 WinRM,但据我了解 Get-WmIObject 不需要 WinRM。 (我没有在所有电脑上做任何配置任务)。
【问题讨论】:
-
您确定您的 DNS 正在返回您认为它正在返回的名称吗?
-
@Bill_Stewart 是的,DNS 工作正常。 Ping 返回正确的 IP,如果我将 FQDN 与 Get-WmiObject -Computer server1 -Class Win32_ComputerSystem -ErrorAction Stop 一起使用,我将获得正确的服务器(服务器名和域是正确的)。我会检查 RDNS 记录。
-
我没有问 DNS 是否工作不正常。我在问它是否正在返回您认为的名称。根据您标记的答案,显然情况并非如此。
标签: powershell windows-7 windows-server-2012 powershell-4.0