2016-11-25 58 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

當使用參數 - Filesource)時,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

Aslo,你有沒有注意到,你打電話給powershell.exe兩次?

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

是的我已經使用Posershell.exe兩次,這對另一個腳本工作正常。 – Roshan

+0

我試過-Command而不是-File,雖然得到同樣的錯誤。任何其他幫助 – Roshan

+0

如何省略'$ true'值? –