Windows Powershell 别名

简短描述
在Windows PowerShell中, 别名就是cmdlets或其他命令的替代名称.

详细描述
别名就是cmdlet或者命令(例如: 函数, 脚本, 文件, 可执行文件. )的替代名称或者说是个昵称. 在使用命令的地方, 你都可以使用别名.

cmdlet 的名称由一个动词和一个名词组成,其功能对用户来讲一目了然。但是对于一个经常使用powershell命令的人每天敲那么多命令也很麻烦啊。能不能把命令缩短一点呢?于是“别名”就应运而生了。Powershell内部也实现了很多常用命令的别名。例如Get-ChildItem,列出当前的子文件或目录。它有两个别名:ls 和 dir,这两个别名来源于unix 的shell和windows的cmd。
因此别名有两个作用:

继承:继承unix-shell和windows-cmd。
方便:方便用户使用。
处理别名:
查询别名所指的真实cmdlet命令。

PS C:\PS> Get-Alias -name ls

CommandType   Name                        Definition
-----------   ----                        ----------
Alias      ls                         Get-ChildItem

PS C:\PS> Get-Alias -name dir

CommandType   Name                        Definition
-----------   ----                        ----------
Alias      dir                         Get-ChildItem

PS C:\PS> Get-Alias -name fl

CommandType   Name                        Definition
-----------   ----                        ----------
Alias      fl                         Format-List

PS C:\PS> Get-Alias -name ft

CommandType   Name                        Definition
-----------   ----                        ----------
Alias      ft                         Format-Table

查看可用的别名
查看可用的别名,可以通过” ls alias:” 或者 ”Get-Alias“
如何查看所有以Remove打头的cmdlet的命令的别名呢?

PS C:\PS> dir alias: | where {$_.Definition.Startswith("Remove")}

CommandType   Name                        Definition
-----------   ----                        ----------
Alias      del                         Remove-Item
Alias      erase                        Remove-Item
Alias      rbp                         Remove-PSBreakpoint
Alias      rd                         Remove-Item
Alias      rdr                         Remove-PSDrive
Alias      ri                         Remove-Item
Alias      rjb                         Remove-Job
Alias      rm                         Remove-Item
Alias      rmdir                        Remove-Item
Alias      rmo                         Remove-Module
Alias      rp                         Remove-ItemProperty
Alias      rsn                         Remove-PSSession
Alias      rsnp                        Remove-PSSnapin
Alias      rv                         Remove-Variable
Alias      rwmi                        Remove-WMIObject

说明:dir alias:获取的是别名的数组,通过where对数组元素进行遍历,$_代表当前元素,alias的Definition为String类型,因为powershell支持.net,.net中的string类有一个方法Startswith。通过where过滤集合在powershell中使用非常广泛。

有的cmdlet命令可能有2-3个别名,我们可以通过下面的命令查看所有别名和指向cmdlet的别名的个数。

PS C:\PS> ls alias: | Group-Object definition | sort -Descending Count

