函数提供程序
提供程序名称
函数
驱动器
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 使用别名使你能够以熟悉的方式处理提供程序路径。 和 ls
等dir
命令现在是 Get-ChildItem 的别名,cd
是 Set-Location 的别名。 和 pwd
是 Get-Location 的别名。
获取函数
此命令将获取当前会话中所有函数的列表。 可以从任何 PowerShell 驱动器使用此命令。
Get-ChildItem -Path Function:
函数提供程序没有容器,因此与 一起使用 Get-ChildItem
时,上述命令具有相同的效果。
Get-ChildItem -Path Function:
可以通过访问 Definition 属性来检索函数的定义,如下所示。
(Get-Item -Path function:more).Definition
还可以使用函数的提供程序路径检索其定义,其前缀为美元符号 ($
) 。
$function:more
获取所选函数
此命令从驱动器获取 man
Function:
函数。 它使用 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 命令,或使用 -Path
Get-Help 的 参数指定文件系统驱动器。
Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path function: