验证默认值

时间:2018-12-11 23:54:25

标签: powershell parameters

我正在尝试验证变量00:00:00.1127145$var1的空值或空值。有人可以告诉我我在做什么错吗?

$var2

testing.ps1

输出:

PS> .\testing.ps1
Value of Variable 1 :
Value of Variable 2 :
PS> $defaultvar1=123
PS> $defaultvar2=678
PS> .\testing.ps1
Value of Variable 1 : 123
Value of Variable 2 : 678
PS> $defaultvar2=""
PS> .\testing.ps1
Value of Variable 1 : 123
Value of Variable 2 :

1 个答案:

答案 0 :(得分:2)

Lee_Daily指出:

参数默认值未经 验证-假设您作为函数作者将确保这些值有效。

一个简单的例子:

PS> & { param([ValidateNotNullOrEmpty()] $foo = '') "foo: [$foo]" }
foo: []

也就是说,''很高兴被接受为默认值,即使它与[ValidateNotNullOrEmpty()]相矛盾。

此外,通常不应使用功能外部变量值作为参数默认值,因为这会使功能的行为难以预测。

相反,使用:

  • 文字(例如$foo = 'bar'

  • 表达式(例如$foo = (Get-Date)

也就是说,Mike Shepard指出,引用变量 是一个选项, if

  • 您的功能是在模块内部
  • 中定义的
  • 和所引用的变量在同一模块中定义。