我正在编写一些基本的PowerShell库,我需要检查特定参数是否在一组值中。
在这个例子中,我用一个可选参数定义了一个函数ALV_time。如果已定义,它可能只有2个值,否则我会发出警告。它有效,但这是仅允许某些参数值的正确方法还是有标准方法?
$warningColor = @{"ForegroundColor" = "Red"}
function AVL_Time {
[CmdletBinding()]
param (
$format
)
process {
# with format parameter
if ($format) {
# list format possible parameters
$format_parameters = @("short: only date", "long: date and time")
if ($format -like "short") {
$now = Get-Date -Format "yyyy-MM-dd"
}
# long date
elseif ($format -like "long") {
$now = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
}
# if wrong format parameter
else {
Write-Host @warningColor "Please use only those parameters:"
$format_parameters | foreach {
Write-Host @warningColor "$_"
}
}
}
# without format parameter
else {
$now = Get-Date -Format "yyyy-MM-dd"
}
# return time
return $now
}
}
答案 0 :(得分:3)
这将为你做检查:
Param(
[ValidateSet("short","long")]
[String]
$format )
带有更多验证的示例脚本:
Function Foo
{
Param(
[ValidateSet("Tom","Dick","Jane")]
[String]
$Name
,
[ValidateRange(21,65)]
[Int]
$Age
,
[ValidateScript({Test-Path $_ -PathType 'Container'})]
[string]
$Path
)
Process
{
"Foo $name $Age $path"
}
}