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

2 réponses

  1. 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
    0
    1. Bonjour,

      Merci pour votre retour je vais tester et je vous dis si cela fonctionne

      Merci pour votreaide

      Cordialement
      0
    2. 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.
      0
    3. Je pense que mon erreur ce trouve dans le CSV
      0
    4. Si une personne a une idée ?
      0
    5. 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
      0
  2. 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
    0