解释 PowerShell 高级函数。

powershellmicrosoft technologiessoftware & coding更新于 2026/1/7 8:52:17

在开始高级 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]


相关文章