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