У меня есть следующий скрипт
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
при разделении с использованием хеш-таблицы.