Отслеживание рабочих столов предприятия [закрыто]

Часть моей работы состоит в том, чтобы убедиться, что для компьютеров в определенном подразделении что фактически используется = что указано в AD = то, что указано в SCCM. Это для среды с 250 тыс. ПК, но мне особенно важны 70 тыс. Его довольно легко сравнить с SCCM, но гораздо сложнее отслеживать компьютеры, которых на самом деле не существует. Я пытаюсь придумать творческие способы понять это.

мой вопрос: хороший ли способ найти несуществующие машины для запроса AD с Powershell для компьютеров, которые не вошли в систему за X дней?

Я подумал о гораздо более сложной задаче в powershell: Вытащить имена хостов из AD Пингуйте все хосты в моем OU и для успеха удалите их из списка. Выполняйте это, скажем, каждые 6 часов в течение недели, продолжая удалять машины, которые имели успех проверки связи. Ноутбуки мне бы пришлось обрабатывать по-разному.

Любые другие идеи, предложения и т. д.?

4 голоса | спросил mcudm001 20 Maypm13 2013, 16:53:31

2 ответа


0

По варианту всеобъемлющего предложения Patricks я бы использовал реплицированный атрибут LastLogontimeStamp, чтобы сузить поиск:

Import-Module ActiveDirectory
$threshold = (Get-Date).AddDays(-44)
$computers Get-ADComputer -Filter * -SearchBase "ou=desiredou,dc=domain,dc=tld" -Properties LastLogontimeStamp
$oldComps = $computers | where {[Date.Time]::FromFileTime($_.lastlogontimestamp) -lt $threshold}

$oldComps будет удерживать все компьютеры, которые не вошли в систему как минимум в течение 30 дней.

Это немного нелогично с пороговым значением 44 дня, но для предотвращения потока обновлений репликации в LastLogontimeStamp атрибут обновляется только если его значение старше 9 дней. Если значение устарело от 9 до 14 дней, случайный процесс определяет, обновлять его или нет.

Вот отличное объяснение: http://blogs.technet.com/b/askds/archive/2009/04/15/the-lastlogontimestamp-attribute-what-it -был спроектированный-для-и-как-он-works.aspx

ответил Mathias R. Jessen 10 J0000006Europe/Moscow 2013, 14:37:54
0

Объект AD компьютеров имеет отметку времени LastLogon, которая дает полезный индикатор текущего состояния компьютера.

Если вы можете установить командлеты сторонних разработчиков, то Quest Active Directory являются командлетами невероятно полезно.

$result = @()
$OU = "DC=ncp,DC=co,DC=uk"
Foreach($computer in (Get-QADComputer -SearchRoot "$ou" -sizelimit 0))
    {
    $result += "$((Get-QADComputer $computer -IncludeAllProperties).lastLogon), $computer"
    }

$ result перечислит все ваши компьютеры в указанном OU и дату их последнего входа в систему, как показано ниже:

06/10/2013 08:48:25, NATTHN21$
05/13/2011 14:54:04, NATTHN02$
06/10/2013 08:42:51, NATRHN01$
06/10/2013 08:45:38, NCPHON01$

Вам необходимо выполнить это для всех контроллеров домена, к которым может подключиться этот компьютер. Организация вашего размера это, вероятно, нецелесообразно.

В качестве альтернативной меры. Свойство объекта 'whenChanged' в объектах вашего компьютера AD является паролем учетной записи компьютера. Это автоматически обновляется через 30 дней (обычно по умолчанию в Win 2K и более поздних версиях. Проверка объекта групповой политики домена по умолчанию может подтвердить это).

Если вы обнаружите учетные записи компьютеров, у которых «whenChanged» старше 30 дней, то это компьютеры, которые не вошли в систему в этот период. Это хорошо работает для больших сетей с несколькими DC, так как этот рисунок реплицируется там, где «lastLogon» отсутствует.

Просто измените строку в приведенном выше сценарии, чтобы удалить «.lastLogon», и замените ее на «.whenChanged»

Если вы не можете установить Quest AD, вам нужно будет использовать компьютер с установленным RSAT (или DC) и использовать командлет Get-ADComputer (тип 'Import-Module ActiveDirectory').

Третий вариант отслеживания будущего использования - использование сценария входа. Я делал это на клиентах несколько лет назад, и это работало хорошо, хотя мы работали на нескольких загруженных машинах, а не на ~ 70K.

В то время наш сценарий входа был .BAT-файлом. Создайте новый .BAT в NETLOGON со следующей строкой (например, LogonTrack.BAT)

::LogonTrack.BAT
ECHO %date% >Z:\%computername%

и в конце любого из пакетного файла входа в систему, который может использоваться вашими 70К пользователями, добавьте строку

call LogonTrack.BAT

При этом создается файл с именем компьютера, а дата файла является последним входом в сопоставленное местоположение.

Я бы не рекомендовал это, но вы могли бы проверять журналы событий для этой информации, хотя я обычно избегал погружений в журналы, где это возможно. Вам потребуется Событие 4624 .

Наконец, я также использую LANSweeper у клиентов, и это здорово. Это отличная отчетность на старых компьютерах. Однако, как платный продукт, требующий отдельной установки и сервера, он может быть не очень полезным для вас. Кроме того, для систем 250К вам понадобится довольно мощный бэкэнд, а не виртуальная виртуальная машина, которая валяется.

ответил Patrick 10 J0000006Europe/Moscow 2013, 13:18:32

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132