Question Gestion d’expiration d'un compte AD

Plus d'informations
il y a 4 ans 8 mois #29112 par Galadan
Bonjour,

J'un script pour créer des compte AD à partir d'un CSV.
J'ai juste un problème pour gérer l'expiration du compte.
En effet je souhaite que si la colonne ou se trouve normalement la date d'expiration est vide cela rentre la date du jour + 1 mois sinon cela rentre la date inscrite dans le fichier.

J'ai donc fait cela:

[code:1]# Gestion de la fin de contrat
If ($_.FinContrat -ne $null){
$FinContrat = $_.FinContrat
}
Else {
$Date = Get-Date
$FinContrat = $Date.AddMonths(1).ToString(\"dd/MM/yy HH:mm\"«»)
}
#[/code:1]

Cela fonctionne lorsque le CSV est rempli mais pas lorsque vide...
Je sèche...

Merci de votre aide.

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

Plus d'informations
il y a 4 ans 8 mois #29113 par Arnaud Petitjean
Bonjour Galadan,

Déjà, tu pourrais essayer d'inverser ton test :

[code:1]
If ($null -eq $_.FinContrat){ ...
[/code:1]

Parce que dans le cas où tu récupères un tableau dans ta propriété FinContrat et que parmi les valeurs il se trouve la valeur $Null, alors ton test serait vrai.

Et sinon tu devrais aussi tester la valeur chaine vide, comme ceci :

[code:1]
If ($null -eq $_.FinContrat -or '' -eq $_.FinContrat){ ...
[/code:1]

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

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

Plus d'informations
il y a 4 ans 8 mois #29124 par Galadan
Tous simplement inverser... Merci ça fait le job apriori.

J'ai une autre question, le script met bien bien une date de fin mais avec 1 jour de moins que demandé:
Par ex dans le fichier, si c'est noté 30/07/2019, dans l'AD ça passe à 29/07/2019.
Si c'est vide, la date d'aujourd'hui + 1 mois cela nous donne 24/08/19 mais dans l'AD c'est 23/08/2019

[code:1]# Gestion de la fin de contrat
If ($null -eq $_.FinContrat -or '' -eq $_.FinContrat){
$Date = Get-Date
$FinContrat = $Date.AddMonths(1).ToString(\"dd/MM/yy HH:mm\"«»)
}
Else {
$FinContrat = $_.FinContrat
}[/code:1]

Merci d'avance.

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

Plus d'informations
il y a 4 ans 8 mois #29125 par Philippe
salut Galadan

dans l'AD la date est celle du dernier jour ou le compte est encore actif

si t'a besoin d'un jour de plus tu peux faire :
[code:1]$Date.AddMonths(1).AddDays(1).ToString(\"dd/MM/yy HH:mm\"«») [/code:1]

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

Plus d'informations
il y a 4 ans 8 mois #29126 par Galadan
Je parle du AccountExpirationDate, je sais pas si c'était clair...

Pour la gestion du CSV ça serait donc ça:
[code:1] $FinContrat = $_.FinContrat.AddDays(1)[/code:1]
?

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

Plus d'informations
il y a 4 ans 8 mois #29132 par Quentin
Bonjour, pour information :

un article expliquait la différence de traitement de l'expiration des comptes entre powershell et la méthode graphique via l'AD.

Powershell : dès qu'on arrive à la date ciblée, le compte est bloqué
graphique via l'AD : dès qu'on arrive à la FIN de la date ciblée, le compte est bloqué

Exemple :

Powershell fin au 31/12 => passage du 30/12 au 31/12, expiration du compte
Graphique via l'AD, fin au 31/12 => passage du 31/12 au 01/01, expiration du compte

Donc soit tu choisis d'ajouter un jour pour que méthode graphique = méthode powershell. Soit tu fais en sorte que ton entrée ai directement +1 jour sur les dates

Whitatrax

Whitatrax

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

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