- forum
- PowerShell
- Entraide pour les débutants
- lancer une recherche d'utilisateurs dans plusieurs domaines listés dans un csv
Question
lancer une recherche d'utilisateurs dans plusieurs domaines listés dans un csv
- Verley
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 5
- Remerciements reçus 0
il y a 3 ans 7 mois #29998
par Verley
lancer une recherche d'utilisateurs dans plusieurs domaines listés dans un csv a été créé par Verley
Bonjour, je me permets de solliciter de l'aide auprès des bilingues powershell, ce qui n'est pas trop mon cas!...
Comme décrit dans le sujet je cherche à identifier des utilisateurs (commande get-user) en fonction d'un attribut, ces utilisateurs se trouvant dans un groupe particulier, et ce même groupe se trouvant dans plusieurs domaines. J'ai la liste des domaines dans un fichier csv. Il s'agit donc de créer une boucle qui va scanner tous les domaines via la commande import-csv.
Pour l'instant j'en suis là :
Set-ExecutionPolicy RemoteSigned
import-module ActiveDirectory
Autant dire que je n'ai pas bcp avancé!
Merci d'avance pour votre temps,
Joël
Comme décrit dans le sujet je cherche à identifier des utilisateurs (commande get-user) en fonction d'un attribut, ces utilisateurs se trouvant dans un groupe particulier, et ce même groupe se trouvant dans plusieurs domaines. J'ai la liste des domaines dans un fichier csv. Il s'agit donc de créer une boucle qui va scanner tous les domaines via la commande import-csv.
Pour l'instant j'en suis là :
Set-ExecutionPolicy RemoteSigned
import-module ActiveDirectory
Autant dire que je n'ai pas bcp avancé!
Merci d'avance pour votre temps,
Joël
Connexion ou Créer un compte pour participer à la conversation.
- Verley
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 5
- Remerciements reçus 0
il y a 3 ans 7 mois #30006
par Verley
Réponse de Verley sur le sujet lancer une recherche d'utilisateurs dans plusieurs domaines listés dans un csv
Après avoir cherché, voilà ce que donne le script, mais il y a encore pas mal d'erreur...
######################################################################################################################
#####
##### Gestion des authentifications SAS
#####
######################################################################################################################
#Vide la console powershell en cours
cls
#Autorise l'exécution du sript
Set-ExecutionPolicy RemoteSigned
#Importe le module Active Directory pour pouvoir gérer les différents services d'annuaire avec PowerShell
import-module ActiveDirectory
######################################################################################################################
# Fixe les variables
######################################################################################################################
#Variable représentant le répertoire de travail
$ScriptDir = Split-Path $script:MyInvocation.MyCommand.Path
#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
$groupe = 'G-UTIL-CIT-SAS-Explicite'
######################################################################################################################
# Etape 1 : Import des noms de domaines à traiter via le csv
######################################################################################################################
Import-Csv $source -Delimiter ";"|%
######################################################################################################################
# Etape 2 : pour chaque domaine, lister les utilisateurs du groupe G-UTIL-CIT-SAS-Explicite
######################################################################################################################
$utilisateurs = (get-adgroupmember -identity $groupe -server $_.domain| select-object samaccountname).samaccountname
######################################################################################################################
# Etape 3 : exécution du script pour chaque utilisateur
######################################################################################################################
foreach ($id in $utilisateurs)
{
$ver = (get-aduser -identity $utilisateurs -properties homepage -server $domain |select-object homepage).homepage
#Si le champs est vide c'est que la personne à été ajouté au groupe le jour même
if($ver -eq $null)
{
get-aduser -identity $id -server $domain |set-aduser -HomePage 5
write-host 'Valeur initialisée pour' $id
} -whatif
else
{
#Si la valeur de l'attribut est égale à 0 l'utilisateur est sorti du groupe
if($ver -like '0')
{
remove-ADGroupMember -Identity $groupe -Member $id -server $_.domain
get-aduser -identity $id -server $domain |set-aduser -HomePage $null
write-host 'le compte' $id 'à été supprimé du groupe'
} -whatif
######################################################################################################################
# Exporter la liste des utilisateurs sortis du groupe G-UTIL-CIT-SAS-Explicite vers out.csv
######################################################################################################################
Export-Csv -path $ScriptDir\out.csv -InputObject get-aduser -identity $id -server $domain |set-aduser -HomePage $null
#Pour toute autre valeur de l'attribut, celui-ci est décrémenté de 1
else
{
$ver = (get-aduser -identity $id -properties homepage -server $domain |select-object homepage).homepage -1
get-aduser -identity $id -server $domain |set-aduser -HomePage $ver
write-host $ver
} -whatif
}
}
######################################################################################################################
#####
##### Gestion des authentifications SAS
#####
######################################################################################################################
#Vide la console powershell en cours
cls
#Autorise l'exécution du sript
Set-ExecutionPolicy RemoteSigned
#Importe le module Active Directory pour pouvoir gérer les différents services d'annuaire avec PowerShell
import-module ActiveDirectory
######################################################################################################################
# Fixe les variables
######################################################################################################################
#Variable représentant le répertoire de travail
$ScriptDir = Split-Path $script:MyInvocation.MyCommand.Path
#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
$groupe = 'G-UTIL-CIT-SAS-Explicite'
######################################################################################################################
# Etape 1 : Import des noms de domaines à traiter via le csv
######################################################################################################################
Import-Csv $source -Delimiter ";"|%
######################################################################################################################
# Etape 2 : pour chaque domaine, lister les utilisateurs du groupe G-UTIL-CIT-SAS-Explicite
######################################################################################################################
$utilisateurs = (get-adgroupmember -identity $groupe -server $_.domain| select-object samaccountname).samaccountname
######################################################################################################################
# Etape 3 : exécution du script pour chaque utilisateur
######################################################################################################################
foreach ($id in $utilisateurs)
{
$ver = (get-aduser -identity $utilisateurs -properties homepage -server $domain |select-object homepage).homepage
#Si le champs est vide c'est que la personne à été ajouté au groupe le jour même
if($ver -eq $null)
{
get-aduser -identity $id -server $domain |set-aduser -HomePage 5
write-host 'Valeur initialisée pour' $id
} -whatif
else
{
#Si la valeur de l'attribut est égale à 0 l'utilisateur est sorti du groupe
if($ver -like '0')
{
remove-ADGroupMember -Identity $groupe -Member $id -server $_.domain
get-aduser -identity $id -server $domain |set-aduser -HomePage $null
write-host 'le compte' $id 'à été supprimé du groupe'
} -whatif
######################################################################################################################
# Exporter la liste des utilisateurs sortis du groupe G-UTIL-CIT-SAS-Explicite vers out.csv
######################################################################################################################
Export-Csv -path $ScriptDir\out.csv -InputObject get-aduser -identity $id -server $domain |set-aduser -HomePage $null
#Pour toute autre valeur de l'attribut, celui-ci est décrémenté de 1
else
{
$ver = (get-aduser -identity $id -properties homepage -server $domain |select-object homepage).homepage -1
get-aduser -identity $id -server $domain |set-aduser -HomePage $ver
write-host $ver
} -whatif
}
}
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 3 ans 7 mois #30010
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet lancer une recherche d'utilisateurs dans plusieurs domaines listés dans un csv
Salut,
"mais il y a encore pas mal d'erreur..."
Et donc ?
"mais il y a encore pas mal d'erreur..."
Et donc ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Verley
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 5
- Remerciements reçus 0
il y a 3 ans 7 mois #30013
par Verley
Réponse de Verley sur le sujet lancer une recherche d'utilisateurs dans plusieurs domaines listés dans un csv
Bonjour!
je voulais avoir de l'aide en fait!!
mais je me rends compte que ce n'est pas évident d'aider qd on n'est pas dans le contexte. En fait j'ai récupéré des bouts de code à droite à gauche que j'ai essayé d'adapter mais évidemment ça plante de partout.
Notamment si je veux exporter le résultat d'une requête vers un csv,
- j'ajoute à la fin de la commande get-aduser "| export-csv -path xxx -NoTypeInformation"?
- ou j'ajoute une ligne "Get-Process | Export-csv -pathx xx.csv -NoTypeInformation?
je voulais avoir de l'aide en fait!!
mais je me rends compte que ce n'est pas évident d'aider qd on n'est pas dans le contexte. En fait j'ai récupéré des bouts de code à droite à gauche que j'ai essayé d'adapter mais évidemment ça plante de partout.
Notamment si je veux exporter le résultat d'une requête vers un csv,
- j'ajoute à la fin de la commande get-aduser "| export-csv -path xxx -NoTypeInformation"?
- ou j'ajoute une ligne "Get-Process | Export-csv -pathx xx.csv -NoTypeInformation?
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 3 ans 7 mois #30015
par Laurent Dardenne
Enfin en cas d'erreur il faut la ligne qui pose pb ET le message d'erreur.
Un export csv ne devrait pas poser de pb.
En passant le -whatif se place sur un appel de cmdlet pas sur un blocs d'instruction et sur un test avec $null, en powershell on place $null en premier opérande : $null -eq $variable.
Ce qui évite de possible erreur, la suite ici :https://github.com/PowerShell/PSScriptAnalyzer/blob/master/RuleDocumentation/PossibleIncorrectComparisonWithNull.md
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet lancer une recherche d'utilisateurs dans plusieurs domaines listés dans un csv
Oui, mais surtout il faut bien expliquer l'objectif et avoir sous la main un environnement de test.jowell écrit: mais je me rends compte que ce n'est pas évident d'aider qd on n'est pas dans le contexte.
Ainsi c'est rapide au début, plus long dans le temps...jowell écrit: En fait j'ai récupéré des bouts de code à droite à gauche que j'ai essayé d'adapter mais évidemment ça plante de partout.
Il faut découper ton traitement, là on a un gros paquet de code avec des commentaires qui alourdissent la relecture.jowell écrit: Notamment si je veux exporter le résultat d'une requête vers un csv,
Enfin en cas d'erreur il faut la ligne qui pose pb ET le message d'erreur.
Un export csv ne devrait pas poser de pb.
En passant le -whatif se place sur un appel de cmdlet pas sur un blocs d'instruction et sur un test avec $null, en powershell on place $null en premier opérande : $null -eq $variable.
Ce qui évite de possible erreur, la suite ici :https://github.com/PowerShell/PSScriptAnalyzer/blob/master/RuleDocumentation/PossibleIncorrectComparisonWithNull.md
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Mehdi Chakir
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 2
- Remerciements reçus 0
il y a 3 ans 6 mois #30020
par Mehdi Chakir
Réponse de Mehdi Chakir sur le sujet lancer une recherche d'utilisateurs dans plusieurs domaines listés dans un csv
Bonjour Jowell,
Je m'excuse, mais j'ai pas bien compris ta demande , peux tu stp le besoin exacte ?
Que veux-tu comme résultat exactement ?
peux tu partager ton script complet pour le vérifier stp
On est là pour trouver solution pour tout blocage
Merci
Je m'excuse, mais j'ai pas bien compris ta demande , peux tu stp le besoin exacte ?
Que veux-tu comme résultat exactement ?
peux tu partager ton script complet pour le vérifier stp
On est là pour trouver solution pour tout blocage
Merci
Connexion ou Créer un compte pour participer à la conversation.
- forum
- PowerShell
- Entraide pour les débutants
- lancer une recherche d'utilisateurs dans plusieurs domaines listés dans un csv
Temps de génération de la page : 0.077 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- lancer une recherche d'utilisateurs dans plusieurs domaines listés dans un csv