我有以下PowerShell代码可验证用户输入是否为路径,如果用户未输入任何内容,则尝试为它们分配默认值。但是,当我运行此命令时,$filePath变量没有被分配任何值。

无论如何,在进行验证时,我可以更改此设置以为其分配默认值吗?

下面的代码:

function validatePath {
  Param
  (
      [ValidateScript({
        If ($_ -eq "" -or $_ -eq [String]::Empty) {
            $_ = "C:\Install"
            $True
        }
        ElseIf ($_ -match "^([a-z]:\\(?:[-\\w\\.\\d])*)") {
            $True
        }
        Else {
            Write-Host "Please enter a valid path,$_ is not a valid path."
            Write-debug $_.Exception
        }
      })]
      [string]$filePath = "C:\Install"
  )
  Process
  {
      Write-Host "The path is "$filePath
  }
}

validatePath -filePath $args[0]

最佳答案

我认为您可以删除验证脚本,而是在Begin块中执行此操作:

Begin{
    If ($filepath -eq "") {
        $filepath = "C:\Install"
    }
    ElseIf ($filepath -notmatch "^([a-z]:\\(?:[-\\w\\.\\d])*)") {
        Write-Error "Please enter a valid path,$filepath is not a valid path."
    }
}
Process{

关于validation - 通过ValidateScript属性将默认参数值与验证结合在一起,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42518130/

10-13 00:12