Главная > Программирование, Работа > Изменения разрешения на вход пользователей во всем домене

Изменения разрешения на вход пользователей во всем домене

Был у нас когда-то совсем давно сервер с именем MAAT и с ролью web сервера. Время шло и мы его убили. В место него появились два сервера IIS-01 и IIS-02 с теми же ролями. Так же для пользователей, которые используют особо важные программы отдела АСУ был ограничен вход на компьютеры. Ну и как говорится началась глупая работа по замене старого сервера на новые. После третьего звонка я не выдержал и набросал вот такой скрипт. Который ищет в домене пользователей у которых в свойстве userWorkstations есть компьютер MAAT и заменяет его на нужные значения.

#Requires -Version 2.0
#Requires -PSSnapin Quest.ActiveRoles.ADManagement

#########################################################################################
#   Created:        Zakharchenko Andrey Ruslanovich
#   Date:           2009.09.16
#   Description:    Скрипт ищет всех пользователей с определенным компьютером в свойстве
#                        userworkstations и заменяет их нужными именами компьютеров
#########################################################################################

Function Search-MAAT ($listcomputers) {
#--- создаем пустой масив
    $mass = New-Object System.Collections.ArrayList
#--- заполняем массив
    Foreach ($i in $listcomputers -split ',') { $mass.Add($i) | Out-Null }

    $i = 0
    While ($i -ne $mass.Count+1) {
#--- ищем совпадения и устанвливаем флаг
        if (($mass[$i] -match 'maat') -and ($listcomputers -match 'IIS-01') `
                                    -and ($listcomputers -match 'IIS-02')) {
#--- тут флага нету, так как мы сразу удаяем не нежный элемент массива
            $mass.Removeat($i)
        }
        if (($mass[$i] -match 'maat') -and ($listcomputers -match 'IIS-01')) {
            $check = 'iis-02'
        }
        if (($mass[$i] -match 'maat') -and ($listcomputers -match 'IIS-02')) {
            $check = 'iis-01'
        }
        if (($mass[$i] -match 'maat') -and ($listcomputers -notmatch 'IIS-01') `
                                    -and ($listcomputers -notmatch 'IIS-02')) {
            $check = 'all'
        }

#--- обрабатываемт полученные флаги
        switch ($check) {
            'all' { $mass[$i] = 'IIS-01,IIS-02' }
            'iis-01' { $mass[$i] = 'IIS-01' }
            'iis-02' { $mass[$i] = 'IIS-02' }
            default { }
        }
#--- удаляем при каждом прохоте на всякий случай переменную с флагом
        if($check) {Remove-Variable check}
        $i++
    }
#--- собираем массив в строку с разделителем ','
$mass -join ','
}

$root = 'DC=isea,DC=ru'
Foreach ($user in Get-QADUser * -IncludedProperties 'userWorkstations' -SizeLimit 0 -SearchRoot $root) {
    if ( $user.userWorkstations -match 'maat' ) {
        Write-Host "Работы проводится над следующим пользователем: $($user.DisplayName)"
        Set-QADUser $user  -ObjectAttributes @{'userworkstations'=$(Search-MAAT $user.userworkstations)} |Out-Null
    }
}

Собственно лень двигатель прогресса :) Имена компьютеров можно изменить и использовать скрипт повторно.

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