2016-11-10 4 views
0

バッチファイルからPowershellに変数を渡してデータベースに投稿しようとしていますが、変数がスペースを含む文字列の場合を除き、Powershellは複数の変数に分割しています。Powershell変数を複数に分割する

param($customerCode, $orderNumber, [string]$CompanyName) 
Write-Output $CompanyName 

$CompanyNameは、PowerShellのが出力されますTestTest Companyに等しくなければならないときは:ここ

PowerShell -NoProfile -ExecutionPolicy Bypass -file C:\TEMP\api.ps1 %CustomerCode% %OrderNumber% %CompanyName% 

そして、私のPowerShellのコードは次のとおりです。

は、ここに私のバッチファイルのコードです。

私が間違っていることは何ですか?安全に次のように"..."で囲み、コマンドライン引数として(コマンドラインまたはバッチファイルから)cmd.exeから環境変数の参照を渡すために

+0

引用符を試しましたか? – Squashman

+0

このようにXMLのノードから変数を設定している場合は、どうすればよいですか? "for/f" tokens = 2delims = <> "%% i in( 'type * .xml^| find" CompanyName "')は" CompanyName = %% i "を設定します –

+0

これは関係ない。実行可能ファイルに引数を渡すときは、引用符を使用します。私が一生使ったことのあるコンソールプログラムは、スペースを保護するために常に引用符を使用します。 – Squashman

答えて

0

(パラメータが-NoProfile -ExecutionPolicy Bypass簡潔にするため省略):

powershell -file "C:\TEMP\api.ps1" "%CustomerCode%" "%OrderNumber%" "%CompanyName%" 

"を区切り記号として使用しない場合、PowerShellは複数の空白で区切られた複数のパラメータから1つのパラメータを複数の空白で区切られたパラメータと区別することができず、値Test Companyはの引数あなたの場合)とCompany(あなたのスクリプトではバインドされていません)。

関連する問題