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:
驱动器中公开其数据存储。 若要使用函数,你可以将你的位置更改为 Function: 驱动器 (Set-Location Function:
)。Function:
或者,可以从其他 PowerShell 驱动器中使用函数。 若要从其他位置引用函数,请在路径中使用驱动器名称 (Function:
)。
Set-Location Function:
若要返回到文件系统驱动器,请键入驱动器名称。 例如,键入:
Set-Location C:
还可以从任何其他 PowerShell 驱动器使用 Function 提供程序。 若要从其他位置引用函数,请使用路径中的驱动器名称 Function:
。
注意
PowerShell 使用别名来让你熟悉如何使用提供程序路径。 dir
和 ls
等命令现在是 Get-ChildItem 的别名,cd
是 Set-Location 的别名。 而 pwd
是 Get-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: