要验证 PowerShell 函数参数中的文件或文件夹路径,我们需要使用ValidateScript命令。通常,我们编写如下脚本来验证路径。
function Validate-Path{ param( [parameter(Mandatory)] [String]$Path ) if(Test-Path $Path) {Write-Output "Path is valid"} else{Write-Output "Path is invalid"} }输出结果
PS C:\> Validate-Path -Path C:\Temp Path is valid
我们可以使用validatescript参数在函数参数中添加类似的功能,因此脚本最初会在参数检查时抛出错误。见下文,
function Validate-Path{ param( [parameter(Mandatory)] [ValidateScript({ if(Test-Path $_){$true} else{throw "Path $_ is not valid"} })] [String]$Path ) Write-Output "Executing Script further" }输出结果
PS C:\> Validate-Path -Path C:\Temp Executing Script further
PS C:\> Validate-Path -Path C:\Temp223 Validate-Path : Cannot validate argument on parameter 'Path'. Path C:\Temp223 is not valid At line:1 char:21 + Validate-Path -Path C:\Temp223 + ~~~~~~~~~~ + CategoryInfo : InvalidData: (:) [Validate-Path], ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,Validate-Path
在上面的示例中,如果路径有效,脚本将继续执行,但如果路径无效,则会引发异常并终止脚本。