Erro personalizado do PowerShell a partir de parâmetros

Uma pergunta simples, é possível terValidateScript gerar uma mensagem de erro personalizada quando um teste falhar, como, por exemplo,Test-Path?

Em vez disso:

Pasta de teste: Não é possível validar o argumento no parâmetro 'Pasta'. O script de validação "Test-Path $ _ -Path Type Container" para o argumento com o valor "blabla" não retornou um resultado de True. Determine por que o script de validação falhou e tente a vírgula e novamente.

Seria bom que isso fosse relatado no lugar$Error variável:

A 'Pasta' não foi encontrada, talvez haja problemas de rede?

Código:

Function Test-Folder {
    Param (
        [parameter(Mandatory=$true)]
        [ValidateScript({Test-Path $_ -PathType Container})]
        [String]$Folder
    )
    Write-Host "The folder is: $Folder"
}

Solução alternativa 1:

Eu poderia remover oMandatory=$true e mude como abaixo. Mas isso não me dá o corretoGet-Help sintaxe e não faz oTest-Path validação porque verifica apenas se o parâmetro está presente.

Function Test-Folder {
    Param (
        [parameter()]
        [String]$Folder = $(throw "The $_ is not found, maybe there are network issues?")
    )
    Write-Host "The folder is: $Folder"
}

Solução 2:

Encontrei esta solução alternativa em umblogue, mas o problema é que ele gera 2 erros em vez de um.

Function Test-Folder {
    Param (
        [parameter(Mandatory=$true)]
        [ValidateScript({
            if (Test-Path $_ -PathType Container) {$true}
            else {Throw "The $_ is not found, maybe there are network issues?"}})]
        [String]$Folder
    )
    Write-Host "The folder is: $Folder"
}

Solução alternativa 3:

Eu também poderia tentar deixar mais claro adicionando uma seção de comentários. No entanto, esse ainda não é o resultado desejado, pois o erro precisa ser legível para os usuários finais.

Function Test-Folder {
    Param (
        [parameter(Mandatory=$true)]
        [ValidateScript({
        # The folder is not found, maybe there are network issues?
        Test-Path $_ -PathType Container})]
        [String]$Folder
    )
    Write-Host "The folder is: $Folder"
}

questionAnswers(3)

yourAnswerToTheQuestion