Count Name           Group
----- ----           -----
  6 Remove-Item        {del, erase, rd, ri...}
  3 Set-Location       {cd, chdir, sl}
  3 Get-History        {ghy, h, history}
  3 Get-ChildItem       {dir, gci, ls}
  3 Get-Content        {cat, gc, type}
  3 Move-Item         {mi, move, mv}
  3 Copy-Item         {copy, cp, cpi}
  2 Start-Process       {saps, start}
  2 Set-Variable       {set, sv}
  2 Write-Output       {echo, write}
  2 Get-Process        {gps, ps}
  2 Invoke-History      {ihy, r}
  2 New-PSDrive        {mount, ndr}
  2 Stop-Process       {kill, spps}
  2 Rename-Item        {ren, rni}
  2 Get-Location       {gl, pwd}
  2 Compare-Object      {compare, diff}
  2 Where-Object       {?, where}
  2 ForEach-Object      {%, foreach}
  2 Clear-Host        {clear, cls}
  1 Out-Host         {oh}
  1 New-PSSession       {nsn}
  1 New-Variable       {nv}
  1 Out-GridView       {ogv}
  1 Pop-Location       {popd}
  1 Tee-Object        {tee}
  1 Remove-PSBreakpoint    {rbp}
  1 Receive-Job        {rcjb}
  1 Push-Location       {pushd}
  1 mkdir           {md}
  1 Measure-Object      {measure}
  1 help           {man}
  1 Remove-PSSnapin      {rsnp}
  1 Out-Printer        {lp}
  1 New-Item         {ni}
  1 New-Module        {nmo}
  1 New-Alias         {nal}
  1 Move-ItemProperty     {mp}
  1 Wait-Job         {wjb}
  1 Remove-PSDrive      {rdr}
  1 Start-Service       {sasv}
  1 Set-PSBreakpoint     {sbp}
  1 Set-ItemProperty     {sp}
  1 Start-Job         {sajb}
  1 Set-Alias         {sal}
  1 Start-Sleep        {sleep}
  1 Set-Item         {si}
  1 Select-Object       {select}
  1 Set-Content        {sc}
  1 Sort-Object        {sort}
  1 Remove-WMIObject     {rwmi}
  1 Remove-Module       {rmo}
  1 Rename-ItemProperty    {rnp}
  1 Stop-Service       {spsv}
  1 Set-WMIInstance      {swmi}
  1 Remove-Job        {rjb}
  1 Remove-Variable      {rv}
  1 Resolve-Path       {rvpa}
  1 Stop-Job         {spjb}
  1 Remove-ItemProperty    {rp}
  1 Remove-PSSession     {rsn}
  1 Exit-PSSession      {exsn}
  1 Format-Custom       {fc}
  1 Enter-PSSession      {etsn}
  1 Export-Csv        {epcsv}
  1 Export-PSSession     {epsn}
  1 Format-List        {fl}
  1 Get-PSBreakpoint     {gbp}
  1 Get-Command        {gcm}
  1 Get-Alias         {gal}
  1 Format-Table       {ft}
  1 Format-Wide        {fw}
  1 Export-Alias       {epal}
  1 Clear-History       {clhy}
  1 Clear-Item        {cli}
  1 Clear-Content       {clc}
  1 Add-Content        {ac}
  1 Add-PSSnapIn       {asnp}
  1 Clear-ItemProperty    {clp}
  1 Disable-PSBreakpoint   {dbp}
  1 Enable-PSBreakpoint    {ebp}
  1 Convert-Path       {cvpa}
  1 Clear-Variable      {clv}
  1 Copy-ItemProperty     {cpp}
  1 Invoke-Expression     {iex}
  1 Invoke-Item        {ii}
  1 Invoke-Command      {icm}
  1 Get-Variable       {gv}
  1 Get-WmiObject       {gwmi}
  1 Import-Alias       {ipal}
  1 powershell_ise.exe    {ise}
  1 Invoke-WMIMethod     {iwmi}
  1 Import-PSSession     {ipsn}
  1 Import-Csv        {ipcsv}
  1 Import-Module       {ipmo}
  1 Get-Unique        {gu}
  1 Get-Job          {gjb}
  1 Get-Member        {gm}
  1 Get-Item         {gi}
  1 Get-PSCallStack      {gcs}
  1 Get-PSDrive        {gdr}
  1 Get-Module        {gmo}
  1 Get-PSSnapIn       {gsnp}
  1 Get-Service        {gsv}
  1 Get-PSSession       {gsn}
  1 Get-ItemProperty     {gp}
  1 Group-Object       {group}

创建自己的别名
给记事本创建一个别名,并查看该别名;

PS C:\PS> Set-Alias -Name Edit -Value notepad
PS C:\PS> Edit
PS C:\PS> $alias:Edit
notepad

删除自己的别名
别名不用删除,自定义的别名在powershell退出时会自动清除。但是请放心,powershell内置别名(诸如ls,dir,fl等)不会清除。如果你非得手工删除别名。请使用

PS C:\PS> del alias:Edit保存自己的别名
可以使用Export-Alias将别名导出到文件,需要时再通过Import-Alias导入。但是导入时可能会有异常,提示别名已经存在无法导入:

PS C:\PS> Import-Alias alias.ps1
Import-Alias : Alias not allowed because an alias with the name 'ac' already exists.
At line:1 char:13
+ Import-Alias <<<< alias.ps1
  + CategoryInfo     : ResourceExists: (ac:String) [Import-Alias], SessionStateException
  + FullyQualifiedErrorId : AliasAlreadyExists,Microsoft.PowerShell.Commands.ImportAliasCommand

