使用Splatting从另一个PS脚本调用一个PS脚本(带有switch参数)

时间:2018-10-04 20:12:56

标签: powershell

我有以下脚本

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

0 个答案:

没有答案