about_Function_Provider

提供程序名称

函数

驱动器

Function:

功能

ShouldProcess

简短说明

提供对 PowerShell 中所定义函数的访问。

详细说明

通过 PowerShell Function 提供程序,你可以在 PowerShell 中获取、添加、更改、清除以及删除函数和筛选器。

函数是用于执行某项操作的命名的代码块。 在键入函数名称后,将运行该函数中的代码。 筛选器是用于建立操作条件的命名的代码块。 你可以键入筛选器的名称来代替条件,例如在 Where-Object 命令中。

Function 驱动器是一个仅包含函数和筛选器对象的平面命名空间。 函数和筛选器都没有子项。

Function 提供程序支持本文中介绍的以下 cmdlet。

此提供程序公开的类型

每个函数都是 System.Management.Automation.FunctionInfo 类的实例。 每个筛选器都是 System.Management.Automation.FilterInfo 类的实例。

Function 提供程序在 Function: 驱动器中公开其数据存储。 若要使用函数,你可以将你的位置更改为 Function: 驱动器 (Set-Location Function:)。Function: 或者,可以从其他 PowerShell 驱动器中使用函数。 若要从其他位置引用函数,请在路径中使用驱动器名称 (Function:)。

Set-Location Function:

若要返回到文件系统驱动器,请键入驱动器名称。 例如,键入:

Set-Location C:

还可以从任何其他 PowerShell 驱动器使用 Function 提供程序。 若要从其他位置引用函数,请使用路径中的驱动器名称 Function:

注意

PowerShell 使用别名来让你熟悉如何使用提供程序路径。 dirls 等命令现在是 Get-ChildItem 的别名,cdSet-Location 的别名。 而 pwdGet-Location 的别名。

获取函数

此命令将获取当前会话中所有函数的列表。 你可以从任何 PowerShell 驱动器使用此命令。

Get-ChildItem -Path Function:

Function 提供程序没有容器,因此上述命令在与 Get-ChildItem 一起使用时具有相同的效果。

Get-ChildItem -Path Function:

可通过访问 Definition 属性来检索函数的定义,如下所示。

(Get-Item -Path function:more).Definition

还可使用以美元符号 ($) 为前缀的提供程序路径检索函数的定义。

$function:more

若要检索名称中包含短划线 (-) 的函数的定义,请将美元符号后面的值括在大括号中。

${function:Clear-Host}

获取所选函数

此命令将从 Function: 驱动器中获取 man 函数。 它使用 Get-Item cmdlet 来获取函数。 管道运算符 (|) 将结果发送到 Format-Table-Wrap 参数将一行中容纳不下的文本转至下一行。 -Autosize 参数将调整表列的大小以容纳文本。

Get-Item -Path man | Format-Table -Wrap -Autosize

使用 Function 提供程序路径

这两个命令都可以获取名为 c: 的函数。 第一个命令可在任何驱动器中使用。 第二个命令在 Function: 驱动器中使用。 由于名称以冒号结束(这是驱动器的语法),因此必须使用驱动器名称来限定路径。 在 Function: 驱动器中,可以使用两种格式之一。 在第二个命令中,点 (.) 表示当前位置。

PS C:\> Get-Item -Path Function:c:
PS Function:\> Get-Item -Path .\c:

创建函数

此命令使用 New-Item cmdlet 创建一个名为 Win32: 的函数。 大括号中的表达式是以函数名称表示的脚本块。

New-Item -Path Function:Win32: -Value {Set-Location C:\Windows\System32}

也可以通过在 PowerShell 命令行中键入某个函数来创建该函数。 例如,键入 Function:Win32: {Set-Location C:\Windows\System32}。 如果你在 Function: 驱动器中,则可以省略驱动器名称。

删除函数

此命令从当前会话中删除 more 函数。

Remove-Item Function:more

更改函数

此命令使用 Set-Item cmdlet 更改 prompt 函数,以便让该函数在路径之前显示时间。

Set-Item -Path Function:prompt -Value {
  'PS '+ (Get-Date -Format t) + " " + (Get-Location) + '> '
  }

重命名函数

此命令使用 Rename-Item cmdlet 将 help 函数的名称更改为 gh

Rename-Item -Path Function:help -NewName gh

复制函数

此命令将 prompt 函数复制到 oldPrompt,从而高效地为与 prompt 函数关联的脚本块创建一个新名称。 如果计划更改原始 prompt 函数,你可以使用此命令来保存该函数。 新函数的 Options 属性值为 None 若要更改 Options 属性值,请使用 Set-Item

Copy-Item -Path Function:prompt -Destination Function:oldPrompt

动态参数

动态参数是由 PowerShell 提供程序添加的 cmdlet 参数,且只可用于在启用了提供程序的驱动器中使用 cmdlet 的情况。

Options <[System.Management.Automation.ScopedItemOptions]>

确定函数的 Options 属性值。

  • None:无选项。 None 是默认值。
  • Constant:无法删除该函数,也无法更改其属性。 Constant 仅在创建函数时才可用。 不能将现有函数的选项更改为 Constant
  • Private:该函数仅在当前作用域中可见
  • (在子作用域中不可见)。
  • ReadOnly:除非使用 -Force 参数,否则无法更改该函数的属性。 可以使用 Remove-Item 删除函数。
  • AllScope:该函数将复制到创建的所有新作用域中。

支持的 cmdlet

使用管道

提供程序 cmdlet 接受管道输入。 可以使用管道将提供程序数据从一个 cmdlet 发送到另一个提供程序 cmdlet 来简化任务。 若要详细了解如何将管道与提供程序 cmdlet 配合使用,请参阅本文中提供的 cmdlet 参考。

获取帮助

从 Windows PowerShell 3.0 开始,你可以获取有关提供程序 cmdlet 的自定义帮助主题,它们介绍了这些 cmdlet 在文件系统驱动器中的行为方式。

若要获取针对文件系统驱动器进行自定义的帮助主题,请在文件系统驱动器中运行 Get-Help 命令,或使用 Get-Help-Path 参数来指定文件系统驱动器。

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path function:

另请参阅