Question New-ADUser donne des erreurs étranges

Plus d'informations
il y a 11 ans 6 mois #17966 par Cyrille CHAGNON
Bonjour à tous,

Je cherche à développer et à comprendre la mise à jour en \"bulk\" pour un Active Directory.

Voici mon code (récupéré sur le net, trafiqué)

[code:1]Import-Module ActiveDirectory

# Import list of Users From CSV into $Userlist

$UserList=IMPORT-CSV c:\scripts\newUsers1.csv

# Step through Each Item in the List

foreach ($User in $UserList) {
# Build Username
$Username=$User.samAccountName
Write-Output \"====\"
Write-Output \"1 $Username\"

# Build Password from Firstname and Lastname

$Password=$User.Lastname
Write-Output \"2 $Password\"

# Build the Displayname, le prénom, le nom
$DisplayName=$User.Firstname+\" \"+$User.Lastname
Write-Output \"3 $DisplayName\"
$prenom=$User.Firstname
$nom=$User.Lastname

# Build and define Domain name
$Domain=\"@labo.cyrille.fr\"
Write-Output \"4 $Domain\"

# Build User Principal Name
$UPN=$Username+$Domain
Write-Output \"5 $UPN\"

# Build and define Home Directory path
$HDrive=\"\\uncpathtohomeshare\\"
Write-Output \"6 $HDrive\"

# Build and define which Organizational Unit to create User inside
$OU=$User.OU
Write-Output \"7 $OU\"
Write-Output \"====\"


##########################################
#New-ADUser -Name $Username –GivenName \"$User.Firstname\" –Surname \"$User.Lastname\" –DisplayName $DisplayName –SamAccountName $Username –UserPrincipalName $UPN -HomeDrive \"H:\" -HomeDirectory $HDrive -Path $OU
New-ADUser -Name $Username –GivenName $prenom
# Set Password

#Set-ADAccountPassword -Identity $Username -NewPassword (ConvertTo-SecureString -AsPlainText $Password -Force)

# Add User to Security Groups
#Add-ADPrincipalGroupMembership -Identity $Username -MemberOf GroupeCommercial

# Enable Account

#Enable-ADAccount -Identity $Username

}[/code:1]
Mon fichier csv contient 4 champs comme suit:
[code:1]samAccountName,FirstName,LastName,OU
dtouret,Dominique,Touret,\"OU=Commercial,dc=labo,dc=cyrille,dc=fr\"
ebelot,Elisabeth,Belot,\"OU=Commercial,dc=labo,dc=cyrille,dc=fr\"[/code:1]

La ligne, mise en italique, juste après les dièses, celle qui doit m'ajouter mes comptes avec une initialisation de certains comptes m'envoie l'erreur en image jointe:

La chaîne commençant par :
Au niveau de C:\scripts\importuser.ps1 : 46 Caractère : 105
+ New-ADUser -Name $Username -HomeDrive \"H:\" -HomeDirectory $HDrive -Path $OU â?\"DisplayName \"$DisplayName <<<< \"
n'a pas de terminateur : \".
Au niveau de C:\scripts\importuser.ps1 : 58 Caractère : 2
+ } <<<<
+ CategoryInfo : ParserError: (
# Set Passwo... $Username
}:String) [], ParseException
+ FullyQualifiedErrorId : TerminatorExpectedAtEndOfString


Alors comme je ne comprenais pas, j'ai cherché à y aller étape par étape.
En gras, voici une des commandes que j'ai passé. Elle m'envoie le même, relatif a \"n'a pas de délimiteur\";

Si je passe la commande suivante:
New-ADUser -Name $Username -HomeDrive \"H:\" -HomeDirectory $HDrive -Path $OU
Ca passe, je crée mes 2 comptes.

Comme si tous les paramètres du type \"string\" ne passaient pas; Mais le fait de les mettre entre \" n'a rien changé !

Pouvez-vous m'expliquer pourquoi ?

Cordialement,
Cyrille

Message édité par: Cyrille999, à: 24/08/14 20:21<br><br>Message édité par: Cyrille999, à: 24/08/14 20:23

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

Plus d'informations
il y a 11 ans 6 mois #17968 par Laurent Dardenne
Salut,
Cyrille999 écrit:

Pouvez-vous m'expliquer pourquoi ?

A priori ta substitution est erronée :
[code:1]
$User= 1|select Firstname
$User.Firstname=\&quot;Test\&quot;
\&quot;$User.Firstname\&quot;
\&quot;$($User.Firstname)\&quot;
$User.Firstname
[/code:1]

Tutoriels PowerShell

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

Plus d'informations
il y a 11 ans 6 mois #17970 par Cyrille CHAGNON
Laurent Dardenne écrit:

Salut,
Cyrille999 écrit:

Pouvez-vous m'expliquer pourquoi ?

A priori ta substitution est erronée :
[code:1]
$User= 1|select Firstname
$User.Firstname=\&quot;Test\&quot;
\&quot;$User.Firstname\&quot;
\&quot;$($User.Firstname)\&quot;
$User.Firstname
[/code:1]

Bonjour Laurent,

Pas compris ce que tu tentais de m'expliquer !!!!
:S
J'ai lancé ton exemple, le $User est \&quot;Test\&quot; au lieu d'être \&quot;1\&quot; mais je ne vois pas dans mon code où j'ai substitué une variable ?!????

Merci d'avance de ta future explication :P

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

Plus d'informations
il y a 11 ans 6 mois #17971 par Laurent Dardenne
Cyrille999 écrit:

J'ai lancé ton exemple, le $User est \&quot;Test\&quot; au lieu d'être \&quot;1\&quot;

C'est une manière de créer un PSobjet, Select-Object renvoi un nouvel objet à partir d'une liste de propriétés.
Cyrille999 écrit:

mais je ne vois pas dans mon code où j'ai substitué une variable ?!????

Si j'ai bien compris, ici :
[code:1]
New-ADUser -Name $Username –GivenName \&quot;$User.Firstname\&quot;
[/code:1]
Le parseur s'arrête au point, il interprète donc uniquement la variable $User et pas la propriété de ton objet $User.Firstname.

Tutoriels PowerShell

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

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