PowerShell pour Dynamics NAV 2013 – 5 : Créer des utilisateurs à la mode RapidStart

Une des fonctionnalités de RapidStart est l’utilisation d’Excel pour extraire, nettoyer et importer les données dans Dynamics NAV. En gardant cette excellente philosophie RapidStarienne qui nous permet de réduire les coûts de déploiement de l’ERP Dynamics NAV nous allons automatiser au maximum la création des utilisateurs.

L’idée est d’utiliser un tableau Excel qui nous servira à la fois d’outil et de documentation pour :

  1. Recenser toutes les informations nécessaires pour créer les utilisateurs dans Dynamics NAV;
  2. Compléter ces informations en utilisant les fonctionnalités d’Excel et les faire valider par un responsable;
  3. Créer les utilisateurs dans le système (Windows, Dynamics NAV, …)

image

Alors, je commence par créer un fichier Excel avec quelques infos pour recenser les utilisateurs. Ce fichier nous permettra aussi de recenser des utilisateurs d’une ancienne base de données (type C/Side par exemple)  :

image

Vous pouvez utiliser les formules d’Excel pour compléter les informations :

image

Une fois ces informations ont été complétées et validées nous allons utiliser un script PowerShell pour créer nos utilisateurs dans les systèmes :

#Initialisation des variables

$computer = "COMPUTER100"

$NavServerInstance = "DynamicsNAV70"

$a = New-Object -comobject Excel.Application

#$a.visible = $True

$RunDate  = (get-date).tostring("dd/MM/yyyy")

$file = "C:\temp\Utilisateurs.xlsx"

$b = $a.Workbooks.Open($file)

$c = $b.Worksheets.Item(1)

[int32] $NBUsers = $c.Cells.Item(1,3).Text

foreach ($i in 1..$NBUsers)

{

    $UserDescription = $c.Cells.Item(3+$i,2).Text

    $User = $c.Cells.Item(3+$i,3).Text

    $password = $c.Cells.Item(3+$i,4).Text

    $NAVUserPermission = $c.Cells.Item(3+$i,5).Text

    $c.Cells.Item(3+$i,7) = $RunDate

    #Création d'un utilisateur Windows local

    $objC = [ADSI]"WinNT://$computer"

    $objUser = $objC.Create("User", $User)

    $objUser.setpassword($password)

    $objUser.SetInfo()

    $objUser.description = $UserDescription

    $objUser.SetInfo()

    #Création de l'utilisateur dans Dynamics NAV

    New-NAVServerUser -ServerInstance $NavServerInstance -WindowsAccount $user

    #Affectation des permissions

    New-NAVServerUserPermissionSet -ServerInstance $NavServerInstance -PermissionSetId $NAVUserPermission -WindowsAccount $user

}

$b.Save()

$a.Quit()

En plus, à chaque fois un utilisateur est créé, le script renseigne la date de création :

image

Sur ce, je vous souhaite une excellente année 2013, pleine de bonnes choses.