这时可以使用Force强制导入。

PS C:\PS> Export-Alias alias.ps1
PS C:\PS> Import-Alias -Force alias.ps1

例如, 如果你为Get-AuthenticodeSignature设置了别名"gas", 你可以直接输入:

gas c:\scripts\sqlscript.ps1

而不必输入:

get-authenticodesignature c:\scripts\sqlscript.ps1

如果你为微软的Word设置了别名"word", 你可以直接输入:
 
word
 
而不必输入:
 
"c:\program files\microsoft office\office11\winword.exe"

预定义的别名

Windows PowerShell已经预定义了一部分别名, 例如: "cd"和"chdir"都是Set-Location的别名, "ls" 和"dir"是Get-Childitem的别名.
 
查找系统中的所有别名(包括预定别名), 输入如下命令:
 
get-alias

别名相关的CMDLETS

Windows PowerShell包含了几个cmdlets用于操作别名.
 
·         Get-Alias: 取得当前会话(session)中的别名. 
·         New-Alias: 创建一个新的别名.
·         Set-Alias: 创建或修改一个别名.
·         Export-Alias:  导出一个或多个别名到文件中.
·         Import-Alias:  导入一个别文件到Windows PowerShell.

需要cmdlets的详细信息, 输入:
 
get-help <cmdlet-name> -detailed
 
例如:
 
get-help export-alias -detailed
 
创建别名
创建一个新的别名, 可以使用New-Alias cmdlet. 例如, 要为Get-Help创建一个"gh"别名, 输入,
 
new-alias -name gh -value get-help
 
你可以在命令中就好像你使用的完整的cmdlet名称和各种参数一样, 来使用这个别名.
 
例如, 取得Get-WmiObject cmdlet的详细信息, 你只要输入:
 
get-help get-wmiobject -detailed
 
或者
 
gh get-wmiobject -detailed
 
保存别名
你创建的别名只在当前的会话(session)有效. 要在不同的会话中使用别名, 你必须把别名的定义写入你的Windows PowerShell配置文件, 或者使用Export-Alias将别名存储到文件里.
 
查找别名
要在当前控制台上显示所有别名, 包括Windows PowerShell预定义的别名, 你的Windows PowerShell配置文件中定义的别名, 你在当前会话创建的别名, 只要输入:
 
get-alias
 
如果需要特定的别名, 通过为Get-Alias指定Name参数即可. 例如, 要取得"p"开头的别名, 输入
 
get-alias -name p*
 
要查找特定cmdlet的所有别名, 可以输入:
 
get-alias | where-object {$_.Definition -eq "<cmdlet-name>"}
 
例如:
 
get-alias | where-object {$_.Definition -eq "Remove-Item"}

为带有参数的命令创建别名

你可以为cmdlet, 脚本, 函数, 或者可执行文件赋予别名. 但是你不能为带有参数的命令设置别名. 例如, 你能够为"Get-Eventlog"设置别名, 但是你不能为"Get-Eventlog -logname security"设置别名.
 
你只能通过创建一个包含该命令的函数来解决这个问题. 例如, 如下命令创建一个叫做”seclog"的函数, 此函数可以表示"get-eventlog -logname security”命令.
 
function seclog {get-eventlog -logname security}
 
现在你可以输入用名字"seclog"来简化之前的命令, 你还可以为函数"seclog"创建别名.
 
关于函数的信息, 输入:
 
get-help about_function

别名对象

Windows PowerShell别名实际是类System.Management.Automation.AliasInfo的实例对象. 关于对象类型信息, 参见MSDN 中"AliasInfo Class"的主题.
 
要查看别名对象上的属性和方法, 首先取得别名对象, 并且通过管道传递给Get-Member cmdlet. 例如,
 
get-alias | get-member
 
要查看特定别名的属性值, 例如别名"dir", 取得该别名并通过管道传递给Format-List cmdlet. 例如, 如下代码首先取得别名"dir"对象, 通过管道传递给Format-List cmdlet, 通过对Format-List的参数Property赋值为所有 (*), 来显示别名"dir"的所有属性.
 
