我正在寻找一种让PowerShell脚本要求输入一个参数的方法,该参数必须是必需的,但必须显示为默认值,例如:

    .\psscript
    Supply values for the following parameters:
    parameter1[default value]:
    parameter2[1234]:

我想要求输入,但提供一些默认值。

如果我使用强制选项,它将很好地询问值,但不显示默认值或处理给定值。如果我不强制要求这样做,那么PowerShell根本不会要求提供该值。

这是我尝试的一些脚本示例:
    [CmdletBinding()]
    Param(
        [parameter(Mandatory=$true)] $SqlServiceAccount = $env:computername + "_sa",
        [parameter(Mandatory=$true)] $SqlServiceAccountPwd
    )

如果我只是按第一个参数的Enter键,该脚本会询问参数,但不会显示或处理默认值。
    [CmdletBinding()]
    Param(
        [parameter(Mandatory=$false)] $SqlServiceAccount = $env:computername + "_sa",
        [parameter(Mandatory=$true)] $SqlServiceAccountPwd
    )

该脚本不要求第一个参数,而是处理默认值。

最佳答案

这是一个简短的示例,可能会有所帮助:

    [CmdletBinding()]
    Param(
        $SqlServiceAccount = (Read-Host -prompt "SqlServiceAccount ($($env:computername + "_sa"))"),
        $SqlServiceAccountPwd = (Read-Host -prompt "SqlServiceAccountPwd")
    )
    if (!$SqlServiceAccount) { $SqlServiceAccount = $env:Computername + "_sa" }
    ...

关于powershell - 显示默认值的powershell强制参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39878202/

10-15 20:02