windows-运维-06 PowerShell别名
PowerShell别名
cmdlet 的名称由一个动词和一个名词组成,其功能对用户来讲一目了然。但是对于一个经常使用powershell命令的人每天敲那么多命令也很麻烦啊。能不能把命令缩短一点呢?于是“别名”就应运而生了。Powershell内部也实现了很多常用命令的别名。例如Get-ChildItem,列出当前的子文件或目录。它有两个别名:ls 和 dir,这两个别名来源于unix 的shell和windows的cmd。
因此别名有两个作用:
- 继承:继承unix-shell和windows-cmd。
- 方便:方便用户使用。
处理别名:
查询别名所指的真实cmdlet命令。
1 | PS C:\> Get-Alias -name dir |
查看可用的别名
查看可用的别名,可以通过” ls alias:” 或者 ”Get-Alias“
如何查看所有以Remove打头的cmdlet的命令的别名呢?
1 | PS C:\PS> dir alias: | where {$_.Definition.Startswith("Remove")} |
说明:dir alias:获取的是别名的数组,通过where对数组元素进行遍历,$_代表当前元素,alias的Definition为String类型,因为powershell支持.net,.net中的string类有一个方法Startswith。通过where过滤集合在powershell中使用非常广泛。
有的cmdlet命令可能有2-3个别名,我们可以通过下面的命令查看所有别名和指向cmdlet的别名的个数。
1 | PS C:\PS> ls alias: | Group-Object definition | sort -Descending Count |
创建自己的别名
给记事本创建一个别名,并查看该别名;
1 | PS C:\PS> Set-Alias -Name Edit -Value notepad |
删除自己的别名
别名不用删除,自定义的别名在powershell退出时会自动清除。但是请放心,powershell内置别名(诸如ls,dir,fl等)不会清除。如果你非得手工删除别名。请使用
1 | PS C:\PS> del alias:Edit |
保存自己的别名
可以使用Export-Alias将别名导出到文件,需要时再通过Import-Alias导入。但是导入时可能会有异常,提示别名已经存在无法导入:
1 | PS C:\PS> Import-Alias alias.ps1 |
这时可以使用Force强制导入。
1 | PS C:\PS> Export-Alias alias.ps1 |
通过函数扩展别名
在Powershell中设置别名的确方便快捷,但是在设置别名的过程中并设置参数的相关信息。尽管别名会自动识别参数,但是如何把经常使用的参数默认设定在别名里面呢?例如Test-Connection -Count 2 -ComputerName,让-“-Count 2” 固化在别名中。
这时简单的别名无法完成上述需求,可以通过函数来完成它,并且一旦把函数拉过来,定义别名会变得更加灵活。
1 | PS C:\PS> function test-conn { Test-Connection -Count 2 -ComputerName $args} |
有了函数牵线,别名可以完成更高级更强大的功能,其中$args为参数的占位符。
本篇到此结束