可変数のパラメータを使用するスクリプトでPowerShellを実行する際に問題があります。コマンドラインからConvertFrom-StringDataの文字列パラメータをPowershellに渡すにはどうすればよいですか?
スクリプトファイルは次のようになります。同じスクリプトとパラメータを持つコマンドラインからPowerShellを呼び出す
[PS] C:\some\path>.\test.ps1 "a=foo `n b=bar `n c=moo"
Name Value
---- -----
c moo
a foo
b bar
がこれを示しています
PowerShellでスクリプトを直接実行param([string]$paramString)
$params = ConvertFrom-StringData $paramString
$params
は、期待される結果が得られ:
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
渡された文字列のようですいくつかの形式では、ConvertFrom-StringData
関数はそれをもう解析できません。
働いたおかげで、ローマ、。別のことのためのちょっとした補遺:文字通り使うべき文字列を含んだスクリプトの第2のパラメータがありました。 "" param1 "" "" a = foo 'n b = bar' n c = moo ""を使用すると、両方の文字列が連結されました。私は 'param1' "" a = foo 'n b = bar' n c = moo ""を使用して意図したとおりに動作させる必要がありました。 –
ええと... cmdからの複雑なパラメータを持つPowerShellスクリプトを呼び出すのは苦労します。設計時にスクリプトがcmdからの呼び出し用であることが分かっている場合、その入力インタフェースはできるだけ簡単に設計する必要があります。このアドバイスも考慮してください。なぜなら、 '-Command'のアプローチは' -File'アプローチのすべてのユースケースをカバーしていないからです。 –