0

Мы недавно приобрели небольшую фирму, имеющую 1500 серверов, на которых у нашей команды нет доступа на данный момент, хотя они находятся в домене. Нам нужно выяснить, сколько серверов работает под управлением Windows 2k3 и сколько стоят Windows 2k8. Я знаю, что экран RDP обеих этих версий отличается, например: если мы RDP на машине Win2k3, он сначала предупреждает об этом, и как только мы нажимаем Ok, он выводит нас на экран учетных данных, но в случае Win2k8, он напрямую переносит нас на Crendentials, который является доказательством ОС на сервере. Выполнение этого вручную для 1500 серверов - это трудоемкая задача. Можем ли мы реализовать эту логику экрана RDP, используя скрипт, чтобы узнать версию ОС Windows.Как проверить, работает ли сервер под управлением Windows 2003 или Windows 2008, проверив его экран RDP через скрипт?

Я могу представить себе что-то алгоритм так:

  1. Введите имя сервера.
  2. Invoke mstsc для этого сервера
  3. Проверьте, является ли диалоговое окно прямым приглашением для учетных данных или нет?
  4. Если это так, напечатайте Windows 2k8, else 2k3/2k.

Если эта логика успешна на одном сервере, я могу использовать ее в цикле foreach для всех серверов и экспортировать в Excel.

+0

Они используют другую версию протокола RDP, поэтому было бы легче обнаружить эту разницу. Я был бы удивлен, если бы не был существующий сетевой сканер (например, Nessus?), Который мог бы сделать это за вас. –

+0

Спасибо за ваш добрый ответ. Но поскольку я уже являюсь его устойчивым, и мы находимся в процессе перехода, в настоящее время нет доступа и ресурсов. Помимо сетевого сканера, можете ли вы предложить любой другой способ? Возможно ли реализовать логику RDP (я упоминал в описании) в сценарий powershell? –

ответ

0

С 1500 серверами я собираюсь предположить, что у вас есть Active Directory на месте. В этом случае вы должны быть в состоянии просто выполнить запрос к AD, чтобы получить нужную информацию:

Import-Module ActiveDirectory 

$server = 'somehostname' 
$dc = '...' # domain controller of trusted domain 

$fltr = "OperatingSystem -like '*server*'" 

Get-ADComputer -Filter $fltr -Property OperatingSystem -Server $dc | 
    Where-Object { $_.Enabled } | 
    Select-Object Name, OperatingSystem | 
    Sort-Object OperatingSystem, Name 

Pipe результат в Export-Csv создать CSV-файл, который можно импортировать в Excel.

+0

Спасибо за ваш ответ Ансгар. Я не знаю о модуле Get-ADComputer (предположительно в Power Shell), но я думаю, что это нужно запускать после входа в DC, верно? Если это так, то, как уже сообщалось, мы в настоящее время не имеем доступа к любому из этих серверов. Что касается моего мозга, проверка версии ОС по типу экрана RDP является единственным временным решением, просто нужно реализовать в сценарии vbs или PS. Какие-либо предложения? –

+0

Вам не обязательно быть на контроллере домена, просто нужно, чтобы где-то были установлены командлеты AD PowerShell. Может быть рабочей станцией или сервером, отличным от DC. –

+0

Это часть модуля «ActiveDirectory». Вы можете запустить его на любом сервере с функцией RSAT-AD-PowerShell (* «Модуль Active Directory для Windows PowerShell» *) или на любом клиенте с [RSAT] (http://www.microsoft.com). /en-us/download/details.aspx?id=39296). –