Question lancer une recherche d'utilisateurs dans plusieurs domaines listés dans un csv

Plus d'informations
il y a 1 mois 3 jours #30021 par jowell
Bonjour!
Il s'agit d'une application nommée SAS, à laquelle les utilisateurs peuvent accéder sans VPN dans un premier temps, via leur login mot de passe. Pour les forcer à paramétrer la double authentification via leur téléphone portable, je souhaite mettre en place le processus suivant : les utilisateurs ayant accès à cette appli sont enregistrés dans le groupe AD "G-UTIL-CIT-SAS-Explicite", on utilise l'attribut dispo "homepage" de chaque user. A la première connexion on fixe l'attribut à 1. Soit l'utilisateur applique les consignes reçues, à savoir il active la double authentification, auquel cas il bascule dans un autre groupe et c'est réglé! Soit on incrémente l'attribut de 1 à chaque future connexion, tant qu'il n'active pas la double authentification, jusqu'à la cinquième tentative où il sera sorti du groupe AD et sera obligé de faire une nouvelle demande d'habilitation. Du coup si homepage = 5 remove! Ce script sera exécuté une fois par jour, et il s'agira à chaque fois de lister les users dont les droits auront été désactivés dans un fichier csv. J'espère que c'est un peu plus clair! Merci pour votre temps passé.
Jowell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 mois 3 jours #30022 par Laurent Dardenne
Une réécriture de ton code :
# Gestion des authentifications SAS
[CmdletBinding()]
Param()

Clear-Host

 #Autorise l'exécution du sript
Set-ExecutionPolicy RemoteSigned

import-module ActiveDirectory

 #Variable représentant le répertoire de travail
$ScriptDir = $PsScriptRoot 

 #Variable représentant le fichier source.csv dans le répertoire de travail (script et csv)
$source = "$ScriptDir\source.csv"

 #Variable représentant le groupe contenant les utilisateurs qui se connecte à SAS sans double authentification
$NomDeGroupe = 'G-UTIL-CIT-SAS-Explicite'

 # Etape 1 : Parcourt la liste des domaines à traiter
 Foreach ($DomainCourant in Import-Csv $source -Delimiter ';')
 {
    $Domain=$DomainCourant.Domain

    #Pour chaque domaine, lister les utilisateurs du groupe indiqué
    $utilisateurs = @(get-adgroupmember -identity $NomDeGroupe -server $Domain| select-object -ExpandProperty samaccountname)

    $Supprimes=[System.Collections.ArrayList]::new()
    #exécution du script pour chaque utilisateur
    foreach ($id in $utilisateurs)
    {
        $CurrentUser=get-aduser -identity $id -properties homepage -server $Domain
        $ver = $CurrentUser |select-object  -ExpandProperty homepage

        #Si le champs est vide c'est que la personne a été ajouté au groupe le jour même
        if($Null -eq $ver)
        {
            $CurrentUser|set-aduser -HomePage 5
            write-host "Valeur initialisée pour le compte '$id'"
        }
        elseif($ver -eq '0')
        {
            #Si la valeur de l'attribut est égale à 0 l'utilisateur est sorti du groupe
            remove-ADGroupMember -Identity $NomDeGroupe -Member $id -server $Domain -whatif:$whatif
            $CurrentUser|set-aduser -HomePage $null -whatif:$whatif
            $Supprimes.Add($id) > $null
            write-host "Le compte '$id' a été supprimé du groupe"
        } 
        #Pour toute autre valeur de l'attribut, celui-ci est décrémenté de 1
        else
        {
           $NewVer -=1
           $CurrentUser|set-aduser -HomePage $NewVer
           write-host  "La valeur '$Newver' a été attribué au compte '$id'"
        } 
    }#foreach users
}#foreach Domain

 # Exporte la liste des utilisateurs sortis du groupe G-UTIL-CIT-SAS-Explicite vers out.csv
$Supprimes|
  Export-Csv -path "$ScriptDir\out.csv"
Réécriture à la volée, qui ne veut pas dire correction :-)
A tester et à simplifier.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 1 mois 1 jour #30028 par jowell
Merci bcp Laurent je teste et te tiens au courant.

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.220 secondes
Propulsé par Kunena