# Получаем объект группы пользователей
$group = Get-ADGroup -Identity "Company ИТ-отдел"
# Получаем пользователей, которые входят в эту группу
$users = Get-ADGroupMember -Identity $group.DistinguishedName -Recursive | where { $_.objectClass -eq 'user' }
foreach ($user in $users) {
Write-Host "Обрабатывается пользователь $($user.Name) ($($user.SamAccountName))"
# Устанавливаем ограничения времени доступа для каждого пользователя
$logonHours = New-Object -TypeName byte[] -ArgumentList 21
# Устанавливаем доступ в будние дни с 6:00 до 23:00
$logonHours[2] = 60
$logonHours[3] = 15
for ($i = 4; $i -lt 20; $i++) {
$logonHours[$i] = 255
}
# Устанавливаем полный доступ в выходные дни
$logonHours[20] = $logonHours[20] -bor 255
# Устанавливаем ограничения времени доступа для пользователя
try {
Set-ADUser -Identity $user.DistinguishedName -Replace @{ 'logonHours' = $logonHours }
Write-Host "Для пользователя $($user.Name) ($($user.SamAccountName)) установлено ограничение на время входа в систему: будние дни с 6:00 до 23:00, выходные дни - полный доступ"
} catch {
Write-Host "Ошибка при установке ограничений на время входа в систему для пользователя $($user.Name) ($($user.SamAccountName)): $($_.Exception.Message)"
}
}
$templateuser='a.khramov'
$templatehours= Get-ADUser -Identity $templateuser -properties logonHours
Get-ADGroupmember "msk-VPN_Users" |foreach {Set-ADUSer $_.samaccountname -Replace @{logonHours = $templatehours.logonHours} }