如果未提供值,如何从 cmdlet 中省略电源外壳参数?



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

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

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

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

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

请查看New-AddressList-Container参数的文档: https://learn.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

看看Get-Help *splatting,看看一种方法。

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

保重,

最新更新