Ищем адреса доменных компьютеров


Задача: получить список учетных записей компьютеров в домене, чьи IP-адреса принадлежат заданным сетям

Задача распадается на несколько подзадач:

1.       Получить получить список учетных записей компьютеров в домене

2.       Для каждой учетной записи компьютера получить его IP-адрес

3.       Выбрать учетные записи компьютеров, чьи адреса соответствуют шаблону

Получился такой скрипт:

$CompList = (Get-ADComputer  -Filter «*»)

 

$DumpCompList = @()

 

$FilteredCompList = $CompList |

    % { try {$n=$_.Name; [System.Net.Dns]::GetHostEntry($_.Name)}

        catch {$DumpCompList +=  $n} } |

     ? {$_.AddressList | ? {$_.IPAddressToString -match «172.16.22[5,6]»}

       }

 

 

Этот скрипт не только ищет нужные нам учетные записи компьютеров, но и создает список имен компьютеров, у которых нет IP-адресов, в переменной $DumpCompList (можно использовать для удаления давно умерших компьютеров).

Примечание:

Распознавание имен идет через DNS, поэтому скрипт работает максимально быстро: задержки происходят только на именах, которых нет в DNS.

Полезные ссылки:

1.       .Net класс System.Net.Dns

2.       Описание метода GetHostEntry

3.       Командлет Get-ADComputer

Как перезагрузить компьютер из Powershell


 

Есть несколько способов:

1. Использовать командлет Stop-Computer  (ограниченные возможности)

2. Использовать метод Win32Shutdown из класса WMI Win32_OperatingSystem

(Get-WmiObject -Class Win32_OperatingSystem –ComputerName .).InvokeMethod(«Win32Shutdown»,0)

(Вместо . можно задать имя удаленного компьютера)

3. Использовать вызов утилиты shutdown.exe

4. Использовать вызов WinAPI InitiateSystemShutdown

$global:Win2kClass = Add-Type -Namespace NSadvapi32 -Name Utils -MemberDefinition @»

// http://msdn.microsoft.com/en-us/library/windows/desktop/aa376873(v=vs.85).aspx

[DllImport(«advapi32.dll», SetLastError = true)]

public static extern bool InitiateSystemShutdown(string lpMachineName, string lpMessage, int dwTimeout, bool bForceAppsClosed, bool bRebootAfterShutdown);

«@ -passthru

Далее можно сделать вызов [NSadvapi32.Utils]::InitiateSystemShutdown или $Win2kClass::InitiateSystemShutdown с нужными параметрами.

Этот способ сравним с вызовом утилиты shutdown.exe по своим возможностям

Как восстановить почтовую базу Exchange 2010 несколькими кликами мышки


 

В общем, утром упало все – таково свойство электричества: когда его внезапно выключают в ЦОД-е, становится плохо всем. Первая мысль о почтовых базах была: кранты им – упали не только виртуалки, но все хранилища! Когда наконец восстановились хранилища, сеть, виртуальная платформа, домен-контроллеры и загрузились виртуальные машины с Exchange 2010, я обнаружил ожидаемое – базы не смонтировались. И это не удивило. Посмотрел временные метки почтовых баз. Они были обновлены задолго до падения, что внушало большой оптимизм в целостность почтовых баз. Временные метки логов тоже порадовали. Что же дальше предпринять? Ни за что не угадаете мой следующий шаг! (Напишите ваши варианты на листочке бумаги – потом сравним).

Читать далее