Question
New-ADUSER Problème gestion argument vide
- Deplanche
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 15
- Remerciements reçus 0
il y a 10 ans 4 mois #20930
par Deplanche
New-ADUSER Problème gestion argument vide a été créé par Deplanche
Bonjour,
J'ai un problème pour lequel je ne trouve pas de solution.
Contexte :
J'ai un formulaire qui me génère un fichier csv. Certaines valeurs du fichier généré peuvent être vides. Exemple la valeur Fax.
Problème :
Quand j'ai un argument qui à une valeur vide pour le paramètre -OtherAttributes, mon script me retourne une erreur :
[code:1]New-ADUser : Le serveur ne souhaite pas traiter la requête
Au caractère C:\Scripts\CréationNouvelUtilisateurv1.50.ps1:497 : 6
+ New-ADUser -Name $ImportCSV.NomComplet -DisplayName $ImportCSV.NomComplet - ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (CN=Jean BON,CN...domain,DC=local:«»String) [New-ADUser], ADException
+ FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Commands.NewADUser[/code:1]
Le script fonctionne parfaitement bien, quand je n'ai pas de valeur vide pour le paramètre -OtherAttributes
Je ne trouve pas comment gérer ce cas de figure.
J'ai tenté de générer une chaine de caractère stockée dans une variable en testant les valeurs de mon fichier CSV, pour ne tenir compte que des valeurs non vide. Pour ensuite place cette variable en argument du paramètre -OtherAttributes. Cela me généré me disant que ce paramètre attendait un type System.Collections.Hashtable au lieu du type string.
Merci
Message édité par: Dionysoos, à: 22/10/15 16:04<br><br>Message édité par: Dionysoos, à: 22/10/15 16:11
J'ai un problème pour lequel je ne trouve pas de solution.
Contexte :
J'ai un formulaire qui me génère un fichier csv. Certaines valeurs du fichier généré peuvent être vides. Exemple la valeur Fax.
Problème :
Quand j'ai un argument qui à une valeur vide pour le paramètre -OtherAttributes, mon script me retourne une erreur :
[code:1]New-ADUser : Le serveur ne souhaite pas traiter la requête
Au caractère C:\Scripts\CréationNouvelUtilisateurv1.50.ps1:497 : 6
+ New-ADUser -Name $ImportCSV.NomComplet -DisplayName $ImportCSV.NomComplet - ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (CN=Jean BON,CN...domain,DC=local:«»String) [New-ADUser], ADException
+ FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Commands.NewADUser[/code:1]
Le script fonctionne parfaitement bien, quand je n'ai pas de valeur vide pour le paramètre -OtherAttributes
Je ne trouve pas comment gérer ce cas de figure.
J'ai tenté de générer une chaine de caractère stockée dans une variable en testant les valeurs de mon fichier CSV, pour ne tenir compte que des valeurs non vide. Pour ensuite place cette variable en argument du paramètre -OtherAttributes. Cela me généré me disant que ce paramètre attendait un type System.Collections.Hashtable au lieu du type string.
Merci
Message édité par: Dionysoos, à: 22/10/15 16:04<br><br>Message édité par: Dionysoos, à: 22/10/15 16:11
Connexion ou Créer un compte pour participer à la conversation.
- Deplanche
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 15
- Remerciements reçus 0
il y a 10 ans 4 mois #20933
par Deplanche
Réponse de Deplanche sur le sujet Re:New-ADUSER Problème gestion argument vide
Avec un tableau associatif comme argument ça fonctionne mieux...
Voilà la solution que j'ai mise en place pour prendre en compte les valeurs vides :
[code:1]$ADArgument = @{}
if(($sDistinguishedName -ne \"\"«») -and ($sDistinguishedName -ne $null))
{
$ADArgument += @{'distinguishedName' = $sDistinguishedName}
}
If(($sPaysHLCN -ne \"\"«») -and ($sPaysCN -ne $null))
{
$ADArgument += @{'c' = $sPaysCN}
}
If(($sVilleHLCN -ne \"\"«») -and ($sVilleCN -ne $null))
{
$ADArgument += @{'l' = $sVilleCN}
}
If(($ImportCSV.Fax -ne \"\"«») -and ($ImportCSV.Fax -ne $null))
{
$ADArgument += @{'facsimileTelephoneNumber' = $ImportCSV.Fax}
}
New-ADUser -Name $ImportCSV.NomComplet -DisplayName $ImportCSV.NomComplet ... -OtherAttributes $ADArgument
[/code:1]
C'est loin d'être élégant je vous l'accorde mais ça fonctionne.
Si vous avez des pistes pour faire quelques chose de plus propre je suis preneur<br><br>Message édité par: Dionysoos, à: 22/10/15 16:41
Voilà la solution que j'ai mise en place pour prendre en compte les valeurs vides :
[code:1]$ADArgument = @{}
if(($sDistinguishedName -ne \"\"«») -and ($sDistinguishedName -ne $null))
{
$ADArgument += @{'distinguishedName' = $sDistinguishedName}
}
If(($sPaysHLCN -ne \"\"«») -and ($sPaysCN -ne $null))
{
$ADArgument += @{'c' = $sPaysCN}
}
If(($sVilleHLCN -ne \"\"«») -and ($sVilleCN -ne $null))
{
$ADArgument += @{'l' = $sVilleCN}
}
If(($ImportCSV.Fax -ne \"\"«») -and ($ImportCSV.Fax -ne $null))
{
$ADArgument += @{'facsimileTelephoneNumber' = $ImportCSV.Fax}
}
New-ADUser -Name $ImportCSV.NomComplet -DisplayName $ImportCSV.NomComplet ... -OtherAttributes $ADArgument
[/code:1]
C'est loin d'être élégant je vous l'accorde mais ça fonctionne.
Si vous avez des pistes pour faire quelques chose de plus propre je suis preneur<br><br>Message édité par: Dionysoos, à: 22/10/15 16:41
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 10 ans 4 mois #20936
par Arnaud Petitjean
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 ?
Réponse de Arnaud Petitjean sur le sujet Re:New-ADUSER Problème gestion argument vide
Salut Dionysoos,
Pour moi il y a un problème de logique dans ton test car une chaine ne peut pas être à la fois vide et nulle. Pour que ton test fonctionne il faudrait mettre un OU et non pas un ET.
De plus, ce qui à mon avis pose problème à la commande New-ADUser ce sont les valeurs d'attributs à $null. Les valeurs chaine vide ne posent pas de problème.
Autre chose, il faut savoir que les paramètres des commandes du module AD, comme de ceux de nombreuses autres commandes, autorisent le passage de valeur \"byPropertyName\" (regarde l'aide complète via Help Get-ADUser -full). En conséquence de quoi, si tu passes à la commande par le biais du pipe un objet qui contient des noms de propriété identiques aux noms des paramètres alors PowerShell associera automatiquement ces derniers entre eux.
Ainsi si tu renommes les noms des colonnes de ton fichier CSV comme attendu par la commande, tu devrais être capable d'écrire quelque chose du genre :
[code:1]Import-Csv 'c:\users.csv' -useculture | New-ADUser -company 'PowerShell-Scripting.com'[/code:1]
Bon OK ça ne résout pas ton problème de OtherAttribute mais ça peut être bon à savoir...
Arnaud
Pour moi il y a un problème de logique dans ton test car une chaine ne peut pas être à la fois vide et nulle. Pour que ton test fonctionne il faudrait mettre un OU et non pas un ET.
De plus, ce qui à mon avis pose problème à la commande New-ADUser ce sont les valeurs d'attributs à $null. Les valeurs chaine vide ne posent pas de problème.
Autre chose, il faut savoir que les paramètres des commandes du module AD, comme de ceux de nombreuses autres commandes, autorisent le passage de valeur \"byPropertyName\" (regarde l'aide complète via Help Get-ADUser -full). En conséquence de quoi, si tu passes à la commande par le biais du pipe un objet qui contient des noms de propriété identiques aux noms des paramètres alors PowerShell associera automatiquement ces derniers entre eux.
Ainsi si tu renommes les noms des colonnes de ton fichier CSV comme attendu par la commande, tu devrais être capable d'écrire quelque chose du genre :
[code:1]Import-Csv 'c:\users.csv' -useculture | New-ADUser -company 'PowerShell-Scripting.com'[/code:1]
Bon OK ça ne résout pas ton problème de OtherAttribute mais ça peut être bon à savoir...
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.
Temps de génération de la page : 0.082 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- New-ADUSER Problème gestion argument vide