Question [résolu] Passer des variables avec virgules

Plus d'informations
il y a 13 ans 2 mois #13473 par BARTHE
Bonjour je cherche à passer une variable avec des virgules comme délimiteur.

[code:1]
$CN = Read-Host \"Quel est votre common name ?\"
[string]$SAN = Read-Host \"Quel sont les autres nom d'objets ?\"

#On met en forme la sélection
$SAN=$SAN.replace(\" \",\", \"«»)
[/code:1]

dans la commande

[code:1]
Set-Content -path \".\$FILENAME.txt\" -Value (New-ExchangeCertificate -GenerateRequest -KeySize $KEYSIZE -SubjectName \"c=$COUNTRY, s=$STATE, l=$CITY, o=$ORG, ou=$DEP, cn=$CN\" -DomainName $SAN -PrivateKeyExportable $True)
[/code:1]

mais le cmdlet powershelle exchange n'arrive pas à convertir ma variable


[code:1]
Impossible de traiter la transformation d'argument sur le paramètre « DomainName ». Impossible de convertir la valeur «
 mail.agoravita.com, remote.agoravita.com » en type « Microsoft.Exchange.Data.MultiValuedProperty`1[Microsoft.Exchange.
Data.SmtpDomainWithSubdomains] ». Erreur : « Échec de la conversion de mail.agoravita.com, remote.agoravita.com de Syst
em.String à Microsoft.Exchange.Data.SmtpDomainWithSubdomains. Erreur : Erreur lors de la conversion de la chaîne 'mail.
agoravita.com, remote.agoravita.com' dans le type de résultat Microsoft.Exchange.Data.SmtpDomainWithSubdomains : \"mail.
agoravita.com, remote.agoravita.com\" n'est pas un domaine SMTP valide. »
+ CategoryInfo : InvalidData: (:«») [New-ExchangeCertificate], ParameterBindin...mationException
+ FullyQualifiedErrorId : ParameterArgumentTransformationError,New-ExchangeCertificate
[/code:1]

Avez vous une idée pour contourner ce problème ?

Merci d'avance !<br><br>Message édité par: cyril.barthe, à: 30/12/12 22:58

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

Plus d'informations
il y a 13 ans 2 mois #13479 par BARTHE
En sachant que si je remplace la variable $SAN par les vrais arguments séparés par virgule cela fonctionne ...

J'ai beau chercher, j'ai l'impression qu'il me prend ma variable comme une seule valeur, à la place de toutes les valeurs séparées par virgule à l'intérieur ...

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

Plus d'informations
il y a 13 ans 2 mois #13489 par Matthew BETTON
Bonsoir,

cyril.barthe écrit:

j'ai l'impression qu'il me prend ma variable comme une seule valeur, à la place de toutes les valeurs séparées par virgule à l'intérieur ...


C'est le cas. La Cmdlet 'New-ExchangeCertificate' attend comme valeur(s) du paramètre 'DomainName' un nom de domaine ou une liste de nom de domaine.

Une liste telle que :

[code:1]@(\&quot;mail.agoravita.com\&quot;, \&quot;remote.agoravita.com\&quot; )[/code:1]

Ce qui donne, interprété par PowerShell :

[code:1]PS C:\&gt; @(\&quot;mail.agoravita.com\&quot;, \&quot;remote.agoravita.com\&quot;«»)
mail.agoravita.com
remote.agoravita.com[/code:1]

Ce que tu n'es pas obligé de saisir lorsque tu le fais \&quot;à la main\&quot; : dans ce cas, PowerShell interprète bien ta saisie comme étant une liste de [String] dont le séparateur est la virgule.

Dans le cas présent, ce que tu renvois c'est un objet de type [String] (renvoyé par 'ReadHost') et non pas une liste ou un tableau, c'est à dire :

[code:1]\&quot;mail.agoravita.com, remote.agoravita.com\&quot;[/code:1]

Dans ce cas, PowerShell l'interprète comme étant un seul et unique nom, une seule valeur.

A la lecture de ceci :

[code:1]#On met en forme la sélection

$SAN=$SAN.replace(\&quot; \&quot;,\&quot;, \&quot;«»)[/code:1]

Il semble que l'utilisateur doit saisir les noms de domaine séparés par une espace.

Du coup, pour recréer une liste, je pencherai plutôt vers cette solution :

[code:1]$SAN=$SAN -split \&quot; \&quot;[/code:1]

Pour l'exemple :

[code:1]
PS C:\&gt; [string]$SAN = Read-Host \&quot;Quel sont les autres nom d'objets ?\&quot;
Quel sont les autres nom d'objets ?: toto.com titi.com tutu.com
PS C:\&gt; $SAN -split \&quot; \&quot;
toto.com
titi.com
tutu.com
[/code:1]

Bien que, avec ta solution (Read-Host), rien n'oblige la personne qui va saisir à utiliser un espace comme séparateur ... Si ce n'est pas le cas, cela ne fonctionnera plus.

@ +

Matthew<br><br>Message édité par: Matthew BETTON, à: 30/12/12 23:00

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

Plus d'informations
il y a 13 ans 2 mois #13490 par BARTHE
Bonsoir,

merci Matthew pour ta réponse, c'est clair, complet, précis et ça règle mon problème.

le top quoi ;)

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

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