get-alias -name dir | format-list -property *
 
WINDOWS POWERSHELL别名PROVIDER

Windows PowerShell别名provider(译者注: 一个Provider就类似于用户使用的文件系统目录结构, 微软开发人员通过MVC这种设计思想, 将变量, 注册表, 别名等资源的管理, 抽象为文件系统的管理. 这样用户可以使用统一的语法对各种资源进行访问. PowerShell开发人员, 也能为PowerShell扩展其他的Provider.) , 使得在Windows PowerShell中, 查看别名就像浏览文件系统驱动器一样.
 
别名provider提供了"Alias:"驱动器(译者注:虚拟驱动器, 只有在PowerShell中有效). 要进入Alias: 驱动器, 输入:
 
set-location alias:
 
要查看该驱动器的内容, 输入:
 
get-childitem
 
在Windows PowerShell其他的驱动器时, 如果想查看别名驱动器, 在目录前要协商驱动器名称, 紧跟着一个冒号(:). 例如,
 
get-childitem -path alias:
 
要取得特定别名的信息, 输入驱动器名称和别名名称, 或名称的模式(pattern. 笔者注: 一般使用的就是通配符. ). 例如, 要取得所有以"p"开头别名的列表, 输入:
 
get-childitem -path alias:p*
 
需要更多关于Windows PowerShell别名provider的信息, 输入:
 
get-help alias-psprovider
 
 您还可以参考
要列出关于别名的cmdlets, 输入:
 
get-help *-Alias
 
关于函数的信息, 输入:
 
get-help about_function

(0)

