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

Plus d'informations
il y a 3 ans 7 mois #29998 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

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

Plus d'informations
il y a 3 ans 7 mois #30006 par Verley
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
}
}

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

Plus d'informations
il y a 3 ans 7 mois #30010 par Laurent Dardenne
Salut,
"mais il y a encore pas mal d'erreur..."

Et donc ?
:-)

Tutoriels PowerShell

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

Plus d'informations
il y a 3 ans 7 mois #30013 par Verley
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?

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

Plus d'informations
il y a 3 ans 7 mois #30015 par Laurent Dardenne

jowell écrit: mais je me rends compte que ce n'est pas évident d'aider qd on n'est pas dans le contexte.

Oui, mais surtout il faut bien expliquer l'objectif et avoir sous la main un environnement de test.

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.

Ainsi c'est rapide au début, plus long dans le temps...

jowell écrit: Notamment si je veux exporter le résultat d'une requête vers un csv,

Il faut découper ton traitement, là on a un gros paquet de code avec des commentaires qui alourdissent la relecture.

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.

Plus d'informations
il y a 3 ans 6 mois #30020 par Mehdi Chakir
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

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

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