在param块中使用ValidateSet命令来定义参数

时间:2016-12-10 16:35:28

标签: powershell

我需要编写一个函数,用bool自动定义[ValidateScript()]参数。

function Deploy-App {
    Param(
        [Parameter(Position=0)]
        [ValidateScript({if (Test-Path .\DeployFiles.txt) { $UseFilepathFile = $true }})]
        [Alias("u")]
        [bool]$UseFilepathFile
    )

    Get-Location
    Write-Host $UseFilepathFile
}

为什么即使文件存在于当前位置,它总是返回$falseValidateScript()的使用是否错误,我不能像这样使用它?我怎么解决我的问题?

1 个答案:

答案 0 :(得分:2)

您使用的是ValidateScript错误的方式,ValidateScript用于验证输入,而不是设置它。此外,您必须从ValidateScript返回$ true,否则脚本无法正常工作。

您需要检查脚本本身的内部是否存在该文件。

if (Test-Path .\DeployFiles.txt) { $UseFilepathFile = $true }