Untitled
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
Leave a Comment