我有以下脚本
Untitled2.ps1
:
$scriptName = '.\Untitled1.ps1'
$args = @{
someVal = "Test"
}
if ($true) {
$args.testSwitch = $true
}
powershell -ExecutionPolicy Unrestricted -File $scriptName @args
它将调用如下所示的脚本:
Untitled1.ps1
:
[CmdletBinding()]
Param(
[Parameter(Mandatory=$false)]
[switch]$testSwitch
[Parameter(Mandatory=$false)]
[string]$someVal
)
$ErrorActionPreference = "Stop"
$WarningPreference = "Stop"
Set-PSDebug -Strict -Trace 0
$PSBoundParameters | Out-String
但是,我得到如下所示的错误消息
C:\PowershellScripts\Untitled1.ps1 : Cannot process argument transformation on parameter 'testSwitch'. 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. + CategoryInfo : InvalidData: (:) [Untitled1.ps1], ParentContainsErrorRecordException + FullyQualifiedErrorId : ParameterArgumentTransformationError,Untitled1.ps1
我不确定到底是什么问题。
根据我的阅读,使用散列表进行散列时,可以为$true
参数分配switch
。