Alias Provider
提供程序名称
Alias
驱动器
Alias:
简短说明
提供对 Windows PowerShell 别名以及它们所表示的值的访问。
详细说明
使用 Windows PowerShell Alias 提供程序,您可以获取、添加、更改、清除和删除 Windows PowerShell 中的别名。
别名是 cmdlet、函数或可执行文件的替代名称。Windows PowerShell 包含一系列内置别名。另外,您可以将您自己的别名添加到当前会话以及 Windows PowerShell 配置文件中。
Alias 提供程序是一个仅包含别名对象的平面命名空间。这些别名没有子项。
每个别名都是 System.Management.Automation.AliasInfo 类的实例。
Alias 提供程序在 Alias: 驱动器中公开其数据存储。若要使用别名,您可以使用以下命令将您的位置更改为 Alias: 驱动器:
Set-Location alias:
或者,您可以从任何其他 Windows PowerShell 驱动器中使用别名。若要从其他位置引用别名,请在路径中使用“Alias:”驱动器名称。
Windows PowerShell 包括一组用于查看和更改别名的 cmdlet:
Export-Alias
Get-Alias
Import-Alias
New-Alias
Set-Alias
在使用这些 cmdlet 时,无需在名称中指定 Alias: 驱动器。
Alias 提供程序支持拥有 Item 名词的所有 cmdlet(Invoke-Item cmdlet 除外)。此外,该提供程序还支持 Get-Content 和 Set-Content cmdlet。Alias 提供程序不支持拥有 ItemProperty 名词的 cmdlet。此外,该提供程序也不支持任何 cmdlet 中的 Filter 参数。
对别名的所有更改仅会影响当前会话。若要保存更改,请将更改添加到 Windows PowerShell 配置文件中。或者,可以使用 Export-Alias 和 Import-Alias cmdlet。
示例
转到 Alias: 驱动器
-------------------------- 示例 1 --------------------------
此命令将当前位置更改为 Alias: 驱动器。您可以从 Windows PowerShell 的任一驱动器中使用此命令。若要返回到文件系统驱动器,请键入驱动器名称。例如,键入“set-location c:”。
set-location alias:
获取别名
-------------------------- 示例 1 --------------------------
此命令获取当前会话中所有别名的列表。在任何 Windows PowerShell 驱动器中,都可以使用此命令。
get-item -path alias:
-------------------------- 示例 2 --------------------------
此命令获取“ls”别名。由于该别名包含路径,因此可以在任何 Windows PowerShell 驱动器中使用该别名。
get-item -path alias:ls
如果您位于 Alias: 驱动器中,则可以省略路径中的驱动器名称。
-------------------------- 示例 3 --------------------------
此命令获取与 Get-ChildItem cmdlet 关联的别名的列表。它使用存储 cmdlet 名称的 Definition 属性。
get-item -path alias:* | where-object {$_.Definition -eq "Get-Childitem"}
如果有别名的项是可执行文件,则 Definition 包含该文件的完全限定路径。
-------------------------- 示例 4 --------------------------
在当前位置是 Alias: 驱动器时,此命令可获取所有别名的列表。它使用通配符 (*) 来表示当前位置的所有内容。
get-item -path *
在 Alias: 驱动器中,表示当前位置的点 (.) 和表示当前位置中的所有项目的通配符 (*) 具有相同效果。例如,“get-item -path .”与“get-item *”会产生相同的结果。
创建新别名
-------------------------- 示例 1 --------------------------
此命令为 Get-Service cmdlet 创建“serv”别名。由于当前位置位于 Alias: 驱动器中,因此 Path 参数的值为一个点 (.)。点表示当前位置。
此命令还使用 Options 动态参数来设置别名上的 AllScope 和 Constant 选项。只有位于 Alias: 驱动器中时,才能在 New-Item cmdlet 中使用 Options 参数。
new-item -path . -name serv -value Get-Service -Options "AllScope,Constant"
如果您位于 Alias: 驱动器中,则可以省略路径中的驱动器名称。
-------------------------- 示例 2 --------------------------
您可以为调用命令的任何项创建别名。此命令为 Notepad.exe 创建“np”别名。
new-item -path alias:np -value c:\windows\notepad.exe
-------------------------- 示例 3 --------------------------
可以为任何函数创建别名。可以使用此功能来创建包括 cmdlet 以及其参数的别名。
第一个命令创建 CD32 函数,该函数将当前目录更改为 System32 目录。第二个命令为 CD32 函数创建别名“go”。分号 (;) 是命令分隔符。
当该命令完成时,您可以使用“CD32”或“go”调用该函数。
function CD32 {set-location -path c:\windows\system32} set-item -path alias:go -value CD32
显示别名的属性和方法
-------------------------- 示例 1 --------------------------
此命令使用 Get-Item 来获取所有别名。管道运算符 (|) 将结果发送给 Get-Member cmdlet,后者显示该对象的方法和属性。
get-item -path alias:* | get-member
在通过管道将对象集合(例如 Alias: 驱动器中的别名集合)传递给 Get-Member 时,Get-Member 将分别评估该集合中的每个对象。然后 Get-Member 返回它找到的有关每个对象类型的信息。如果所有对象都为同一类型,则它将返回有关该唯一对象类型的信息。在本例中,所有别名均为 AliasInfo 对象。 若要获取有关 AliasInfo 对象集合的信息,请使用 Get-Member 的 InputObject 参数。例如,使用下面的命令: Get-Member -InputObject (Get-Item alias:*) 使用 InputObject 时,Get-Member 将对集合而不是集合中的对象进行评估。
-------------------------- 示例 2 --------------------------
此命令列出了“dir”别名的属性值。此命令使用 Get-Item cmdlet 来获取表示“dir”别名的对象。管道运算符 (|) 将结果发送到 Format-List 命令。Format-List 命令对 Property 参数使用通配符 (*) 来设置所有“dir”别名属性值的格式并显示这些值。
get-item alias:dir | format-list -property *
更改别名的属性
-------------------------- 示例 1 --------------------------
您可以使用 Set-Item cmdlet 以及 Options 动态参数来更改别名的 Options 属性的值。
此命令设置“dir”别名的 AllScope 选项和 ReadOnly 选项。此命令使用 Set-Item cmdlet 的 Options 动态参数。只有在将 Options 参数与 Alias 或 Function 提供程序一起使用时,该参数才在 Set-Item 中可用。
set-item -path alias:dir -options "AllScope,ReadOnly"
-------------------------- 示例 2 --------------------------
此命令使用 Set-Item cmdlet 来更改“gp”别名,以便让该别名表示 Get-Process cmdlet 而不是 Get-ItemProperty cmdlet。由于“gp”别名的 Options 属性值设置为 ReadOnly,因此 Force 参数是必需的。由于从 Alias: 驱动器中提交该命令,因此路径中没有指定驱动器。
set-item -path gp -value get-process -force
该更改将影响用于定义别名与命令之间关联的四个属性。若要查看更改的效果,请键入以下命令: get-item -path gp | format-list -property *
-------------------------- 示例 3 --------------------------
此命令使用 Rename-Item cmdlet 将“popd”别名更改为“pop”。
rename-item -path alias:popd -newname pop
复制别名
-------------------------- 示例 1 --------------------------
此命令复制 pushd 别名,从而为 Push-Location cmdlet 创建新的 push 别名。
copy-item -path alias:pushd -destination alias:push
创建该新别名时,其 Description 属性拥有 null 值。另外,其 Options 属性的值为 None。 如果从 Alias: 驱动器中发出该命令,则可以在 Path 参数值中省略驱动器名称。
删除别名
-------------------------- 示例 1 --------------------------
此命令从当前会话中删除 serv 别名。在任何 Windows PowerShell 驱动器中,都可以使用此命令。
remove-item -path alias:serv
如果您位于 Alias: 驱动器中,则可以省略路径中的驱动器名称。
-------------------------- 示例 2 --------------------------
此命令删除以“s”开头的别名。但它不删除只读别名。
clear-item -path alias:s*
-------------------------- 示例 3 --------------------------
此命令从当前会话中删除所有别名,但 Options 属性值为 Constant 的别名除外。如果不使用 Force 参数,则此命令不删除 Options 属性值为 ReadOnly 的别名。
remove-item alias:* -force
动态参数
动态参数是由 Windows PowerShell 提供程序添加的 cmdlet 参数,且只可用于在启用了提供程序的驱动器中使用 cmdlet 的情况。
Options <System.Management.Automation.ScopedItemOptions>
确定别名的 Options 属性的值。
Value | Description |
---|---|
None |
无选项。此值为默认值。 |
Constant |
无法删除别名,也无法更改其属性。Constant 仅在创建别名时可用。不能将现有别名的选项更改为 Constant。 |
Private |
别名仅在当前作用域(不包含子作用域)中可见。 |
ReadOnly |
除非使用 Force 参数,否则无法更改别名的属性。您可以使用 Remove-Item 来删除别名。 |
AllScope |
别名将复制到创建的所有新作用域中。 |