2016-11-25 12 views
1

私は、スイッチパラメータを含むいくつかのパラメータを持つPowerShellスクリプトを持っています。コマンドシェルプロンプトからスイッチパラメータを渡すことができません

のPowerShell内で実行される以下のコマンドは期待通りに動作します:

\\localhost\Test\Code\DataPullResults.ps1 -TestName 'Test survey' -QUser '[email protected]' -SqlServerInstanceName localhost -SqlDatabaseName MyDatabase -Load:$True -ErrorAction Continue; 

しかし、私は、コマンドプロンプトから同じコマンドを実行したとき、私はエラーを取得する:

以下
\\localhost\Test\Code\DataPullResults.ps1 : Cannot process 
argument transformation on parameter 'FullLoad'. Cannot convert value 
"System.String" to type "System.Management.Automation.SwitchParameter". 
Boolean parameters accept only Boolean values and numbers, such as $True, 
$False, 1 or 0. 

はコマンドです私はコマンドプロンプトから実行していました。

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe powershell.exe -ExecutionPolicy ByPass -File \\localhost\Test\Code\DataPullResults.ps1 -TestName 'Test survey' -QUser '[email protected]' -SqlServerInstanceName localhost -SqlDatabaseName MyDatabase -Load:$True -ErrorAction Continue; 

ここでLoadはスイッチパラメータです。

答えて

0

-Fileパラメータ(source)を使用すると、powershell.exeはスクリプト引数を完全に評価しません。だから、代わりに-commandを使用する必要があります。

powershell.exe -Command \\localhost\Test\Code\DataPullResults.ps1 -TestName 'Test survey' -QUser '[email protected]' -SqlServerInstanceName localhost -SqlDatabaseName MyDatabase -Load:$True -ErrorAction Continue; 

しかし、その横には、あなたはスイッチ値にブール値を渡す必要はありませんので注意してください。つまり、-Loadを省略すると、$load$falseに設定されます。 -Load$trueなし)を渡すと、$trueに設定されます。

また、powershell.exeを2回呼び出していることにお気づきましたか?

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe powershell.exe 
+0

はい私はPosershell.exeを2回使用していますが、これは別のスクリプトでうまくいきます。 – Roshan

+0

同じエラーが発生しましたが、-Fileの代わりに-Commandを試しました。その他のヘルプ – Roshan

+0

'$ true'値を省略するとどうですか? –

関連する問題