【发布时间】:2018-08-14 06:32:26
【问题描述】:
我正在尝试从 .cmd 文件运行 PowerShell 脚本。以下是我定义的脚本参数:
Param(
[string]$Customer,
[string]$EntryPointINT,
[string]$EntryPointPRD,
[string]$EntryPointVDI,
[string]$LicenseServer,
[bool]$onlyVDI,
[bool]$hasVDI,
[int]$insertHelper
)
如您所见,onlyVDI 和 hasVDI 来自 bool 类型。到目前为止,一切都很好。当我从 PowerShell 控制台启动脚本时,我可以执行以下操作(在此处更改客户名称和服务器名称):
.\kpi.ps1 -Customer "CustName" -EntryPointVDI "servername" -onlyVDI 0 -hasVDI 1 -insertHelper 1
这完全符合预期。所以现在我想从 .cmd 文件启动相同的脚本。如下所示:
powershell.exe -File %~dp0%kpi.ps1 -Customer "Custname" -EntryPointVDI "servername" -LicenseServer "sc005019" -onlyVDI 0 -hasVDI 0 -insertHelper 1
这会导致以下错误:
C:\***\***\***\kpi.ps1 : 无法处理参数的参数转换 '只有 VDI'。无法将值“System.String”转换为类型“System.Boolean”。 布尔参数只接受布尔值和数字,例如 $True, $假,1 或 0。 + CategoryInfo : InvalidData: (:) [kpi.ps1], ParentContainsErrorRecordException + FullyQualifiedErrorId : ParameterArgumentTransformationError,cop_kpi.ps1有人能解释一下为什么onlyVDI 上的0 是一个字符串吗?我已经尝试了一切,试图用$False 替换它......无法让它工作。现在我已经将它定义为 PowerShell 脚本中的字符串,并将其作为 cmd 文件中的字符串传递,它可以作为一种解决方法,但它并不干净。我想让它使用 [bool] 数据类型运行。
【问题讨论】:
标签: powershell batch-file cmd parameters boolean