解釋 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]
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP