我有一个PowerShell脚本,它有几个参数,包括一个switch参数。
PowerShell中执行的以下命令按预期工作:
\\localhost\Test\Code\DataPullResults.ps1 -TestName 'Test survey' -QUser 'sdasch@gmail.com' -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 'sdasch@gmail.com' -SqlServerInstanceName localhost -SqlDatabaseName MyDatabase -Load:$True -ErrorAction Continue;
此处Load
是切换参数。
答案 0 :(得分:0)
当使用 - File
参数(source)时,powershell.exe无法完全评估脚本参数。因此,您应该使用-command
代替:
powershell.exe -Command \\localhost\Test\Code\DataPullResults.ps1 -TestName 'Test survey' -QUser 'sdasch@gmail.com' -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