1

У меня есть следующий сценарий PowerShell.Get-WmiObject не работает с IP, но с FQDN

Код:

$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 

Ситуация: Я на сервере AD с IP 192.168.1.1, как и выполнение моего сценария. [AD имеет права доступа для всех подсетей и нет брандмауэр блокирует доступ]

Выпуск: Я хочу запросить следующий компьютер: сервер1 с внутрибрюшинно 192.168.172.10, то это:

Get-WmiObject -Computer 192.168.172.10 -Class Win32_ComputerSystem -ErrorAction Stop # Fails 

терпит неудачу с "RPC-сервер недоступен" ошибка, но это:

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, для целей тестирования отключены. И другой сервер «server2» с ip 192.168.172.11 работает как с FQDN, так и с ip.

У кого-нибудь есть идея, почему в некоторых случаях (5 из hundrets) Get-WmiObject не работает с ip, но работает с FQDN?

Я искал похожие проблемы, но все о WinRM и используют команды типа Invoke-Command. Наверняка WinRM сначала нужно настроить прямо в этом случае, но, насколько я понял, Get-WmIObject не нуждается в WinRM. (Я не выполнял никаких задач настройки на всех компьютерах).

+0

Вы уверены, что ваш DNS возвращает имена, которые, по вашему мнению, возвращаются? –

+0

@Bill_Stewart Да, DNS работает нормально. Ping возвращает правильный IP-адрес, а также если я использую полное доменное имя с Get-WmiObject -Computer server1 -Class Win32_ComputerSystem -ErrorAction Stop Я получаю правильный сервер (имя сервера и домен правильно). Я проверю записи RDNS. – PESP

+0

Я не спрашивал, не работает ли DNS. Я спрашивал, возвращает ли он имена, которые, как вы думали, были. По-видимому, это было не так, на основе вашего отмеченного ответа. –

ответ

1

Проблема, с которой вы сталкиваетесь, связана с обратными DNS-записями .

В вашем случае, вы можете иметь несколько RDNS записей для одной и той же IP, в результате чего проблема будет прерывистым.

Проверьте зону обратного просмотра и соответствующие PTR записей.

Это должно решить вашу проблему.

Надеюсь, это поможет.

+0

Да, где правильно: для каждого неудавшегося сервера произошла неправильная запись PTR (например, 192.168.172.10 -> server3). Я удалил их, и после того, как они были реплицированы, мой скрипт работал нормально. Спасибо! Вопрос в том, почему RDNS необходимо/важно? Я запрашиваю сервер, у которого нет зоны RDNS или нет RDNS PTR. И почему Get-WinEvent работал и Get-WmiObject нет ?. Для меня это действительно сбивает с толку. – PESP

+0

@PESP: зона обратного просмотра имеет определенные записи, включая запись PTR, которая заставляет разрешить IP-адрес имени. Поэтому, если вы не сопоставляете это, тогда это будет путать для DNS, по которому запись должна идти, если вы нажмете на IP. Запись A содержит имя для IP-адреса. Надеюсь, ты это получил. Я отвечу на скриншоты и все. Дайте мне ссылку тоже :) –

+0

Думаю, я понял. Но что произойдет, если нет зоны RDNS для подсети? У меня есть несколько подсетей без зоны RDNS, и они работают нормально. Получает dns-сервер в этом случае просто «проигнорирован» и не выполняется обратный поиск? – PESP