如何使用 PowerShell 函数参数验证路径?


要在 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

在上例中,如果路径有效,脚本将继续执行,而如果路径无效,它将引发异常且脚本将终止。

更新于: 2021 年 5 月 17 日

2K+ 浏览量

开启 事业

完成课程即可获得认证

开始
广告