解释 PowerShell 高级函数。
在开始高级 PowerShell 函数之前,假设我们已经了解 PowerShell 函数。您可以查看下面关于 PowerShell 函数的解释。
https://www.tutorialspoint.com/explain-the-powershell-function
这里,我们将以计算不同类型运算的数学函数为例。我们已经有了一个包含简单函数的代码,如下所示。
function math_Operation{
param([int]$val1,[int]$val2)
Write-Host "乘法:$($val1*$val2)"
Write-Host "加法:$($val1+$val2)"
Write-Host "减法:$($val1-$val2)"
Write-Host "除法:$($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 (
// 要声明的参数及其数据类型
)
begin {
// 初始化变量,创建日志文件
}
process {
// 使此函数工作的程序代码
}
end {
// 清除值、日志文件等
}
}
在上述函数中,您可以看到 PowerShell 高级函数 主要由 3 个块组成(Begin、Process 和 End)。
在 Begin 块中,您需要初始化变量的值或声明日志文件等。此块在其他两个块之前首先执行,并且仅执行一次。
Process 块,实际代码在此执行,并使用在 Param 块中声明的参数以及在 Begin 块中初始化的值和日志文件路径。此块针对块中的每个项目运行。
End 块包含要从变量中释放/清除的值以及其他清理任务。此块也仅在流程块执行后执行一次。
除了上述功能外,还支持许多其他参数属性和参数, 这些将在后续文章中解释。只需浏览一下这些参数属性和参数即可。 参数属性和参数。
参数参数
必填
Parameter=0
ValueFromPipeline
ValueFromPipelineByPropertyName
ValueFromRemainingArguments
HelpMessage
参数属性
Param
Parameter
[AllowNull()]
[AllowEmptyString()]
[AllowEmptyCollection()]
[ValidateCount()]
[ValidateLength()]
[ValidatePattern()]
[ValidateRange()]
[ValidateScript()]
[ValidateSet()]
[ValidateNotNull()]
[ValidateNotNullOrEmpty()]
[DynamicParam]
[Switch]

