Is it possible to force PowerShell script to throw if a required parameter is omitted?

前端 未结 2 1800
醉话见心
醉话见心 2020-12-25 10:49

I would like the second function call in this script to throw an error:

function Deploy
{

param(

    [Parameter(Mandatory=$true)]
    [ValidateNotNullOrEmp         


        
相关标签:
2条回答
  • 2020-12-25 10:52

    @Emperor XLII has a nice comment in the question that I think can be a better answer for some use cases:

    if you run powershell.exe with the -NonInteractive flag, missing mandatory parameters will cause an error and result in a non-zero exit code for the process.

    The reasons to use this can be:

    1. You have a lot of such Mandatory=$true parameters and the cost is high to convert all of them.
    2. The script will be used both interactively and non-interactively, and when run interactively you do want to be prompted for missing parameters.
    0 讨论(0)
  • 2020-12-25 10:56

    Once the parameter is marked as mandatory PowerShell will prompt for value. That said, if you remove the mandatory attribute then you can set a default value with a throw statement:

    function Deploy
    {
        param(
            [Parameter()]
            [ValidateNotNullOrEmpty()]
            [string]$BuildName=$(throw "BuildName is mandatory, please provide a value.")
        )
    
        Write-Host "Build name is: $BuildName"
    }
    
    0 讨论(0)
提交回复
热议问题