如果未提供值,如何从 cmdlet 中省略 powershell 参数?

How to omit powershell parameter from cmdlet if value not provided?

我正在尝试执行下面的 Powershell 命令,以使用名称、容器等参数在交换服务器上创建新的地址列表。

Container 是可选的 input/parameter,如果未提供其值,我如何从 cmdlet 中省略它?

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

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

查看 Get-Help *splatting 了解执行此操作的方法。

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

保重,

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

具体来说:

If you don't use this parameter,the address list is created under the root (\).

...

Default value: None

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

# or...

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

您可以通过 hashtable 传递需要的参数及其相应的值。添加 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)