Untitled
unknown
plain_text
a year ago
3.6 kB
10
Indexable
Import-Module ActiveDirectory
# Définir les restrictions pour les utilisateurs standards (Lundi-Vendredi, 8h-18h)
$timeRestrictionsStandard = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, # Dimanche
0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0, # Lundi
0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0, # Mardi
0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0, # Mercredi
0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0, # Jeudi
0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0, # Vendredi
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 # Samedi
# Définir les restrictions pour l'équipe IT (Lundi 7h au Samedi 23h)
$timeRestrictionsIT = 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, # Dimanche
0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, # Lundi
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, # Mardi
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, # Mercredi
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, # Jeudi
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, # Vendredi
1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0 # Samedi
# Fonction pour appliquer les restrictions en fonction des groupes
Function Set-LogonHours {
param (
[string]$groupName, # Nom du groupe (ex: GG-DIRECTION)
[array]$logonHours # Restrictions d'horaires à appliquer
)
Write-Host "Application des restrictions pour le groupe $groupName..." -ForegroundColor Cyan
# Vérification que les heures sont bien au format attendu
if ($logonHours.Length -ne 168) {
Write-Host "Erreur : Le tableau de logonHours doit contenir exactement 168 bits (24 heures x 7 jours)." -ForegroundColor Red
return
}
# Récupère les utilisateurs du groupe
try {
$users = Get-ADGroupMember -Identity $groupName -Recursive | Where-Object { $_.objectClass -eq "user" }
} catch {
Write-Host "Erreur : Impossible de récupérer les membres du groupe $groupName. Vérifiez que le groupe existe." -ForegroundColor Red
return
}
if (-not $users) {
Write-Host "Aucun utilisateur trouvé dans le groupe $groupName." -ForegroundColor Yellow
return
}
# Appliquer les restrictions pour chaque utilisateur
$users | ForEach-Object {
Write-Host " Appliquer pour l'utilisateur : $($_.SamAccountName)" -ForegroundColor Yellow
# Convertir les heures en tableau binaire (format compatible)
$hours = [byte[]]($logonHours | ForEach-Object { [byte]$_ })
# Appliquer les restrictions de connexion
try {
Set-ADUser -Identity $_.SamAccountName -Replace @{logonHours=$hours}
} catch {
Write-Host "Erreur : Impossible d'appliquer les restrictions pour l'utilisateur $($_.SamAccountName)." -ForegroundColor Red
}
}
}
# Appliquer les restrictions pour chaque groupe
# Utilisateurs standards
Set-LogonHours -groupName "GG-DIRECTION" -logonHours $timeRestrictionsStandard
Set-LogonHours -groupName "GG-RH" -logonHours $timeRestrictionsStandard
Set-LogonHours -groupName "GG-COMPTA" -logonHours $timeRestrictionsStandard
Set-LogonHours -groupName "GG-COMMERCIAUX" -logonHours $timeRestrictionsStandard
Set-LogonHours -groupName "GG-R&D" -logonHours $timeRestrictionsStandard
# Équipe IT
Set-LogonHours -groupName "GG-IT" -logonHours $timeRestrictionsIT
Write-Host "Toutes les restrictions d'horaires ont été appliquées avec succès !" -ForegroundColor Green
Editor is loading...
Leave a Comment