Question
[résolu] Passer des variables avec virgules
- BARTHE
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 25
- Remerciements reçus 0
il y a 13 ans 2 mois #13473
par BARTHE
[résolu] Passer des variables avec virgules a été créé 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
[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.
- BARTHE
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 25
- Remerciements reçus 0
il y a 13 ans 2 mois #13479
par BARTHE
Réponse de BARTHE sur le sujet Re:Passer des variables avec virgules
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 ...
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.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 13 ans 2 mois #13489
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Passer des variables avec virgules
Bonsoir,
cyril.barthe écrit:
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]@(\"mail.agoravita.com\", \"remote.agoravita.com\" )[/code:1]
Ce qui donne, interprété par PowerShell :
[code:1]PS C:\> @(\"mail.agoravita.com\", \"remote.agoravita.com\"«»)
mail.agoravita.com
remote.agoravita.com[/code:1]
Ce que tu n'es pas obligé de saisir lorsque tu le fais \"à la main\" : 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]\"mail.agoravita.com, remote.agoravita.com\"[/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(\" \",\", \"«»)[/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 \" \"[/code:1]
Pour l'exemple :
[code:1]
PS C:\> [string]$SAN = Read-Host \"Quel sont les autres nom d'objets ?\"
Quel sont les autres nom d'objets ?: toto.com titi.com tutu.com
PS C:\> $SAN -split \" \"
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
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]@(\"mail.agoravita.com\", \"remote.agoravita.com\" )[/code:1]
Ce qui donne, interprété par PowerShell :
[code:1]PS C:\> @(\"mail.agoravita.com\", \"remote.agoravita.com\"«»)
mail.agoravita.com
remote.agoravita.com[/code:1]
Ce que tu n'es pas obligé de saisir lorsque tu le fais \"à la main\" : 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]\"mail.agoravita.com, remote.agoravita.com\"[/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(\" \",\", \"«»)[/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 \" \"[/code:1]
Pour l'exemple :
[code:1]
PS C:\> [string]$SAN = Read-Host \"Quel sont les autres nom d'objets ?\"
Quel sont les autres nom d'objets ?: toto.com titi.com tutu.com
PS C:\> $SAN -split \" \"
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.
- BARTHE
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 25
- Remerciements reçus 0
il y a 13 ans 2 mois #13490
par BARTHE
Réponse de BARTHE sur le sujet Re:Passer des variables avec virgules
Bonsoir,
merci Matthew pour ta réponse, c'est clair, complet, précis et ça règle mon problème.
le top quoi
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.074 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [résolu] Passer des variables avec virgules