【问题标题】:How to omit powershell parameter from cmdlet if value not provided?如果未提供值,如何从 cmdlet 中省略 powershell 参数?
【发布时间】:2019-03-06 07:28:53
【问题描述】:

我正在尝试执行下面的 Powershell 命令以在 Exchange 服务器上创建一个新的地址列表,其中包含名称、容器等参数。

Container 是可选输入/参数,如果未提供其值,如何从 cmdlet 中省略它?

我尝试使用IF 条件,但似乎不起作用。这里有什么帮助吗?

New-AddressList -Name -Container \test MyAddressList5 -ConditionalStateOrProvince maha -IncludedRecipients MailboxUsers

【问题讨论】:

  • 如果我们不知道您如何获得输入,我们无法建议如何不包含它?您可能希望包含更多代码来显示上下文:)

标签: powershell exchange-server


【解决方案1】:

您可以通过散列表传递所需的参数及其对应的值。添加If/Else 条件以包含属性。像这样:

$Container  = '\test MyAddressList5'

$Parameters = @{}
$Parameters.Add('ConditionalStateOrProvince','maha')
$Parameters.Add('IncludedRecipients','MailboxUsers')
if($Container){$Parameters.Add('Container',$Container)}

New-AddressList @Parameters

另外,当您需要包含Switch 参数时,只需传递$True。像这样:

$Parameters.Add('SomeSwitchParameter',$True)

【讨论】:

  • 是的,哈希表。我已经使用了 Hashtable 并且达到了目的。谢谢。
【解决方案2】:

查看New-AddressList-Container 参数的文档:https://docs.microsoft.com/en-us/powershell/module/exchange/email-addresses-and-address-books/new-addresslist?view=exchange-ps#optional-parameters

具体来说:

如果不使用此参数,则在根目录(\)下创建地址列表。

...

默认值:无

$container = $null
New-AddressList -Container $container

# or...

$container = "\"
New-AddressList -Container $container

【讨论】:

    【解决方案3】:

    查看Get-Help *splatting 以了解实现此目的的方法。

    更多细节......“splat”是parameter = value 对的哈希表。一旦您在 splat 中获得了基本的始终存在的项目,您就可以像添加到任何哈希表一样通过 $Param_Splat.Add(ParameterName, 'Value') 添加其他项目。然后当你调用你的 cmdlet 时,你使用Verb-Noun @Param_Splat。注意@ 符号而不是通常的$。 [咧嘴一笑]

    保重,

    【讨论】:

      猜你喜欢
      • 2016-01-30
      • 2019-06-14
      • 1970-01-01
      • 1970-01-01
      • 2010-11-15
      • 1970-01-01
      • 2013-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多