解釋 PowerShell 高階函式。


在開始學習 PowerShell 高階函式之前,假設我們已經瞭解了 PowerShell 函式。您可以在下面檢視 PowerShell 函式的解釋。

https://tutorialspoint.tw/explain-the-powershell-function

這裡,我們將以計算不同型別運算的數學函式為例。我們已經有了一個簡單的函式程式碼,如下所示。

function math_Operation{
   param([int]$val1,[int]$val2)
   Write-Host "Multiply : $($val1*$val2)"
   Write-Host "Addition : $($val1+$val2)"
   Write-Host "Subtraction : $($val1-$val2)"
   Write-Host "Divide : $($val1+$val2)"
}

以上示例是一個簡單的函式。當您執行上述程式碼並在終端執行該函式時,您會注意到您只會看到 **$val1** 和 **$val2** 引數,而 PowerShell 高階函式包含其他 **通用引數**,例如 **ErrorAction、WarningAction、Verbose、Passthru 等**。

請檢視下面當函式用作 **簡單函式** 時的語法。沒有新增任何通用引數。

PS C:\WINDOWS\system32> Get-Help math_Operation
NAME
   math_Operation
SYNTAX
   math_Operation [[-val1] <int>] [[-val2] <int>]
ALIASES
   None
REMARKS
   None

要將簡單函式轉換為高階函式,我們只需要在函式中使用 [cmdletbinding]。

function math_Operation{
   [cmdletbinding()]
   param([int]$val1,[int]$val2)
   Write-Host "Multiply : $($val1*$val2)"
   Write-Host "Addition : $($val1+$val2)"
   Write-Host "Subtraction : $($val1-$val2)"
   Write-Host "Divide : $($val1+$val2)"
}

現在執行上述程式碼並檢查引數,您可以看到其他引數被稱為通用引數。檢查程式碼執行後此函式的語法。

PS C:\WINDOWS\system32> Get-Help math_Operation
NAME
   math_Operation
SYNTAX
   math_Operation [[-val1] <int>] [[-val2] <int>] [<CommonParameters>]
ALIASES
   None
REMARKS
   None

但這並沒有結束。PowerShell 高階函式還有更多內容。到目前為止,我們已經將簡單函式轉換為高階函式。讓我們檢查一下高階函式的結構。

高階函式結構

function Verb-Noun {
   [CmdletBinding()]
   param (
      // Parameters to declare with their datatypes
   )
   begin {
      // Initialization of variables, create a log file
   }
   process {
      // Program code to make this function work
   }
   end {
      // Clearing values, log files, etc.
   }
}

在上面的函式中,您可以看到 **PowerShell 高階函式** 主要由 3 個塊組成(**Begin、Process 和 End**)。

  • 在 **Begin** 塊中,您需要初始化變數的值或宣告日誌檔案等。此塊在其他兩個塊之前首先執行,並且只執行一次。

  • **Process** 塊是實際程式碼執行的地方,它使用在 **Param** 塊中宣告的引數以及在 Begin 塊中初始化的值和日誌檔案路徑。此塊對塊中的每個專案執行一次。

  • **End** 塊包含要從變數中釋放/清除的值和其他清理任務。此塊也只執行一次,在 Process 塊執行之後執行。

除了以上功能外,還支援許多其他引數屬性和引數,這些將在後續文章中進行解釋。只需瀏覽一下這些引數屬性和引數。

引數引數

  • 強制

  • Parameter=0

  • ValueFromPipeline

  • ValueFromPipelineByPropertyName

  • ValueFromRemainingArguments

  • HelpMessage

引數屬性

  • Param

  • Parameter

  • [AllowNull()]

  • [AllowEmptyString()]

  • [AllowEmptyCollection()]

  • [ValidateCount()]

  • [ValidateLength()]

  • [ValidatePattern()]

  • [ValidateRange()]

  • [ValidateScript()]

  • [ValidateSet()]

  • [ValidateNotNull()]

  • [ValidateNotNullOrEmpty()]

  • [DynamicParam]

  • [Switch]

更新於:2020年5月4日

604 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告