У меня есть сценарий PowerShell, который запрашивает все компьютеры в моем домене через:
$ADlist = (([adsi]"WinNT://$((Get-WMIObject Win32_ComputerSystem).Domain)").Children) |
Where ({$_.schemaclassname -eq 'computer'}) |
Where ({$_.path -ne ''}) |
Select Path | ft -Hide | Out-String
Работает отлично. Цель состоит в том, чтобы пройти через эти компьютеры, чтобы получить информацию об оборудовании и программном обеспечении через объекты WMI. Миссия выполнена.
За исключением... Я начал бросать это на определенные машины:
Я настроен как контроллер домена в своей компании, и имя хоста DNS разрешено и отвечает в моих тестах на обнаружение ошибок. Небольшое исследование этих проблемных ПК показало, что это были виртуальные машины и узлы виртуальных машин.
Есть ли способ определить, является ли хост виртуальной машиной удаленно (конечно) без каких-либо дополнительных разрешений, которые мне требуются для запуска GWMI
команд? На самом деле, мне просто нужно их игнорировать, так как меня интересуют только физические машины. Единственный способ, который я нашел, - это запросить поле модели из Win32_ComputerSystem
, но это не помогает, поскольку у меня нет разрешений для запуска этой команды на этих компьютерах.
Исследование оказалось пустым, или полагаться на физический доступ к хосту WM, который находится на полпути по всему миру.
Если это абсолютно необходимо, мне могут быть предоставлены повышенные права доступа к этим машинам, но идея заключалась в том, чтобы сделать этот скрипт доступным для всей моей команды. Требование специальных разрешений для запуска сценария означает, что только я могу его запустить.
Select Path | ft -hide | Out-String
->Select -ExpandProperty Path
Я думаю, это то, что вы пытаетесь сделать. - person BenH   schedule 16.06.2018