相关推荐

  • Windows Powershell 通过函数扩展别名

    在Powershell中设置别名的确方便快捷,但是在设置别名的过程中并设置参数的相关信息.尽管别名会自动识别参数,但是如何把经常使用的参数默认设定在别名里面呢?例如Test-Connection -Count 2 -ComputerName,让-"-Count 2″ 固化在别名中. 这时简单的别名无法完成上述需求,可以通过函数来完成它,并且一旦把函数拉过来,定义别名会变得更加灵活. PS C:\PS> function test-conn { Test-Connection -Count

  • Windows Powershell 定义变量

    变量可以临时保存数据,因此可以把数据保存在变量中,以便进一步操作. #定义变量 $a=10 $b=4 #计算变量 $result=$a*$b $msg="保存文本" #输出变量 $result $msg 40 保存文本 powershell 不需要显示地去声明,可以自动创建变量,只须记住变量的前缀为$. 创建好了变量后,可以通过变量名输出变量,也可以把变量名存在字符串中.但是有个例外单引号中的字符串不会识别和处理变量名. 选择变量名 在powershell中变量名均是以美元符"

  • Windows Powershell 进行数学运算

    PowerShell支持如下算术运算符: 运算符 描述 例子 结果 + 把两个数值相加 6+2  8 - 把两个数值相减 6-2  4 - 将数值转换为对应的负值 -2+6 4 * 把两个数值相乘  6*2 12 / 把两个数值相除 6/2  3 % 返回除法运算的余数 6%4  2 运算符优先级 有一些因素决定了包含算术运算符的表达式如何被处理. 这些因素包括了: 运算符种类, 运算符的顺序, 是否有表达被括号括起来. 例如, 10+4/2返回结果12, 然而(10+4)/2返回结果却是7.

  • Windows Powershell 执行外部命令

    Powershell 能够像CMD一样很好的执行外部命令. 通过netstat查看网络端口状态 PS C:\PS> netstat Active Connections Proto Local Address Foreign Address State TCP 192.168.0.100:3049 192.168.0.88:7575 ESTABLISHED TCP 192.168.0.100:3052 192.168.0.88:7575 ESTABLISHED TCP 192.168.0.100

  • Windows Powershell 执行文件和脚本

    象运行可执行文件一样,Powershell运行文件和脚本,也必须使用绝对路径或者相对路径,或者要运行的文件必须定义在可受信任的环境变量中. 关于脚本 脚本和批处理都属于伪可执行文件,它们只是包含了若干命令行解释器能够解释和执行的命令行代码. 执行批处理文件 批处理是扩展名为".bat"的文本文件,它可以包含任何cmd控制台能够处理的命令.当批处理文件被打开,Cmd控制台会逐行执行每条命令.那Powershell能够直接执行批处理吗? 将下列命令保存为ping.bat @echo off

  • Windows Powershell 别名

    简短描述 在Windows PowerShell中, 别名就是cmdlets或其他命令的替代名称. 详细描述 别名就是cmdlet或者命令(例如: 函数, 脚本, 文件, 可执行文件. )的替代名称或者说是个昵称. 在使用命令的地方, 你都可以使用别名. cmdlet 的名称由一个动词和一个名词组成,其功能对用户来讲一目了然.但是对于一个经常使用powershell命令的人每天敲那么多命令也很麻烦啊.能不能把命令缩短一点呢?于是"别名"就应运而生了.Powershell内部也实现了很多

  • Windows Powershell Where-Object 条件过滤

    过滤管道结果 使用Get-Process返回所有的当前进程 ,但是你可能并不对所有的进程感兴趣,然后通过每个Process对象的属性进行过滤.首先得知道每个对象支持那些属性. 复制代码 代码如下: PS C:Powershell> Get-Process | select -First 1 | fl * __NounName                 : Process Name                       : AcroRd32 Handles               

  • Windows PowerShell 微软官方解释

    通过提供一百多种系统管理实用工具.一致的语法.及对普通管理数据更好地导航(如登记或 Windows Management Instrumentation (WMI)),Windows PowerShell 使 Windows 管理员提高了生产力.Windows PowerShell 还包括全面启动 Windows 系统自动化管理任务的脚本编写语言.Windows PowerShell 语言是直观的,并支持贵企业现有的脚本和命令行工具投入.Exchange Server 2007 和 System

  • Windows PowerShell是啥?看完本文你就懂它了

    引子 一直很羡慕Linux的命令提示符(当然他们叫Shell).正则表达式,管道,各种神奇的命令,组合起来就能高效完成很多复杂的任务.效率实在是高.流了n年的哈喇子以后,终于有幸用上了Win7,邂逅了cmd的升级版:Windows PowerShell.从此暗爽无比,原来Windows下也有这样的利器呀~ 看看下面的Windows脚本,不到15行有效代码.在Win7下只要右击脚本文件,选择Run with PowerShell,就会自动找到最占内存的10个进程,然后将它们占用的内存画成一个三维饼

  • Windows Powershell 介绍和安装

    Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境.你可以把它看成是命令行提示符cmd.exe的扩充,不对,应当是颠覆. powershell需要.NET环境的支持,同时支持.NET对象.微软之所以将Powershell 定位为Power,并不是夸大其词,因为它完全支持对象.其可读性,易用性,可以位居当前所有shell之首. 当前powershell有四版本,分别为1.0,2.0,3.0 ,4.0 如果您的系统是window7或者Windows Ser

  • Windows Powershell 自动化变量

    Powershell 自动化变量 是那些一旦打开Powershell就会自动加载的变量. 这些变量一般存放的内容包括 用户信息:例如用户的根目录$home 配置信息:例如powershell控制台的大小,颜色,背景等. 运行时信息:例如一个函数由谁调用,一个脚本运行的目录等. PS> $HOME C:\Users\test PS> $currentProcessID=$pid PS> $currentProcessID 5356 PS> Get-Process -Id $pid H

  • Windows Powershell使用管道

    管道并不是什么新事物,以前的Cmd控制台也有重定向的命令,例如Dir | More可以将结果分屏显示. 传统的Cmd管道是基于文本的,但是Powershell是基于对象. PS> ls | Sort-Object -Descending Name | Select-Object Name,Length,LastWriteTime | ConvertTo-Html | Out-File ls.html PS> Get-Content .ls.html Name Length LastWriteT

  • Windows Powershell属性:描述对象是什么

    属性可以描述一个对象,对象的属性可以被Powershell自动转换成文本,并且输出到控制台.因此可以通过这种方法查看任何对象,例如$host: 复制代码 代码如下: PS C:Powershell> $host Name              : ConsoleHost Version           : 2.0 InstanceId            : 7fefa1fa-fb2e-47c7-a867-c13b123da5c2 UI                : System.

随机推荐