使用强制参数

时间:2014-09-16 22:01:36

标签: powershell

我正在开发此用户脚本,并希望得到一些帮助。我只是想知道如何设置强制参数或类似于下面的变量,以便我可以让用户输入一些信息,而不是在变量上有一个空值。任何帮助或建议将不胜感激提前感谢。

$username = Read-host "Enter username"
$fname = Read-Host "ENTER First Name"
$lname = Read-Host "ENTER Last Name"
$Des   = Read-Host "ENTER Description (Work Area)"
$Title = Read-Host "ENTER Job Title"`enter code here`

2 个答案:

答案 0 :(得分:0)

您可以使用参数属性:

param(
    [Parameter(Mandatory=$true, HelpMessage="Enter username")]
    [ValidateNotNull()]
    $username,

    ...
)

请注意,控制台不会使用HelpMessage(默认情况下)作为强制参数的提示,但ISE会这样做。还有[ValidateNotNullOrEmpty()]属性也会禁用空字符串。

BTW使用参数属性的好处是,如果使用参数调用函数/脚本,则没有提示。如果未指定参数,则PowerShell将为您提示参数。一般来说,我喜欢PowerShell尽可能多地完成工作。 : - )

答案 1 :(得分:0)

我要做的是创建一个检查$ null或仅空白字符串的函数,并重新提示用户输入信息。类似的东西:

function get-NonNullString{
Param([string]$Prompt=(throw "You must provide text as a prompt"))
    $Output = Read-Host $prompt
    While([string]::IsNullOrWhiteSpace($Output)){
        write-host "`nYou must enter a response!`n" -ForegroundColor Red
        $Output = Read-Host $prompt
    }
}

然后你会这样称呼:

$username = Get-NonNullString "Enter username"
$fname = Get-NonNullString "ENTER First Name"
$lname = Get-NonNullString "ENTER Last Name"
$Des   = Get-NonNullString "ENTER Description (Work Area)"
$Title = Get-NonNullString "ENTER Job Title"