powershell - 为什么 AllowNull() 什么都不做?
问题描述
我有以下命令调用
& ".\script1.ps1" -switch1 "$DBN" "$($Server[-1])" "$Creds" "$ConnectionID" "$ConnectionDataSource"
我想让 ConnectionID 和 Connection DataSource 可选
我怎样才能做到这一点?
此命令仅在我为 ConnectionID 和 Connection Data Source 输入内容时才有效。否则,如果我不为这两个参数输入任何内容,它们将不起作用!
这是此 script1.ps1 中的参数(我在 script2.ps1 中调用):
Param(
[Parameter(Mandatory=$true)]
[string]$DBN,
[Parameter(Mandatory=$true)]
[string]$Server,
[Parameter(Mandatory=$false)]
[string]$Creds,
[Parameter(Mandatory=$false, HelpMessage="Enter a UserID for the connection")]
[string]$ConnectionID,
[Parameter(Mandatory=$false, HelpMessage="Enter a Data Source for the connection. Must enter the ConnectionID first")]
[string]$ConnectionDataSource
)
这是其中的参数script2.ps1
(我script1.ps1
从中调用):
Param(
[Parameter(Mandatory=$true)]
[string]$DBN,
[Parameter(Mandatory=$false, HelpMessage="Enter a UserID for the connection")]
[string]$ConnectionID,
[Parameter(Mandatory=$false, HelpMessage="Enter a Data Source for the connection. Must enter the ConnectionID first")]
[string]$ConnectionDataSource
)
script1.ps1
在没有这两个输入的情况下运行就可以了。
我这样运行它:
PS> script1.ps1 DB1 Server1
所以我知道我必须在我调用 script1 的第二个脚本的调用运算符中做一些事情
我正在寻找这样的东西:
& ".\script1.ps1" -switch1 "$DBN" "$($Server[-1])" "$Creds" [optional]"$ConnectionID" [optional]"$ConnectionDataSource"
我尝试了[AllowNull()]
script1 和 2 中的属性
[Parameter(Mandatory=$false, HelpMessage="Enter a UserID for the connection")]
[AllowNull()]
[string]$ConnectionID,
[Parameter(Mandatory=$false, HelpMessage="Enter a Data Source for the connection. Must enter the ConnectionID first")]
[AllowNull()]
[string]$ConnectionDataSource
但它仍然会导致 script2 出错:
script1.ps1:无法将参数绑定到参数“ConnectionDataSource”,因为它是一个空字符串。
解决方案
推荐阅读
- django-models - 如何在模板中显示模型字段
- r - 出于保密原因,是否有 R 函数/包来转换时间序列数据?
- c# - 用于从列表中获取属性列表的 Lambda 表达式
当属性在 DerivedClass 中定义时 - python - JupyterLab 键盘快捷键不起作用
- c++ - 数组类型 'char [n]' 和 'uint8 [n]' 不可赋值
- javascript - 如何将其包含在函数中以避免全局范围?
- java - 在模块 java.base 和模块 jrt.fs 中打包 jdk.internal.jrtfs
- r - 如何找到温度偏离正常值 - R 4.0.0
- r - 正则表达式初始化给定名称
- html - 来自 fontawesome 的图标没有加载到实时开放服务器上?