显示默认值的 powershell 强制参数

标签 powershell parameters

我正在寻找一种方法让 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 强制参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39878202/

相关文章:

模块中的 PowerShell .ps1 文件 cmdlet

php - PHP与C++之间的通信

java - 为什么修改了 ArrayList 参数,但没有修改 String 参数?

c++ - 如何避免删除作为 C++ 中的参数给出的对象

javascript - 重新排列数组的更直观方式

c# - 将字符串作为多个参数传递?

regex - PowerShell中的正则表达式仅匹配该行的第一个匹配项

powershell - 您如何正确记录 Powershell 函数?

powershell - 任务计划程序执行脚本但不输出到日志文件

powershell - 如何创建包含 "/"的注册表项