Précédent   Forum des professionnels en informatique > Systèmes > Windows > Windows Serveur
Windows Serveur Forum d'entraide professionel pour Windows Serveur : NT, 2000, 2003 , Longhorn...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/12/2010, 15h29   #1
Invité de passage
 
Inscription : novembre 2009
Messages : 12
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 12
Points : 1
Points : 1
Par défaut Script powershell d'ajout d'utilisateurs

Bonjour a tous,
j'ai realise un script d'ajout automatise d'utilisateurs depuis un fichier CSV en powershell.
Le script semble fonctionner, mis a part qu'il ne trouve pas le membre "create" de l'objet "OU".
Je m'explique,
tout d'abord, voici le script :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# Active Directory Variables
$domaineSMTP = “@$env:USERDNSDOMAIN”
$domaineLDAP = “$env:USERDNSDOMAIN”
$domaineLDAP = $domaineLDAP.Replace(‘.’,',DC=’)
$domaineLDAP = “DC=$domaineLDAP”
$OU = ‘OU=Utilisateurs’
$objOU = [ADSI]“LDAP://$OU,$domaineLDAP”

write-host "domaineLDAP = " $domaineLDAP
write-host "ou = " $OU
write-host "objOU = " $objOU

# Import CSV Users file
$file = Import-Csv $args[0]

# Add each account
foreach ($user in $file)
{
    # Debug
    write-host "username = " $user.USERNAME
    
    # Create variables
    [string]$login = $user.USERNAME
    [string]$firstName = $user.FIRSTNAME
    [string]$lastName = $user.LASTNAME
    [string]$email = $user.EMAIL
    [string]$descipt = $user.DESCRIPTION
    [string]$group = $user.GROUPE
    [string]$pass = $user.PASSWORD
    [string]$userCN=”CN=$($lastName) $($firstName)”
    
    # Create AD User
    $objUser = $objOU.Create(“user”,$userCN)
    $objUser.put(“sAMAccountName”, $login)
    $objUser.put(“userPrincipalName”, $login + $domaineSMTP)
    $objUser.put(‘givenName’, $firstName)
    $objUser.put(‘sn’, $lastName)

    # Add description if any
    if ( $descript -ne "")
    {
        $objUser.put(‘Description’, $descript)
    }

    # Set datas/set password
    $objUser.SetInfo()
    $objUser.SetPassword($pass)

    # Activate account
    $objUser.userAccountControl[0] = $objUser.userAccountControl[0] -band (-bnot 2)
    $objUser.SetInfo()
}
Donc le probleme se sittue au niveau de la ligne :
Code :
1
2
$objUser = $objOU.Create(“user”,$userCN)
En fait, la variable "$objOU" vaut bien "System.DirectoryServices.DirectoryEntry" mais ne semble pas trouver la methode "create".

L'erreur est la suivante :
Code :
1
2
3
4
5
6
7
The following exception occurred while retrieving member "Create": "There is no such object on the server.
"
At C:\Users\Administrator\Documents\adduser.ps1:33 char:15
+     $objUser = <<<<  $objOU.Create("user",$userCN)
    + CategoryInfo          : NotSpecified: (:) [], ExtendedTypeSystemException
    + FullyQualifiedErrorId : CatchFromBaseGetMember
suivi par de nombreuses autres erreurs (logique).

Je bloque totalement, quelqu'un a t'il une idee ?
merci d'avance,
Thibault.
csmik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 11h36   #2
Invité de passage
 
Inscription : novembre 2009
Messages : 12
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 12
Points : 1
Points : 1
personne n'a d'idee ?
csmik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2010, 12h04   #3
Membre expérimenté
 
Avatar de suchiwa
 
Homme Vincent
Consultant en technologies
Inscription : avril 2010
Messages : 383
Détails du profil
Informations personnelles :
Nom : Homme Vincent
Âge : 32
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant en technologies
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : avril 2010
Messages : 383
Points : 536
Points : 536
Par défaut Add user

Citation:
Envoyé par csmik Voir le message
personne n'a d'idee ?
Bonjour,

J'ai bien une fonction qui tourne sous Windows 2008 Server. Je la donne tel quelle, change la avec tes variables.
L'erreur doit venir de ton "dName" (ici dans le script, arborescence des OUs), au moment de la création:

Function Add-User {
# This function creates a new User
param([string] $name=$null,
[string] $dName=$null,
[string] $password=$null,
[string] $principalName=$null,
[string] $desc=$null)

if($dName -eq $null -or $dName -eq "") {
$cnx = [ADSI] ""
} else {
$cnx = [ADSI] "LDAP://$dName"
}
$user = $cnx.Create("User", "CN=$name")
$user.Put("sAMAccountName", "$name")
$user.Put("userPrincipalName", "$principalName")
$user.Put("DisplayName", "$desc")
$user.Put("givenName", "$name")
$user.Put("Description", "$desc")
$user.SetInfo()
# User must exists before changing attributes
$user.SetPassword("$password")
$user.SetInfo()
}

Vérifie bien l'arborescence de tes OUs.
-name est l'équivalent de "CN=John Doe"
-dName a pour valeur quelque chose du genre
"OU=DSI,OU=Paris,OU=France,DC=CONTOSO,DC=COM"
-password le mot de passe de ton utilisateur
-principalName l'adresse e-mail

Ensuite, dans le corps de ton script, utilise la syntax suivante :

Add-User -name "John Doe" -dName "$dName" -password $Password -principalName "johndoe@contoso.com" -desc "Admin User"

Merci de bien vouloir valider si l'aide a pu te faire avancer.
Envoie moi un MP si besoin.
Vincent
suchiwa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h53.


 
 
 
 
Partenaires

Hébergement Web