簡體   English   中英

Powershell:如何使用Splatting在函數調用中添加空參數

[英]Powershell: How to add null parameters in function call with Splatting

我有一個使用Splatting實現的函數調用。

$funtioncall= @{                                   
      Param1=$Param1;
      Param2=$Param2;
      Param3=$Param3;
      Param4=$Param4;
      Param5=$Param5;
}
function @functioncall

在某些情況下,僅當它們不為null時,我希望向函數調用中添加另外兩個可選參數。

所以我有$ OptionalParam1和$ OptionalParam2

我目前有以下代碼來啟用splatting,因為它將不允許在哈希表中包含空值!

if(($OptionalParam1)-and($OptionalParam2))
{
   $funtioncall= @{                                   
          Param1=$Param1;
          Param2=$Param2;
          Param3=$Param3;
          Param4=$Param4;
          Param5=$Param5;
          OptionalParam1=$OptionalParam1;
          OptionalParam2=$OptionalParam2;
                   }
}
else
{
   $funtioncall= @{                                   
          Param1=$Param1;
          Param2=$Param2;
          Param3=$Param3;
          Param4=$Param4;
          Param5=$Param5;
                  }
}
function @functioncall

有什么我可以通過Splatting進行的更簡單的方法嗎?

這無需飛濺,將更易於實現,並且函數調用如下所示((因為我可以在函數中定義參數以允許null)

function -Param1 $Param1 -Param2 $Param2 -Param3 $Param3 -Param4 $Param4 -Param5 $Param5 -OptionalParam1 $OptionalParam1 -OptionalParam2 $OptionalParam2

您不必更改任何內容。 $null仍然是一個值,因此根本沒有理由$funtioncall不同地處理變量$funtioncall

$param1 = "Awesome"
$OptionalParam1 = $null

$funtioncall= @{                                   
      Param1=$Param1;
      OptionalParam1=$OptionalParam1;
}

因此,現在哈希表包含OptionalParam1的null

Name                           Value                                                                                                                
----                           -----                                                                                                                
OptionalParam1                                                                                                                                      
Param1                         Awesome

因此,只要您的函數可以處理參數為null的可能性,就不會有問題。 我做了一個顯示這些值的小函數。

This @funtioncall

Param1 is 'Awesome'
OptionalParam1 is ''

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM