Script de prolongation de compte bureautique
Résolu
Bonjour,
Je souhaite créer un script pour mon projet professionnel qui permet de prolonger les comptes bureautique via Powershell.
J'ai pour base se script :
# Importer le module Active Directory
Import-Module ActiveDirectory
# Import du CSV
$csv = Import-CSV -Path "C:\PS1\user.csv" -Delimiter ";" -Encoding UTF8
# Pour chaque utilisateur, on met à jour la date d'expiration
foreach($user IN $csv){
Set-ADAccountExpiration $user.samaccountname -DateTime "Monday, November 18, 2013"
}
Je souhaite que la valeur DateTime soit aléatoire et soit prise via le CSV pour ne pas être fixe.
Si quelqu'un sait comment faire ?
Merci pour votre aide
Cordialement
Je souhaite créer un script pour mon projet professionnel qui permet de prolonger les comptes bureautique via Powershell.
J'ai pour base se script :
# Importer le module Active Directory
Import-Module ActiveDirectory
# Import du CSV
$csv = Import-CSV -Path "C:\PS1\user.csv" -Delimiter ";" -Encoding UTF8
# Pour chaque utilisateur, on met à jour la date d'expiration
foreach($user IN $csv){
Set-ADAccountExpiration $user.samaccountname -DateTime "Monday, November 18, 2013"
}
Je souhaite que la valeur DateTime soit aléatoire et soit prise via le CSV pour ne pas être fixe.
Si quelqu'un sait comment faire ?
Merci pour votre aide
Cordialement
2 réponses
-
Bonjour,
As-tu essayé quelque chose comme ça :Set-ADAccountExpiration $user.samaccountname -DateTime $user.newexpiration
En nommant la colonne contenant la date dans ton CSV "newexpiration", et en y mettant les dates avec le même format que dans ton script d'origine.
Xavier-
-
Bonjour,
J'ai mis le script
"# Importer le module Active Directory
Import-Module ActiveDirectory
# Import du CSV
$csv = Import-CSV -Path "C:\PS1\user.csv" -Delimiter ";" -Encoding UTF8
# Pour chaque utilisateur, on met à jour la date d'expiration
foreach($user IN $csv){
Set-ADAccountExpiration $user.samaccountname -DateTime $user.newexpiration
} "
Le fichier CSV
"samaccountname;";"newexpiration;"
"T0061042;";"lundi, 6 mai, 2018;"
"T0062052;";"lundi, 6 mai, 2019;"
"T0261047;";"lundi, 6 mai, 2020;"
"T0069048;";"lundi, 6 mai, 2021;"
J'ai mis la date en tenant compte que c'est un os Francais le format me semble correct
lors de l'exécution du script j'obtiens des erreurs :
u caractère Ligne:1 : 1
prolongation.ps1
~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (prolongation.ps1:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
uggestion [3,General]: La commande prolongation.ps1 est introuvable, mais elle existe à l'emplacement actif. Par défaut
Windows PowerShell ne charge pas de commandes à partir de l'emplacement actif. Si vous approuvez cette commande, tapez
".\prolongation.ps1" à la place. Pour plus d'informations, voir "get-help about_Command_Precedence".
S C:\ps1> powershell c:\ps1\prolongation.ps1
et-ADAccountExpiration : Impossible de valider l'argument sur le paramètre «Identity». L'argument est Null. Spécifiez
ne valeur valide pour l'argument, puis réessayez.
u caractère C:\ps1\prolongation.ps1:9 : 25
Set-ADAccountExpiration $user.samaccountname -DateTime $user.newexpiration
~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData : (:) [Set-ADAccountExpiration], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.SetADAcco
untExpiration
et-ADAccountExpiration : Impossible de valider l'argument sur le paramètre «Identity». L'argument est Null. Spécifiez
ne valeur valide pour l'argument, puis réessayez.
u caractère C:\ps1\prolongation.ps1:9 : 25
Set-ADAccountExpiration $user.samaccountname -DateTime $user.newexpiration
~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData : (:) [Set-ADAccountExpiration], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.SetADAcco
untExpiration
et-ADAccountExpiration : Impossible de valider l'argument sur le paramètre «Identity». L'argument est Null. Spécifiez
ne valeur valide pour l'argument, puis réessayez.
u caractère C:\ps1\prolongation.ps1:9 : 25
Set-ADAccountExpiration $user.samaccountname -DateTime $user.newexpiration
~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData : (:) [Set-ADAccountExpiration], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.SetADAcco
untExpiration
et-ADAccountExpiration : Impossible de valider l'argument sur le paramètre «Identity». L'argument est Null. Spécifiez
ne valeur valide pour l'argument, puis réessayez.
u caractère C:\ps1\prolongation.ps1:9 : 25
Set-ADAccountExpiration $user.samaccountname -DateTime $user.newexpiration
~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData : (:) [Set-ADAccountExpiration], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.SetADAcco
untExpiration
S C:\ps1>
J'ai essayé de modifier le format du script pour la date mais j'ai la même chose. -
-
-
en modifiant le fichier CSV
samaccountname;newexpiration
T0061042;lundi, 6 mai, 2018
T0062052;lundi, 6 mai, 2018
T0261047;lundi, 6 mai, 2018
T0069048;lundi, 6 mai, 2018
"
J'ai comme erreur :
Set-ADAccountExpiration : Impossible de lier le paramètre «DateTime». Impossible de convertir la valeur «lundi, 6 mai,
2018» en type «System.DateTime». Erreur: «La chaîne n'a pas pu être reconnue en tant que DateTime valide, car le jour
de la semaine était incorrect.»
Au caractère C:\ps1\prolongation.ps1:9 : 56
+ Set-ADAccountExpiration $user.samaccountname -DateTime $user.newexpiration
+ ~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument : (:) [Set-ADAccountExpiration], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.ActiveDirectory.Management.Commands.SetADAccoun
tExpiration
-
-
Quand je dis aléatoire c'est que la valeur date soit prise à partir du CSV pour être différente d'un utilisateur à un autre