📜  PowerShell函数

📅  最后修改于: 2021-01-08 02:51:31             🧑  作者: Mango

PowerShell功能

当我们需要在多个脚本中使用相同的代码时,可以使用PowerShell函数

函数是PowerShell语句的列表,其名称由用户分配。当执行一个函数,我们键入一个函数的名称。

像cmdlet一样,函数也可以具有参数。可以从管道或命令行中读取函数参数。

PowerShell中,函数返回可以分配给变量或传递给cmdlet或其他函数的值。通过使用return关键字,我们可以指定返回值。

句法

以下块描述了函数的语法:

function [] [([type]$parameter1[,[type]$parameter2])]
{
  param([type]$parameter1 [,[type]$parameter2])
  dynamicparam {}
  begin {}
  process {}
  end {}
}

上面的语法包括以下术语:

  • 函数关键字
  • 你给的名字
  • 范围(可选)
  • 任意数量的命名参数
  • 花括号{}中包含一个或多个PowerShell命令。

函数范围

  • 在PowerShell中,函数在创建它的作用域中存在。
  • 如果函数在脚本中,则该功能仅可用于该脚本中的语句。
  • 在全局范围内指定函数,我们可以在其他函数,脚本和命令行中使用它。

函数简单

以下块描述了如何在PowerShell中创建最简单的函数:

function 
{
    statement-1
    statement-2
    statement-N
}

要将多个语句添加到函数,我们必须使用分号来分隔语句或在单独的行上键入每个语句。

为了使用函数,键入如下面的块中给出的函数的名称:

Function-name

例:

PS C:\> function write-command
>> {
>> echo "Windows Operating System"
>> echo "Linux operating System"
>> }

在PowerShell控制台中键入以下命令以获取以上示例的输出:

PS C:\> write-command

输出:

Windows Operating System
Linux operating System

进阶函数

高级功能是可以执行类似于使用cmdlet执行的操作的那些功能。当用户要编写函数而不必编写已编译的cmdlet时,可以使用这些函数。

使用编译的cmdlet和高级函数之间的主要区别在于,编译的cmdlet是.NET Framework的类,必须以.NET Framework语言编写。并且,高级功能是使用PowerShell脚本语言编写的。

以下示例描述了如何在PowerShell中使用高级函数:

PS C:\> function Send-Message
>> {
>>     [CmdletBinding()]
>>     Param (
>>         [ Parameter (Mandatory = $true)]
>>         [string] $Name
>>     )
>>
>>     Process
>>     {
>>         Write-Host ("Hi" + $Name + "!")
>>     }
>> }

在PowerShell控制台中键入以下命令以获取以上示例的输出:

PS C:\> Send-Message

输出:

cmdlet Send-Greeting at command pipeline position 1
Supply values for the following parameters:
Name: Aman
Hi Aman!

功能实例

示例1:以下示例是一个简单函数,它返回当前日期

PS C:\> function Get-DateTime()
>> {
>>       return Get-Date
>> }

在PowerShell控制台中键入以下命令以获取以上示例的输出:

PS C:\> Get-DateTime

输出:

15 November 2019 14:41:17

例2:以下示例是一个函数,该函数接受一个参数并在该参数上返回一个值。

PS C:\> function Get-Square([int]$x)
>> {
>>   $res = $x * $x
>>   return $res
>> }

键入以下命令以从用户处获取上述示例的输入:

PS C:\> $x = Read-Host 'Enter a value'

输出:

Enter a value: 10

键入以下命令,以将函数的返回值存储在显示函数输出的函数:

PS C:\> $sqres = Get-Square $x

以下命令显示结果:

PS C:\> Write-Output "$x * $x = $sqres"

输出:

10 * 10 = 100