Question
liste des users
- Arnaud Petitjean
- Hors Ligne
- Modérateur
Je viens de récupérer la machine virtuelle Exchange 2007 (VHD) de chez Microsoft (ici pour ceux que ça intéresse : www.microsoft.com/downloads/details.aspx...c&DisplayLang=en ). Comme ça je verrais mieux comment régler ton problème.
Un truc auquel j'avais pas pensé et que j'aimerais que tu essaies, c'est de réaliser ton action avec la console graphique de management d'Exchange et d'en récupérer la ligne de commande Powershell, tout simplement...
Ainsi en comparant celle qui marche pas avec celle qui marche tu trouveras facilement ton erreur.
Pour info, voici un exemple qui fonctionne :
[code:1]Enable-Mailbox -Identity 'contoso.com/Users/David Campbell' -Alias 'davidcam' -Database 'CN=Mailbox Database,CN=First Storage Group,CN=InformationStore,CN=WS03R2EEEXCHLCS,CN=Servers,CN=Exchange Administrative Group (FYDIBOHF23SPDLT),CN=Administrative Groups,CN=First Organization,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=contoso,DC=com'[/code:1]
Mais pour qu'il marche, il ne faut pas que la boite aux lettres soit déjà associée à l'utilisateur.
Courage Greg, tu touches au but...
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- greg
- Auteur du sujet
- Hors Ligne
- Membre junior
- Messages : 34
- Remerciements reçus 0
lol, la commande en elle même fonctionne bien. En mettant le meme nombre de paramètre qu'avec le script, mais lorsque je lui applique une variable pour l'utilisateur c'est autre chose...
sinon j'ai un autre script, mais pareil, il me dit qu'il ne peut pas associé l'argument au paramètre Database
Je te montre le code:
[code:1]##Lancer la commande .\Createmailbox.ps1 <nom du fichier CSV>
## <Nom du fichier CSV> peut contenir un chemin d'accès au fichier et peut être mis entre \"\"
## exemple : .\Createmailbox.ps1 \"c:\mbinfo.csv\"
##
## Récupérer le nom du fichier CSV qui est passé en argument du script
## et stocker cette information (nom et chemin) dans la variable 'data'
$data = import-csv $args[0]
## Fonction pour convertir le mot de passe en clair dans le fichier CSV en 'secure string'
function New-SecureString([string] $plainText)
{
$secureString = new-object System.Security.SecureString
foreach($char in $plainText.ToCharArray())
{
$secureString.AppendChar($char)
}
$secureString
}
## Fin de Fonction
## Pour chacune des lignes du fichier exécuter les commandes suivantes. Les données sont récupérées dans l'array $i
foreach ($i in $data)
{
## Transformer le mot de passe en clair en codé à laide de la fonction new-securestring définie plus haut
$ss = new-securestring $i.password
## Construire l'UPN à parti de l'alias combiné avec le fqdn
$upn = $i.alias + \"@\" + $i.fqdn
## Executer la commande Powershell Exchange de création de la mailbox avec les paramètres du fichier CSV
## et les paramètre construit par ce script.
new-mailbox -Password $ss -Database $i.database -UserPrincipalName $upn -Name $i.name -OrganizationalUnit $i.ou
}[/code:1]
Dans la boucle, j'ai juste affiché $i, cela m'affiche bien toutes les propriétés des users, groups etc...
en laissant le code telquel voici l'erreur:
[code:1][PS] C:\>c:\scripts\usercsv.ps1 c:\export.csv
New-Mailbox : Cannot bind argument to parameter 'Database' because it is null.
At C:\scripts\usercsv.ps1:34 char:23
+ new-mailbox -Database <<<< $i.database -UserPrincipalName $upn -Name $i.nam
e -OrganizationalUnit $i.ou
New-Mailbox : Cannot bind argument to parameter 'Database' because it is null.
At C:\scripts\usercsv.ps1:34 char:23
+ new-mailbox -Database <<<< $i.database -UserPrincipalName $upn -Name $i.nam
e -OrganizationalUnit $i.ou
New-Mailbox : Cannot bind argument to parameter 'Database' because it is null.
At C:\scripts\usercsv.ps1:34 char:23
+ new-mailbox -Database <<<< $i.database -UserPrincipalName $upn -Name $i.nam
e -OrganizationalUnit $i.ou
New-Mailbox : Cannot bind argument to parameter 'Database' because it is null.
At C:\scripts\usercsv.ps1:34 char:23
+ new-mailbox -Database <<<< $i.database -UserPrincipalName $upn -Name $i.nam
e -OrganizationalUnit $i.ou[/code:1]
Et voici ce qu'il y a dans $i:
[code:1]DN : CN=aix1,OU=Aix,OU=DirectionsRegionales,OU=Agences,
DC=gestor,DC=fr
objectClass : user
ou :
distinguishedName : CN=aix1,OU=Aix,OU=DirectionsRegionales,OU=Agences,
DC=gestor,DC=fr
instanceType : 4
whenCreated : 20070420085907.0Z
whenChanged : 20070507122552.0Z
uSNCreated : 25729
uSNChanged : 29969
name : aix1
objectGUID : X'f9d093c41424cc4495bb1f19b8d71d11'
objectCategory : CN=Person,CN=Schema,CN=Configuration,DC=gestor,DC=
fr
dSCorePropagationData :
cn : aix1
givenName : aix1
displayName : aix1
memberOf : CN=GG_Aix,OU=Aix,OU=DirectionsRegionales,OU=Agence
s,DC=gestor,DC=fr
userAccountControl : 512[/code:1] etc.... avec d'autre users et groupes
Il arrive bien a récupérer les info du fichier csv...<br><br>Message édité par: greg, à: 9/05/07 17:25
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
Je pense maintenant avoir compris l'erreur.
En fait, comme il y a un espace dans le nom qu'on lui passe en paramètre, il faut mettre des guillemets... Mais pas n'importe lesquels : 'les simples quotes'.
Essaie de mettre ta variable qui contient l'identité de ton utilisateur comme ceci : [code:1]\"`'$i`'\"[/code:1]
Ainsi le résultat sera : [code:1]'Mon Utilisateur'[/code:1]
Soit:
[code:1]Enable-Mailbox -Identity \"`'$i.properties.Name`'\" -Database 'SVREXCHANGE\First Storage Group\Mailbox Database'[/code:1]
Profites en aussi pour remplacer les guillemets doubles par des guillemets simples afin de se rapprocher le plus possible de la commande résultante de la console graphique (car elle fonctionne).
Vérifies également s'il ne faut pas spécifier obligatoirement le paramètre -Alias et que la valeur pour le paramètre -Database est bien la bonne.
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- greg
- Auteur du sujet
- Hors Ligne
- Membre junior
- Messages : 34
- Remerciements reçus 0
Je suis en formatin cette semaine, mais j'ai trouvé une autre solution pour la création auto de Bals exchange, via un fichier csv...
a+
greg
Connexion ou Créer un compte pour participer à la conversation.
- greg
- Auteur du sujet
- Hors Ligne
- Membre junior
- Messages : 34
- Remerciements reçus 0
Hello,
Je suis en formation cette semaine, mais j'ai trouvé une autre solution pour la création auto de Bals exchange, via un fichier csv...
a+
greg
Connexion ou Créer un compte pour participer à la conversation.
- Czajkowski
- Hors Ligne
- Nouveau membre
- Messages : 3
- Remerciements reçus 0
Bonsoir Greg,
Tout d'abord merci pour le message laissé dans le livre d'or, ça fait toujours plaisir
D'autre part pour ce que tu cherches à faire, Robin voulais en fait écrire ceci :
[code:1]
foreach ($i in $complist) {
$i.properties.samaccountname
}
[/code:1]
Hello,
J'aimerais reprendre ce sript mais j'aimerais avoir également l'OU de chaque utilisateur et sortir les resultats vers un fichier (txt ou xls).
J'ai essayé avec |Out-File mais ca ne fonctionne pas.
Avez vous une piste svp?
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- liste des users