函数提供程序

提供程序名称

函数

驱动器

Function:

功能

ShouldProcess

简短说明

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

详细说明

借助 PowerShell 函数 提供程序,可以在 PowerShell 中获取、添加、更改、清除和删除函数和筛选器。

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

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

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

此提供程序公开的类型

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

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

Set-Location Function:

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

Set-Location C:

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

注意

PowerShell 使用别名使你能够以熟悉的方式处理提供程序路径。 和 lsdir命令现在是 Get-ChildItem 的别名,cdSet-Location 的别名。 和 pwdGet-Location 的别名。

获取函数

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

Get-ChildItem -Path Function:

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

Get-ChildItem -Path Function:

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

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

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

$function:more

获取所选函数

此命令从驱动器获取 manFunction: 函数。 它使用 Get-Item cmdlet 获取函数。 管道运算符 (|) 将结果发送到 Format-Table。 参数 -Wrap 将不适合该行的文本定向到下一行。 参数 -Autosize 调整表格列的大小以适应文本。

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

使用函数提供程序路径

这些命令都获取名为 的 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 命令行中键入函数来创建函数。 例如,tpe 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 时才可用。

选项 <[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 命令,或使用 -PathGet-Help 的 参数指定文件系统驱动器。

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

另请参阅

about_Functions

about_Providers