解释 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]

更新于:2020年5月4日

604 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.