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
推荐阅读
-
windows mobile 5.0 PocketPC模拟器在WIN7上网的设置方法
-
装逼必备:Windows花式关机绝学
-
windows mobile+webservice+sql server 2005配置方法
-
Windows10系统卸载QQ输入法有哪些方法
-
科普:Linux系统与Windows系统的区别
-
无线连接路由器时提示“windows无法连接到选定网络,网络可能不在区域中”的解决方法(
-
Windows10右键菜单中多个WinRAR选项合成一个选项的方法
-
在Xen虚拟机全虚拟化环境中安装Windows2003系统
-
windows中oracle 11g安装图解
-
vue-router重定向和路由别名的使用讲解