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

喜你入骨 提交于 2020-06-23 13:18:10

问题


I'm trying to execute a below Powershell command to create a new address list on exchange server with parameters like Name, Container, etc.

Container is an optional input/parameter, how do I omit it from cmdlet if its value is not provided?

I tried with IF conditionals but but does not seems working. Any help here?

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

回答1:


You can pass needed parameters with their corresponding values via hashtable. Add If/Else conditions to include properties. Like so:

$Container  = '\test MyAddressList5'

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

New-AddressList @Parameters

Also, when you need to include Switch parameter just pass $True. Like so:

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



回答2:


Have a look at the documentation for the -Container parameter in New-AddressList: https://docs.microsoft.com/en-us/powershell/module/exchange/email-addresses-and-address-books/new-addresslist?view=exchange-ps#optional-parameters

Specifically:

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



回答3:


take a look at Get-Help *splatting to see a way to do this.

a bit more detail ... a "splat" is a hashtable of parameter = value pairs. once you have the basic always-there items in the splat, you can add others just as you would to any hashtable by $Param_Splat.Add(ParameterName, 'Value'). then when you call your cmdlet, you use Verb-Noun @Param_Splat. note the @ symbol instead of the usual $. [grin]

take care,
lee



来源:https://stackoverflow.com/questions/52586848/how-to-omit-powershell-parameter-from-cmdlet-if-value-not-provided

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!