• PowerShell - Получаем список трастов AD

    Получаем список трастов AD с помощью PowerShell для текущего домена:

    $myLocalDomain = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()

    $myLocalDomain.GetAllTrustRelationships() | ft -AutoSize

    Тоже самое только если нужно явно указать конкретный домен (указываем в переменной $SpecDomain):

    $SpecDomain = "my.holding.com"

    $myRootDirContext = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext('domain',$SpecDomain)

    $myRootDomain = [System.DirectoryServices.ActiveDirectory.Domain]::GetDomain([System.DirectoryServices.ActiveDirectory.DirectoryContext]$myRootDirContext)

    $myRootDomain.GetAllTrustRelationships() | ftAutoSize

    Источник информации: organic fertilizer - using powershell to list active directory trusts

  • PowerShell - Резервное копирование групповых политик Active Directory (GPO)

    PowerShell GPO backup scriptОперацию резервного копирования доменных объектов групповых политик (GPO) можно выполнить штатным способом с помощью консоли Group Policy Management (gpmc.msc), но если нам потребуется автоматизировать данный процесс, - можно использовать командлеты модуля GroupPolicy для PowerShell 2.0

    Читать далее...

  • Windows Server 2008 R2 - Корзина Active Directory

    Active Directory Recycle BinПриведу маленькую шпаргалку по использованию корзины AD (Active Directory Recycle Bin) в домене Windows Server 2008 R2.

    Читать далее...

  • PowerShell - Аудит использования учетных записей

    imageПродолжая тему анализа доменных учетных записей пользователей и компьютеров, которые давно не проходили авторизацию в домене предлагаю ещё один вариант скрипта из заметки PowerShell – Поиск неиспользуемых учетных записей пользователей и компьютеров в домене. В текущем варианте используется библиотека AD для PowerShell 2.0

    В указанном примере в конкретном OU выбираются все действующие учетные записи пользователей и компьютеров и выполняется сравнение даты последней авторизации (LastLogonDate) с максимально возможным значением (текущая дата минус 90 дней)

    Import-Module ActiveDirectory
    $SearchOU = "OU=Domain Users and Computers,DC=mydom,DC=com"
    $DaysLimit = 90
    $OldestDate = (Get-Date).AddDays(-$DaysLimit)
    #
    $Users = Get-ADUser -Filter {(Enabled -eq $True)} `
    -SearchBase $SearchOU -Properties SamAccountName,LastLogonDate,CN
    $UsersOld = $Users | Where-Object {$_.LastLogonDate -le $OldestDate}
    $UsersOld | Select `
    @{label="SamAccountName";expression={$_.SamAccountName}},`
    @{label="Last Logon";expression={$_.LastLogonDate}},`
    @{label="User Full Name";expression={$_.CN}}`
    | Sort -Property "Last Logon" | Format-Table  –AutoSize
    Write-Host "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
    write-host "Total users in OU: " $Users.Count " / Unused users: " $UsersOld.Count
    Write-Host "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
    #
    $Comps = Get-ADComputer -Filter {(Enabled -eq $True)} `
    -SearchBase $SearchOU -Properties Name,LastLogonDate,Description
    $CompsOld = $Comps | Where-Object {$_.LastLogonDate -le $OldestDate}
    $CompsOld | Select `
    @{label="PC Name";expression={$_.Name}},`
    @{label="Last Logon";expression={$_.LastLogonDate}},`
    @{label="Description";expression={$_.Description}}`
    | Sort -Property "Last Logon" | Format-Table  –AutoSize
    Write-Host "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
    write-host "Total computers in OU: " $Comps.Count " / Unused computers: " $CompsOld.Count
    Write-Host "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

  • PowerShell - Аудит использования парольной политики

    imageПродолжая тему анализа доменных учетных записей пользователей на предмет их соответствия действующей парольной политике предлагаю ещё один вариант скрипта из заметки  PowerShell – Поиск пользователей домена с устаревшими паролями. В текущем варианте используется библиотека AD для PowerShell 2.0

    В указанном примере в конкретном OU выбираются все действующие учетные записи пользователей, за исключением сервисных, для которых значение атрибута SamAccountName начинается с символов “s-” и выполняется сравнение даты последней смены пароля с максимально возможным значением (текущая дата минус 185 дней)

    Import-Module ActiveDirectory
    
    $SearchOU = "OU=Domain Users,DC=mydom,DC=com"
    $PWAgeDaysLimit = 185
    
    $Users = Get-ADUser -Filter {(Enabled -eq $True) -AND (SamAccountName -notlike "s-*")} `
    -SearchBase $SearchOU `
    -Properties CN, SamAccountName, PasswordLastSet, PasswordNeverExpires, CannotChangePassword, LastLogonDate
    
     
    $OldestDate = (Get-Date).AddDays(-$PWAgeDaysLimit)
    $UsersOldPWD = $Users | Where-Object {$_.PasswordLastSet -le $OldestDate}
    $UsersOldPWD | Select `
    @{label="User Full Name";expression={$_.CN}},`
    @{label="SamAccountName";expression={$_.SamAccountName}},`
    @{label="PWD Last Set";expression={$_.PasswordLastSet}},`
    @{label="PWD Never Expirest";expression={$_.PasswordNeverExpires}},`
    @{label="PWD Cannot Change";expression={$_.CannotChangePassword}},`
    @{label="Last Logon";expression={$_.LastLogonDate}}`
    | Sort -Property "PWD Last Set"`
    | Format-Table  –AutoSize 
    Write-Host "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
    write-host "Total user accounts in OU: " $Users.Count
    write-host "Users with passwords not changed in" $PWAgeDaysLimit "days: " $UsersOldPWD.Count
    Write-Host "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
  • Ограничение доступа к внешним накопителям CD, FD, USB с помощью Group Policy Preferences

    Если по каким-то причинам возникает необходимость на некоторых компьютерах c OC Windows полностью заблокировать доступ пользователям к возможности использования съёмных носителей, – можно воспользоваться настройками доступными в стандартных Административных шаблонах групповых политик в разделе Computer Configuration > Administrative Templates > System > Removable Storage Access

    Для того чтобы применить эти параметры к какой-то отдельной группе компьютеров -можно создать отдельную групповую политику с такими настроенными параметрами и прилинковать её например к контейнеру (OU) в домене или изменить разрешения безопасности для этой политики так чтобы применяться она могла лишь к конкретной доменной группе безопасности, в которую включены соответствующие компьютеры.

    Читать далее...

  • PowerShell - Проверяем флаг защиты доменных OU от случайного удаления

    imageВ оснастке Active Directory Users and Computers (dsa.msc) открыв свойства любого OU на закладке Object можно наблюдать флаг “Protect object from accidental deletion” (Защитить объект от случайного удаления). В библиотеке “Best Practices Analyzer for Active Directory Domain Services” есть хорошая заметка на тему управления этим флагом через PowerShell - AD DS: All OUs in this domain should be protected from accidental deletion

    Для того чтобы получить перечень всех OU на которых не установлен флаг защиты выполним скриптоблок:

    # Переменная $LDAPPathOU – ADSI путь к контейнеру внутри которого будем производить поиск OU (в формате distinguishedName)

    #

    $LDAPPathOU = "OU=ImportantOUs,DC=holding,DC=com"

    Import-Module ActiveDirectory

    Get-ADOrganizationalUnit -filter * -SearchScope Subtree -SearchBase $LDAPPathOU -Properties ProtectedFromAccidentalDeletion | Where {$_.ProtectedFromAccidentalDeletion -match "False"} | Select name, DistinguishedName | Format-Table –AutoSize


    Для того чтобы на всех незащищённых OU сразу выставить данный флаг немного изменим скриптоблок до следующего вида:

    $LDAPPathOU = "OU=ImportantOUs,DC=holding,DC=com"

    Import-Module ActiveDirectory

    Get-ADOrganizationalUnit -filter * -SearchScope Subtree -SearchBase $LDAPPathOU -Properties ProtectedFromAccidentalDeletion | Where {$_.ProtectedFromAccidentalDeletion -match "False"} | Set-ADOrganizationalUnit -ProtectedFromAccidentalDeletion $true

    При желании выполнение такого скрипта можно включить в планировщик задач чтобы в последующем быть уверенным в том, что на всех важных OU этот флаг будет включён.

  • SCOM 2007 R2 - Аудит изменений доменных групп безопасности

    imageВ больших доменных инфраструктурах имеющих несколько доменных администраторов может быть весьма актуальным вопрос аудита изменений, производимых в членстве предопределённых административных групп.

    Для решения этой задачи воспользуемся возможностями SCOM и на примере доменной группы “Domain Admins” создадим правила, которые будут отслеживать события, регистрируемые в журнале “Security” на контроллерах домена в момент добавления и удаления пользователей в эту доменную группу безопасности.

    Читать далее...

  • Windows XP SP3 - настраиваем путь к дистрибутиву через GPP

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

    Воспользуемся механизмом Group Policy Preferences для централизованной раздачи таким клиентам сведений о месторасположении дистрибутивных файлов в сети. Информация о пути, использованном для установки ОС и её компонент, Windows XP может хранить в значениях ключей реестра SourcePath и ServicePackSourcePath в ветке HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionSetup.

    Сделаем на файловом сервере каталог общего доступа и перепишем в него содержимое дистрибутивного носителя ОС (понадобится дистрибутив с последним интегрированным пакетом обновлений)

    Откроем редактор доменной групповой политики, распространяемой на наши клиентские компьютеры, в разделе Computer Configuration > Preferences > Windows Settings > Registry и вызовем мастер создания новой записи реестра.

    image

    В мастере выберем подключение к любому клиентскому компьютеру с Windows XP для того чтобы взять с него информацию об интересующих нас ключах реестра

    image

    После нажатия кнопки Finish мастер в виде вложенных папок скопирует структуру контейнеров реестра и добавит два интересующих нас ключа. Откроем свойства этих элементов и установим тип действия (Action) – Update, а в поле значения (Value data) введём сетевой путь к общему каталогу с дистрибутивом ОС для параметра SourcePath:

    clip_image005

    Также указываем аналогичное значение для параметра ServicePackSourcePath (подразумевается, что мы имеем дистрибутив с интегрированным в него пакетом исправлений):

    clip_image006

    Небольшое замечание:
    В ходе использования мастера добавления ключей реестра, я заметил один интересный глюк. Дело в том что, по завершению работы мастер сам заполняет значения полей Hive и Key Path, однако если после создания мастером такого элемента не зайти в его свойства и в ручную не выбрать раздел реестра (Hive), оно останется фактически пустым…

    image

    Это выяснилось после того как на клиентах упорно не хотел обновляться указанный ключ реестра, зато вместо этого создавался подобный ключ в пользовательском разделе реестра, который, как мы понимаем, никакой силы не имеет. После того как я открыл свойства элемента реестра, созданного мастером в GPP и вручную выбрал раздел HKEY_LOCAL_MACHINE… политика заработала так, как мы этого от неё ждали.

    image

    Если данная групповая политика применяется к общей массе клиентских компьютеров, в составе которых есть не только Windows XP, мы можем ограничить применение данной настройки реестра по версии ОС. Для этого откроем свойства корневой папки иерархии папок, сделанной мастером добавления, и на закладке Common включим режим нацеливания Item-level targeting

    image

    По кнопке Targeting добавим новое условие, означающее то, что данная настройка реестра будет применяться только компьютерам с ОС Windows XP

    clip_image012

    Если же по каким-то причинам в вашей организации не используются механизмы Group Policy Preferences, то можно настроить данный параметр и другими способам, например импортом нужной информации в реестр через логон-скрипт из *.reg файла с содержимым примерно следующего содержания:

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionSetup]

    "SourcePath"="\\server\Sources\winxp_pro_sp3_x86_ru"

    "ServicePackSourcePath"="\\server\Sources\winxp_pro_sp3_x86_ru"

  • Запрос авторизации Outlook при переключении БД Exchange или перезагрузке ноды NLB

    imageБыло замечено, что при выполнении процедуры переключения активной копии БД Exchange Server 2010 в группе DAG с одного сервера на другой (Database Switchover), а так же при проверке механизма аварийного переключения (Database Failover) на клиентах Outlook 2007/2010 происходит кратковременный разрыв соединения с сервером Exchange, сопровождаемый появлением окна авторизации для ввода имени пользователя и пароля. При этом, если без ввода учетных данных просто перезапустить Outlook, - соединение успешно восстанавливается. После проведения изыскательных мероприятий выяснилось то, что клиент Outlook в момент кратковременной потери MAPI (RPC) соединения c активным экземпляром БД Exchange пытается использовать альтернативный метод доступа – RPC over HTTP, то есть пытается использовать встроенный механизм мобильного клиента Outlook Anywhere. И в нашем случае это происходит из-за того, что на стороне серверов клиентского доступа компонента Outlook Anywhere настроена на использование Basic Authentication.

    Одним из методов решения данной проблемы может быть отключение использования встроенного механизма Outlook Anywhere в клиентах Outlook, включённого по умолчанию. Для этого в Outlook откроем свойства учетной записи > «Другие настройки» > перейдём на закладку «Подключение» и отключим флажок «Подключение к Microsoft Exchange по протоколу HTTP»:

    image

    Если стоит задача отключить данный механизм массово на всех клиентах, то можно это выполнить, например, с помощью доменных групповых политик – GPO. При попытке использовать ADMX шаблоны групповых политик в домене Windows Server 2008/2008 R2 имеющихся в комплекте с MS Office 2007/2010 вы можете убедиться в том, что они не имеют параметров для настройки мобильного клиента Outlook.
    В базе знаний Microsoft можно найти две статьи описывающие проблему невозможности настройки параметров мобильного клиента Outlook c помощью стандартных шаблонов GPO:

    В этих статьях нам доступны для загрузки шаблоны GPO в уже устаревшем формате – *.adm. Мы можем воспользоваться средством ADMX Migrator для того чтобы сконвертировать полученные ADM файлы в формат ADMX.

    После конвертации из каждого файла *.adm мы получим по два файла – *.admx (шаблон GPO) и *.adml (файл языкового описания для шаблона GPO).
    Зададим полученным файлам соответствующие имена:

    • Для Outlook 2007: outlk12_961112.admx и outlk12_961112.adml
    • Для Outlook 2010: outlk14_2426686.admx и outlk14_2426686.adml

    Для того чтобы в консоли управления групповыми политиками наши новые шаблоны смотрелись более наглядно, чем в том виде в котором они представлены по умолчанию, внесём некоторые корректировки в языковые файлы:

    В файле outlk12_961112.adml строку, описывающую отображаемое имя раздела GPO:

    <string id="L_MicrosoftOfficeOutlook12-Article961112">Article 961112 Policy Settings</string>

    заменим на строку:

    <string id="L_MicrosoftOfficeOutlook12-Article961112">Microsoft Office Outlook 2007 KB961112</string>

    В файле outlk14_2426686.adml строку, описывающую отображаемое имя раздела GPO:

    <string id="L_MicrosoftOfficeOutlook">Microsoft Outlook 2010</string>

    заменим на строку:

    <string id="L_MicrosoftOfficeOutlook">Microsoft Outlook 2010 KB2426686</string>

    Скопируем полученные в результате шаблоны outlk12_961112.admx и outlk14_2426686.admx в каталог центрального доменного хранилища шаблонов GPO - \domain.com\SYSVOL\domain.com\Policies\PolicyDefinitions
    Языковые файлы outlk12_961112.adml и outlk14_2426686.adml скопируем в это же размещение в подкаталог en-us.

    После этого, при работе с оснасткой редактирования доменных групповых политик Group Policy Management Editor (gpmc.msc) у нас появится возможность задавать соответствующие параметры:

    image

    Для того чтобы полностью отключить попытки Outlook использовать протокол HTTP, параметр RPC/HTTP Connection Flags должен быть включён и его значение должно быть установлено в No Flags:

    image

    После вступления в силу данного параметра GPO, для всех клиентских профилей будет добавлено соответствующее значение в куст реестра HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\12.0\Outlook\RPC (для Outlook 2007) или HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\14.0\Outlook\RPC (для Outlook 2010):

    image

    …а в свойствах учетной записи Outlook параметры настройки мобильного клиента Outlook станут недоступны для изменений:

    image

    В развитие темы запросов авторизации Outlook можно также отметить то, что из практики замечено то, что в некоторых случаях перезагрузка одной из нод NLB кластера, обслуживающего массив Client Access Array, так же может порождать подобную проблему. Поэтому в случае если в рабочее время нам потребуется выполнить обслуживание серверов Client Access входящих в NLB кластер с необходимостью их перезагрузки, - перед выполнением перезагрузки в оснастке Network Load Balancing Manager соответствующий сервер желательно перевести в режим DRAINSTOP

    image

    При этом после перезагрузки нода NLB будет автоматически включаться в работу кластера если в оснастке NLB Manager в свойствах этого хоста значение параметра Default state установлено в Starded:

    image

    Дополнительная информация:

    Обновление 20.02.2018

    По просьбам трудящихся, у которых не получается самостоятельно сконвертировать ADM шаблоны, добавляю ссылку на готовые файлы: KB961112 & KB2426686 ADMX