Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Windows Server 2008/2008 R2 (http://forum.oszone.net/forumdisplay.php?f=97)
-   -   Блокировка\разблокировка учётных записей в Active Directory (http://forum.oszone.net/showthread.php?t=333504)

NV_NV 01-03-2018 17:51 2800978

Блокировка\разблокировка учётных записей в Active Directory
 
Помогите с написанием скрипта.
Проблема заключается в следующем.
На новом месте работы от прошлого админа достался скрипт на блокировку учёток в AD по времени простоя.
Сейчас руководство ставит задачу - разработать скрипт автоматического отключения и включения учетной записи согласно графика отпусков (сам график ручками в .csv файл загонять буду).
Причина автоматизации - пользователей более тысячи человек.
AD крутится на 2008 R2 сервере

Сам скрипт:
$LogFolder = "C:\Scripts\Disable\Log\"
$LogFile = $LogFolder + "Disable"

$OU = "OU=Users,OU=RU,DC=----,DC=----"

$UnusedDays = 3

$CurrentDate = Get-Date -format yyyy_MM_dd
$CurrentTime = Get-Date -format HH_MM_ss

$DateLastActive = (Get-Date) - (new-timespan -days $UnusedDays)
$DateLastActiveTimeStamp = (Get-Date $DateLastActive).ToFileTime()

$LogFile = $LogFile + "_Date_" + $CurrentDate + "_Time_" + $CurrentTime + ".csv"

$ADUsersForWork = Get-ADUser -Filter { (((lastLogonTimestamp -lt $DateLastActiveTimeStamp) -or (-not (lastLogonTimestamp -like "*"))) -and (whenCreated -lt $DateLastActive)) } -SearchBase "$OU" -Prop DisplayName,DistinguishedName,whenCreated,lastLogonTimestamp,lastLogonTimestamp,Description
echo $ADUsersForWork | Select DisplayName,DistinguishedName,whenCreated,lastLogonTimestamp,Description,@{n="lastLogonDate";e={[datetime]::FromFileTime($_.lastLogonTimestamp)}} | Out-File $LogFile

ForEach($usr In $ADUsersForWork) {
# disable user
dsmod user $usr.DistinguishedName -disabled yes
}


Время: 03:03.

Время: 03:03.
© OSzone.net 2001-