- forum
- PowerShell
- Entraide pour les débutants
- Ajouter colonne "restored" et écrire "ok ou "nok dans un fichier csv en sortie
Question
Ajouter colonne "restored" et écrire "ok ou "nok dans un fichier csv en sortie
- Julien
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 19
- Remerciements reçus 0
il y a 2 ans 1 mois - il y a 2 ans 1 mois #32491
par Julien
Ajouter colonne "restored" et écrire "ok ou "nok dans un fichier csv en sortie a été créé par Julien
Bonjour,
J'ai écrit un script qui permet, à partir d'un fichier csv en entrée (contenant une seule colonne "EmployeeNumber") de déterminer le SamAccountName correspondant et un certain nombres d'autres propriétés liées à l'utilisateur, et ce, en fonction que le User en question ait un compte actif, désactivé, ou supprimé dans l'Active Directory. Le tout est envoyé dans un fichier csv en sortie, nommé SamAccountName.$CurrentDate.csv
L'idée étant de pouvoir avoir les informations sur chaque compte AD passé en entrée (actif, désactivé et/ou supprimé) et pouvoir restaurer, à partir de ce fichier csv en entrée, tous les Users dont au moins un compte est supprimé. Le tout, exporté vers mon fichier csv en sortie SamAccountName.$CurrentDate.csv
Pour le moment, je parviens :
- à avoir les informations sur l'état des comptes en question : actifs, désactivés, supprimés et à obtenir les propriétés essentielles des comptes,
- à restaurer les utilisateurs pour lesquels au moins un compte est supprimé
Ce que je souhaiterais ajouter, c'est une colonne avec en tête nommée "Restored" dans mon fichier csv en sortie "SamAccountName.$CurrentDate.csv" et y intégrer un commentaire de type "ok" ou "nok" pour chaque compte utilisateur qui aura pu être restauré ou non grâce au fichier csv en entrée et ce, bien entendu, dans une boucle, puisque le fichier en entrée contiendra une multitude d'EmployeeNumber.
Tout fonctionne, même si j'ai bien conscience que la structure pourrait certainement être simplifié, mais je débute vraiment en powershell. Seule la possibilité d'exporter dans ce même fichier csv en sortie, une colonne "Restored" manque, mais je ne sais pas comment m'y prendre pour l'ajouter et marquer l'information voulue.
Voici le script que j'ai développé pour le moment :
Si quelqu'un a une idée pour une simplification du processus et surtout l'ajout de la colonne "Restored" en sortie avec "ok" ou "nok" selon que le compte a été restauré ou non, j'apprécierai vraiment.
Merci
J'ai écrit un script qui permet, à partir d'un fichier csv en entrée (contenant une seule colonne "EmployeeNumber") de déterminer le SamAccountName correspondant et un certain nombres d'autres propriétés liées à l'utilisateur, et ce, en fonction que le User en question ait un compte actif, désactivé, ou supprimé dans l'Active Directory. Le tout est envoyé dans un fichier csv en sortie, nommé SamAccountName.$CurrentDate.csv
L'idée étant de pouvoir avoir les informations sur chaque compte AD passé en entrée (actif, désactivé et/ou supprimé) et pouvoir restaurer, à partir de ce fichier csv en entrée, tous les Users dont au moins un compte est supprimé. Le tout, exporté vers mon fichier csv en sortie SamAccountName.$CurrentDate.csv
Pour le moment, je parviens :
- à avoir les informations sur l'état des comptes en question : actifs, désactivés, supprimés et à obtenir les propriétés essentielles des comptes,
- à restaurer les utilisateurs pour lesquels au moins un compte est supprimé
Ce que je souhaiterais ajouter, c'est une colonne avec en tête nommée "Restored" dans mon fichier csv en sortie "SamAccountName.$CurrentDate.csv" et y intégrer un commentaire de type "ok" ou "nok" pour chaque compte utilisateur qui aura pu être restauré ou non grâce au fichier csv en entrée et ce, bien entendu, dans une boucle, puisque le fichier en entrée contiendra une multitude d'EmployeeNumber.
Tout fonctionne, même si j'ai bien conscience que la structure pourrait certainement être simplifié, mais je débute vraiment en powershell. Seule la possibilité d'exporter dans ce même fichier csv en sortie, une colonne "Restored" manque, mais je ne sais pas comment m'y prendre pour l'ajouter et marquer l'information voulue.
Voici le script que j'ai développé pour le moment :
$Missing = New-Object psobject
$Missing | Add-Member Noteproperty SamAccountname("Matricule erroné ou collaborateur non parti")
$Missing | Add-Member Noteproperty title("Aucune correspondance")
$Missing | Add-Member Noteproperty enabled("Aucune correspondance")
$Missing | Add-Member Noteproperty Isdeleted("Aucune correspondance")
$Missing | Add-Member Noteproperty employeeNumber (" ")
$Users = Import-Csv D:\Scripts\EmployeeNumber.csv
$CurrentDate = Get-Date
$CurrentDate = $CurrentDate.ToString('MM-dd-yyyy')
ForEach ($User in $Users) {
$EmployeeNumber = $User.EmployeeNumber
# Si l'EmployeeNumber est inférieur à 6 caractères, ajouter des 0 à gauche
If($EmployeeNumber.length -lt 6){
$EmployeeNumber = "{0:d6}" -f [int]$EmployeeNumber
}
$user = Get-ADObject -Filter {isDeleted -eq $True -and (EmployeeNumber -eq $EmployeeNumber)} -IncludeDeletedObjects -Properties employeeNumber,title,SamAccountName,enabled,Isdeleted | Select employeeNumber,title,SamAccountName,enabled,Isdeleted
$user2 = Get-Aduser -Filter {EmployeeNumber -eq $EmployeeNumber} -Properties employeeNumber,title,SamAccountName,enabled,Isdeleted |select employeeNumber,title,SamAccountName,enabled,Isdeleted
# S'il existe un compte supprimé et un compte actif/désactivé, faire ce qui suit
If($user -ne $null -and $user2 -ne $null){
$user | Export-Csv -Path "D:\Scripts\SamAccountName.$CurrentDate.csv" -Append -Delimiter ";"
$user2 | Export-Csv -Path "D:\Scripts\SamAccountName.$CurrentDate.csv" -Append -Delimiter ";"
Get-ADObject -Filter {employeenumber -eq $EmployeeNumber} -IncludeDeletedObjects | Restore-ADObject
}
# S'il existe un compte supprimé et qu'aucun compte actif/désactivé n'est trouvé, faire ce qui suit
elseif($user -ne $null -and $user2 -eq $null){
$user = Get-ADObject -Filter {isDeleted -eq $True -and (EmployeeNumber -eq $EmployeeNumber)} -IncludeDeletedObjects -Properties employeeNumber,title,SamAccountName,enabled,Isdeleted | Select employeeNumber,title,SamAccountName,enabled,Isdeleted
$user | Export-Csv -Path "D:\Scripts\SamAccountName.$CurrentDate.csv" -Append -Delimiter ";"
Get-ADObject -Filter {employeenumber -eq $EmployeeNumber} -IncludeDeletedObjects | Restore-ADObject
}
# S'il n'existe aucun compte supprimé et qu'il existe un compte actif/désactivé, faire ce qui suit
elseif($user -eq $null -and $user2 -ne $null){
$user = Get-Aduser -Filter {EmployeeNumber -eq $EmployeeNumber} -Properties employeeNumber,title,SamAccountName,enabled,Isdeleted |select employeeNumber,title,SamAccountName,enabled,Isdeleted
$user | Export-Csv -Path "D:\Scripts\SamAccountName.$CurrentDate.csv" -Append -Delimiter ";"
}
# S'il n'existe aucun compte supprimé ni aucun compte actif/désactivé, faire ce qui suit
elseif($user -eq $null -and $user2 -eq $null){
$Missing.employeeNumber = $EmployeeNumber
$Missing | Export-Csv -Path "D:\Scripts\SamAccountName.$CurrentDate.csv" -Append -Delimiter ";"
}
}
Si quelqu'un a une idée pour une simplification du processus et surtout l'ajout de la colonne "Restored" en sortie avec "ok" ou "nok" selon que le compte a été restauré ou non, j'apprécierai vraiment.
Merci
Dernière édition: il y a 2 ans 1 mois par Laurent Dardenne. Raison: balise code
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 2 ans 1 mois #32495
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Ajouter colonne "restored" et écrire "ok ou "nok dans un fichier csv en sortie
Salut,
pour l'ajout de propriété tu peux procéder de la manière suivante.
Remplace :parSelect-Object crée un nouveau psobject, tu peux donc récupérer une liste de propriétés (*) et lui en ajouter d'autres
A priori ton fichier csv ne contiendra que le dernier user traité.
pour l'ajout de propriété tu peux procéder de la manière suivante.
Remplace :
select employeeNumber,title,SamAccountName,enabled,Isdeleted
Select-Object *,'Restored'
A priori ton fichier csv ne contiendra que le dernier user traité.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Julien
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 19
- Remerciements reçus 0
il y a 2 ans 1 mois #32520
par Julien
Réponse de Julien sur le sujet Ajouter colonne "restored" et écrire "ok ou "nok dans un fichier csv en sortie
Bonjour,
Merci pour ta proposition, ça a pu marcher avec cela.
Et désolé pour le retard de réponse.
J'ai un autre souci pour lequel je ne trouve aucune solution :
Je récupère grâce à un objet, une liste de comptes utilisateurs dans l'AD.
Il s'agit en fait de comptes supprimés.
Il arrive qu'il y est plusieurs fois un même compte supprimé avec les mêmes attributs, et je souhaiterais donc, à partir de cette liste, comparer toutes les occurrences identiques du même compte.
Par exemple, dans mon objet de comptes supprimés, j'ai plusieurs fois :
SamAccountName = a.anieze
userPrincipalName = amara.anieze
SamAccountName = a.anieze
userPrincipalName = amara.anieze
Je souhaiterais pouvoir identifier quand deux occurrences sont identiques, aussi bien pour le SamAccountName et pour le userPrincipalName.
Je ne sais pas comment procéder
Auriez vous une idée ?
merci
Sam
Merci pour ta proposition, ça a pu marcher avec cela.
Et désolé pour le retard de réponse.
J'ai un autre souci pour lequel je ne trouve aucune solution :
Je récupère grâce à un objet, une liste de comptes utilisateurs dans l'AD.
Il s'agit en fait de comptes supprimés.
Il arrive qu'il y est plusieurs fois un même compte supprimé avec les mêmes attributs, et je souhaiterais donc, à partir de cette liste, comparer toutes les occurrences identiques du même compte.
Par exemple, dans mon objet de comptes supprimés, j'ai plusieurs fois :
SamAccountName = a.anieze
userPrincipalName = amara.anieze
SamAccountName = a.anieze
userPrincipalName = amara.anieze
Je souhaiterais pouvoir identifier quand deux occurrences sont identiques, aussi bien pour le SamAccountName et pour le userPrincipalName.
Je ne sais pas comment procéder
Auriez vous une idée ?
merci
Sam
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 2 ans 1 mois #32523
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Ajouter colonne "restored" et écrire "ok ou "nok dans un fichier csv en sortie
Salut,
on peut grouper les objets selon un critère :Cela dépend donc du contenu de l'AD et de la rigueur avec laquelle il est / a été renseigné...
on peut grouper les objets selon un critère :
$list=@{SamAccountName = 'a.anieze';userPrincipalName = 'amara.anieze'},
@{SamAccountName = 'a.anieze';userPrincipalName = 'amara.anieze'},
@{SamAccountName = 'B.anieze';userPrincipalName = 'amara.Bnieze'},
@{SamAccountName = 'B.anieze';userPrincipalName = 'amara.Cnieze'}
$Accounts=$list |% {
[PscustomObject]$_
}
$Groups=$Accounts|group-object SamAccountName
$Groups[0].Group[0]
# résultat différent si SamAccountName est identique pour + comptes mais avec un userPrincipalName différent
$Accounts|group-object SamAccountName,userPrincipalName
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Julien
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 19
- Remerciements reçus 0
il y a 2 ans 1 mois #32540
par Julien
Réponse de Julien sur le sujet Ajouter colonne "restored" et écrire "ok ou "nok dans un fichier csv en sortie
Bonjour,
Merci pour votre aide, mais je ne vois pas comment l'adapter dans mon script.
Là il s'agit de Amara Anieze mais il peut s'agir de n'importe quel autre utilisateur passé dans l'objet $ListeDEL pour lequel un ou plusieurs comptes supprimés ont été trouvés.
L'idée étant de restaurer tous les comptes "uniques" de l'utilisateur et une occurrence de ses comptes similaires si aucun compte actif/désactivé n'est déjà trouvé pour lui.
Actuellement, quand je demande à restaurer $user présent dans $ListeDEL, j'ai une erreur car Powershell trouve plusieurs fois le même compte supprimé.
Par exemple, il trouve plusieurs fois le compte sam=a.anieze et upn=amara.anieze
Powershell doit alors se demander quel compte utiliser pour restaurer puisqu'ils sont tous identiques. Dans ce cas de figure je souhaiterai qu'il utilise par exemple la première occurence du même compte et procéder à sa restauration.
Mais dans $ListeDEL il peut aussi y avoir un autre compte différent pour cette utilisatrice --> sam=amara.anieze et upn=amara.anieze
Dans ce cas, il faut restaurer ce compte unique ET une occurrence du compte plusieurs fois identiques. Et cette vérification est donc à faire pour tous les comptes de tous les utilisateurs qui passeront dans $ListeDEL.
J'ai totalement réécris mon script et j'ai ajouté en commentaire ce que je viens de détailler ci-dessus et que je souhaiterai pouvoir inclure comme vérification/restauration. Je n'arrive vraiment pas à m'en sortir avec ce bout de script.
Votre solution doit probablement marcher mais je ne vois pas comment l'adapter à mon cas sans avoir à spécifier a.anieze dans le code, puisque cela concernera une multitude d'utilisateurs passés dans $ListeDEL.
Ci dessous mon code. Merci beaucoup pour l'aide que vous pourrez m'apporter.
Je débute en powershell.
#$StartupVars = @()
#$StartupVars = Get-Variable | Select-Object -ExpandProperty Name
$DefaultVariables = $(Get-Variable).Name
((Compare-Object -ReferenceObject (Get-Variable).Name -DifferenceObject $DefaultVariables).InputObject).foreach{Remove-Variable -Name $_}
$ListeEmployees = Import-Csv D:\Scripts\EmployeeNumber.csv
$CurrentDate = Get-Date
$CurrentDate = $CurrentDate.ToString('MM-dd-yyyy')
ForEach ($User in $ListeEmployees) {
$EmployeeNum = $User.EmployeeNumber
# Si l'EmployeeNumber est inférieur à 6 caractères, ajouter des 0 à gauche
If($EmployeeNum.length -lt 6){
$EmployeeNum = "{0:d6}" -f [int]$EmployeeNun
}# Fin de vérification longueur EmployeeNumber
$ListeDEL = Get-ADObject -Filter {isDeleted -eq $True -and (EmployeeNumber -eq $EmployeeNum)} -IncludeDeletedObjects -Properties employeeNumber,title,SamAccountName,userPrincipalName,displayName,Isdeleted | Select employeeNumber,title,SamAccountName,userPrincipalName,displayName,Isdeleted
If($ListeDEL -eq $null){
Write-Host "$EmployeeNum n'a aucun compte à restaurer"
}# Fin de recherche : Si ListeDEL vide -> pas de compte à restaurer
Else{
ForEach($User in $ListeDEL){
$ListeActif = Get-Aduser -Filter {EmployeeNumber -eq $EmployeeNum} -Properties employeeNumber,title,SamAccountName,userPrincipalName,displayName,Isdeleted | Select employeeNumber,title,SamAccountName,userPrincipalName,displayName,Isdeleted
$UtilDELSam = $User.SamAccountName
$UtilDELUpn = $User.userPrincipalName
If($ListeActif -eq $null){
#partie du code où je souhaiterais vérifier si tous les $user dans l'objet $ListeDEL sont identiques ou pas.
# l'idée étant de restaurer tous les comptes uniques de $ListeDEL puis une occurence d'un compte plusieurs fois identiques.
# Dans $ListeDEL je peux avoir plusieurs fois le même utilisateur avec strictement les mêmes infos, mais pas toujours.
# Exemple : j'ai plusieurs fois le compte : sam=a.anieze et upn=amara.anieze mais j'ai aussi sam=amara.anieze et upn=amara.anieze
# Dans cet exemple : je souhaiterais restaurer une occourence du compte plusieurs fois identiques ET le compte unique sam=amara.anieze ; upn=amara.anieze
# A noter que ces utilisateurs sont fournis à partir d'une liste d'EmployeeNumber pour lesquels une recherche est faite dans l'AD pour vérifier l'existence d'un compte actif/désactivé et un compte éventuellement supprimé.
# L'idée étant de restaurer tous les comptes différents de ces utilisateurs.
Get-ADObject -Filter {samaccountname -eq $UtilDELSam} -IncludeDeletedObjects | Restore-ADObject
Write-Host "$UtilDELSam restauré" -ForegroundColor Yellow
}# Fin de rehcherche : Si ListeActif est vide --> restaurer le compte supprimé
else{
$UtilActifSam = $ListeActif.SamAccountName
$UtilActifUpn = $ListeActif.userPrincipalName
$UtilActifDPName = $ListeActif.displayName
# Si le SAM supprimé est différent du SAM actif et que l'UPN supprimé est différent de l'UPN actif alors
If($UtilDELSam -ne $UtilActifSam -and $UtilDELUpn -ne $UtilActifUpn){
Get-ADObject -Filter {samaccountname -eq $UtilDELSam} -IncludeDeletedObjects | Restore-ADObject
Write-Host "$UtilDELSam restauré" -ForegroundColor Yellow
}# Fin du SAM différent ET de l'UPN différent : restauration du compte
#Elseif($UtilDELSam -eq $UtilActifSam -or $UtilDELUpn -eq $UtilActifUpn){
else{
if($UtilDELSam -eq $UtilActifSam){
Write-Host "$UtilActifDPName a un compte existant avec le même SAM que celui du compte supprimé : restauration impossible" -ForegroundColor DarkYellow
}# Fin de recherche sur SAM supprimé et actif équivalent
else{
Write-Host "$UtilActifDPName a un compte existant avec le même UPN que celui du compte supprimé : restauration impossible" -ForegroundColor DarkGreen
} # Fin de recherche sur UPN supprimé et actif équivalent
}# Fin du SAM équivalent OU UPN équivalent : compte existant et similaire trouvé --> pas de restauration possible
}# Fin de recherche : Si ListeActif non nul
}# Fin de recherche : Pour chaque utilisateur dans ListeDEL
}# Fin de : Sinon ListeDEL non vide -> Faire autre traitement
}# Fin de : Pour chaque utilisateur présent dans le fichier ListeEmployees
Merci pour votre aide, mais je ne vois pas comment l'adapter dans mon script.
Là il s'agit de Amara Anieze mais il peut s'agir de n'importe quel autre utilisateur passé dans l'objet $ListeDEL pour lequel un ou plusieurs comptes supprimés ont été trouvés.
L'idée étant de restaurer tous les comptes "uniques" de l'utilisateur et une occurrence de ses comptes similaires si aucun compte actif/désactivé n'est déjà trouvé pour lui.
Actuellement, quand je demande à restaurer $user présent dans $ListeDEL, j'ai une erreur car Powershell trouve plusieurs fois le même compte supprimé.
Par exemple, il trouve plusieurs fois le compte sam=a.anieze et upn=amara.anieze
Powershell doit alors se demander quel compte utiliser pour restaurer puisqu'ils sont tous identiques. Dans ce cas de figure je souhaiterai qu'il utilise par exemple la première occurence du même compte et procéder à sa restauration.
Mais dans $ListeDEL il peut aussi y avoir un autre compte différent pour cette utilisatrice --> sam=amara.anieze et upn=amara.anieze
Dans ce cas, il faut restaurer ce compte unique ET une occurrence du compte plusieurs fois identiques. Et cette vérification est donc à faire pour tous les comptes de tous les utilisateurs qui passeront dans $ListeDEL.
J'ai totalement réécris mon script et j'ai ajouté en commentaire ce que je viens de détailler ci-dessus et que je souhaiterai pouvoir inclure comme vérification/restauration. Je n'arrive vraiment pas à m'en sortir avec ce bout de script.
Votre solution doit probablement marcher mais je ne vois pas comment l'adapter à mon cas sans avoir à spécifier a.anieze dans le code, puisque cela concernera une multitude d'utilisateurs passés dans $ListeDEL.
Ci dessous mon code. Merci beaucoup pour l'aide que vous pourrez m'apporter.
Je débute en powershell.
#$StartupVars = @()
#$StartupVars = Get-Variable | Select-Object -ExpandProperty Name
$DefaultVariables = $(Get-Variable).Name
((Compare-Object -ReferenceObject (Get-Variable).Name -DifferenceObject $DefaultVariables).InputObject).foreach{Remove-Variable -Name $_}
$ListeEmployees = Import-Csv D:\Scripts\EmployeeNumber.csv
$CurrentDate = Get-Date
$CurrentDate = $CurrentDate.ToString('MM-dd-yyyy')
ForEach ($User in $ListeEmployees) {
$EmployeeNum = $User.EmployeeNumber
# Si l'EmployeeNumber est inférieur à 6 caractères, ajouter des 0 à gauche
If($EmployeeNum.length -lt 6){
$EmployeeNum = "{0:d6}" -f [int]$EmployeeNun
}# Fin de vérification longueur EmployeeNumber
$ListeDEL = Get-ADObject -Filter {isDeleted -eq $True -and (EmployeeNumber -eq $EmployeeNum)} -IncludeDeletedObjects -Properties employeeNumber,title,SamAccountName,userPrincipalName,displayName,Isdeleted | Select employeeNumber,title,SamAccountName,userPrincipalName,displayName,Isdeleted
If($ListeDEL -eq $null){
Write-Host "$EmployeeNum n'a aucun compte à restaurer"
}# Fin de recherche : Si ListeDEL vide -> pas de compte à restaurer
Else{
ForEach($User in $ListeDEL){
$ListeActif = Get-Aduser -Filter {EmployeeNumber -eq $EmployeeNum} -Properties employeeNumber,title,SamAccountName,userPrincipalName,displayName,Isdeleted | Select employeeNumber,title,SamAccountName,userPrincipalName,displayName,Isdeleted
$UtilDELSam = $User.SamAccountName
$UtilDELUpn = $User.userPrincipalName
If($ListeActif -eq $null){
#partie du code où je souhaiterais vérifier si tous les $user dans l'objet $ListeDEL sont identiques ou pas.
# l'idée étant de restaurer tous les comptes uniques de $ListeDEL puis une occurence d'un compte plusieurs fois identiques.
# Dans $ListeDEL je peux avoir plusieurs fois le même utilisateur avec strictement les mêmes infos, mais pas toujours.
# Exemple : j'ai plusieurs fois le compte : sam=a.anieze et upn=amara.anieze mais j'ai aussi sam=amara.anieze et upn=amara.anieze
# Dans cet exemple : je souhaiterais restaurer une occourence du compte plusieurs fois identiques ET le compte unique sam=amara.anieze ; upn=amara.anieze
# A noter que ces utilisateurs sont fournis à partir d'une liste d'EmployeeNumber pour lesquels une recherche est faite dans l'AD pour vérifier l'existence d'un compte actif/désactivé et un compte éventuellement supprimé.
# L'idée étant de restaurer tous les comptes différents de ces utilisateurs.
Get-ADObject -Filter {samaccountname -eq $UtilDELSam} -IncludeDeletedObjects | Restore-ADObject
Write-Host "$UtilDELSam restauré" -ForegroundColor Yellow
}# Fin de rehcherche : Si ListeActif est vide --> restaurer le compte supprimé
else{
$UtilActifSam = $ListeActif.SamAccountName
$UtilActifUpn = $ListeActif.userPrincipalName
$UtilActifDPName = $ListeActif.displayName
# Si le SAM supprimé est différent du SAM actif et que l'UPN supprimé est différent de l'UPN actif alors
If($UtilDELSam -ne $UtilActifSam -and $UtilDELUpn -ne $UtilActifUpn){
Get-ADObject -Filter {samaccountname -eq $UtilDELSam} -IncludeDeletedObjects | Restore-ADObject
Write-Host "$UtilDELSam restauré" -ForegroundColor Yellow
}# Fin du SAM différent ET de l'UPN différent : restauration du compte
#Elseif($UtilDELSam -eq $UtilActifSam -or $UtilDELUpn -eq $UtilActifUpn){
else{
if($UtilDELSam -eq $UtilActifSam){
Write-Host "$UtilActifDPName a un compte existant avec le même SAM que celui du compte supprimé : restauration impossible" -ForegroundColor DarkYellow
}# Fin de recherche sur SAM supprimé et actif équivalent
else{
Write-Host "$UtilActifDPName a un compte existant avec le même UPN que celui du compte supprimé : restauration impossible" -ForegroundColor DarkGreen
} # Fin de recherche sur UPN supprimé et actif équivalent
}# Fin du SAM équivalent OU UPN équivalent : compte existant et similaire trouvé --> pas de restauration possible
}# Fin de recherche : Si ListeActif non nul
}# Fin de recherche : Pour chaque utilisateur dans ListeDEL
}# Fin de : Sinon ListeDEL non vide -> Faire autre traitement
}# Fin de : Pour chaque utilisateur présent dans le fichier ListeEmployees
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 2 ans 1 mois #32545
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Ajouter colonne "restored" et écrire "ok ou "nok dans un fichier csv en sortie
>>mais je ne vois pas comment l'adapter dans mon script.
As-tu compris le principe exposé ?
>>Là il s'agit de Amara Anieze mais il peut s'agir de n'importe quel autre utilisateur ..
Oui, ajoute autant d'exemples dans le tableau $List du code proposé. Le résultat suivra.
>>Je débute en powershell.
Dans ce cas étudie le comportement de group-object avec des objets simple en dehors de ton script (pas besoin de l'AD). Ensuite l'intégration dans ton code sera plus simple.
>>je ne vois pas comment l'adapter à mon cas sans avoir à spécifier a.anieze dans le code,
C'est une démo avec des objets de tests, dans ton cas ce doit être qq comme ceci :Ensuite, avec le cmdlet Get-Member, tu analyses la structure des objets émis par Group-Object.
As-tu compris le principe exposé ?
>>Là il s'agit de Amara Anieze mais il peut s'agir de n'importe quel autre utilisateur ..
Oui, ajoute autant d'exemples dans le tableau $List du code proposé. Le résultat suivra.
>>Je débute en powershell.
Dans ce cas étudie le comportement de group-object avec des objets simple en dehors de ton script (pas besoin de l'AD). Ensuite l'intégration dans ton code sera plus simple.
>>je ne vois pas comment l'adapter à mon cas sans avoir à spécifier a.anieze dans le code,
C'est une démo avec des objets de tests, dans ton cas ce doit être qq comme ceci :
#$Resultat contient la liste des comptes ceux dupliqué on un count > 0
$Resultat=$ListeDEL |Group-Object SamAccountName
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- forum
- PowerShell
- Entraide pour les débutants
- Ajouter colonne "restored" et écrire "ok ou "nok dans un fichier csv en sortie
Temps de génération de la page : 0.112 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Ajouter colonne "restored" et écrire "ok ou "nok dans un fichier csv en sortie