Ich habe Probleme beim Ausführen von Powershell mit einem Skript, das eine variable Anzahl von Parametern verwenden sollte.Wie übermittele ich einen String-Parameter für Powershell für ConvertFrom-StringData von der Befehlszeile?
Die Skriptdatei sieht wie folgt aus:
param([string]$paramString)
$params = ConvertFrom-StringData $paramString
$params
Ausführen des Skript direkt in Powershell ergibt das erwartete Ergebnis:
[PS] C:\some\path>.\test.ps1 "a=foo `n b=bar `n c=moo"
Name Value
---- -----
c moo
a foo
b bar
Aufruf Powershell von der Kommandozeile mit dem gleichen Skript und Parameter zeigt diese :
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
Es scheint wie der übergebene String ist in einem Format, so dass die ConvertFrom-StringData
Funktion es nicht mehr parsen kann.
Dank Roman, die funktionierte. Nur ein Addendum für eine andere Sache: Ich hatte einen zweiten Parameter für das Skript, das eine Zeichenfolge enthielt, die wörtlich verwendet werden sollte. Die Verwendung von "param1" "" a = foo 'nb = bar' nc = moo "" führte dazu, dass beide Strings verkettet wurden. Ich musste 'param1' "a = foo' n b = bar 'n c = moo" "verwenden, um es wie vorgesehen zum Laufen zu bringen. –
Yeah ... Das Aufrufen von PowerShell-Skripts mit komplexen Parametern von cmd ist schmerzhaft. Wenn zur Entwurfszeit bekannt ist, dass ein Skript für Aufrufe von cmd vorgesehen ist, sollte seine Eingabeschnittstelle so einfach wie möglich gestaltet sein. Berücksichtigen Sie auch diesen Rat, da der Ansatz mit "-Command" nicht alle Anwendungsfälle des 'Files'-Ansatzes abdeckt. –