解释 PowerShell 高级函数。
在开始学习 PowerShell 高级函数之前,假设我们已经了解了 PowerShell 函数。您可以在下面查看 PowerShell 函数的解释。
https://tutorialspoint.com/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