Je rencontre des problèmes lors de l'exécution de PowerShell avec un script qui doit utiliser un nombre variable de paramètres.Comment passer un paramètre de chaîne à Powershell pour ConvertFrom-StringData à partir de la ligne de commande?
Le fichier de script ressemble à ceci:
param([string]$paramString)
$params = ConvertFrom-StringData $paramString
$params
Exécution du script directement powershell donne le résultat attendu:
[PS] C:\some\path>.\test.ps1 "a=foo `n b=bar `n c=moo"
Name Value
---- -----
c moo
a foo
b bar
Appel powershell de la ligne de commande avec le même script et paramètres montre cette :
C:\some\path>powershell -nologo -file ./test.ps1 "a=foo `n b=bar `n c=moo"
Name Value
---- -----
a foo `n b=bar `n c=moo
Il semble que la chaîne transmise est dans un certain format, la fonction ConvertFrom-StringData
ne peut plus l'analyser.
Merci Roman, qui a travaillé. Juste un addendum pour autre chose: j'avais un second paramètre pour le script qui contenait une chaîne qui devrait être utilisée littéralement. L'utilisation de "" param1 "" "" a = foo 'n b = bar' n c = moo "" a entraîné la concaténation des deux chaînes. J'ai dû utiliser 'param1' "" a = foo 'n b = bar' n c = moo "" pour que ça fonctionne comme prévu. –
Oui ... L'appel de scripts PowerShell avec des paramètres complexes de cmd est douloureux. S'il est connu au moment de la conception qu'un script est pour les appels de cmd, alors son interface d'entrée doit être conçue aussi simple que possible. Considérez également ce conseil, car l'approche avec '-Command' ne couvre pas tous les cas d'utilisation de l'approche' -File'. –