探索PowerShell (三) PowerShell下使用Aliases
不知道各位有没有接触过linux,我才疏学浅,对alias的认识是从linux上来的。linux常用的bash命令也是有上百个,虽然一般情况下命令都非常简短,不过很多时候需要大量的却是大量的参数,这样,对很多初学者来说,背命令变成为最头疼的事情,也使得很多linux初学者望而生畏。因此,在linux下,很常用的就是alias,也就是别名。当然,powershell很好的借鉴了这一点。
这一节就来介绍powershell下的aliases。
在powershell中,为了习惯于使用,可以使用别名代替命令。例如,windows老手可以利用像dir、move、type、cls等,当然,为了吸纳更多使用者,powershell还提供了对linux的别名设置,如:ls、pwd、mv、man、cat等。
为powershell设置别名的目的,是为了向新用户提供一个能够快速交互的shell。这里的alias,指的是cmdlet的替代名称。例如,"dir”替代的是"get-childitem”。
在这一节,将介绍两种类型的alias:
内置的别名
适用于windows,unix和预定义的powershell cmdlet的替代名称。
使用以下命令来浏览powershell的alias列表:
get-alias <enter>
细心的童鞋可以发现,get-chileitem这个cmdlet拥有多个alias,如:dir、ls、gci。我们可以尝试这些命令,结果都是一样的,如下图:
从本质上讲,我们只是运行了四次"get-chileitem"。内置别名的存在,使得我们在shell中工作时更加顺手而高效。不过说实在的,作为用户,我们没有必要多多的关注一个cmdlet都有哪些alias,我们只要用好自己习惯的就行了。
用户自定义的powershell的alias
设置alias的命令
例:为名为'get-service”的cmdlet定义一个alias
set-alias gs get-service <enter>
相当简单的语法,没有什么可多说的。
使用以上命令为你的cmdlet定义alias确实很容易,不过存在一个问题,就是这个alias只对当前处于会话期的powershell有效,也就是说,当你关闭并重新打开powershell时,输入这条alias,powershell会很无情的告诉你 “the term ‘gs' is not recognized as a cmdlet, function, operable program, or script file. verify the term and try again.”
那么,当我们创建了一个alias,并且不想失去它,我们怎么办?
• 有两种选择:
导入和导出powershell的aliases;
使用powershell配置文件来自定义alias。
方法一:导入和导出powershell的aliases
导出aliases的一个好处就是,你可以将它带到任何一个你想使用的地方。其命令如下<导出文件名自定义>:
export-alias -path a.txt <enter>
我们可以用notepad.exe看看这个里面都是些什吗东东~~~
好了,有人迫不及待的想试试导入了吧~~~
import-alias -path a.txt <enter>
额~杯具了!!!
看起来很惨的样子……
其实如果一个cmdlet存在alias,那么再次导入就会产生这样的杯具。
所以,我们的导出文件,只需要很简单的定义出自己常用的alias即可(那些系统自带的都统统删除就好啦),如:
好了,就是这样,嘿嘿嘿,是不是很邪恶~~~看看效果吧:
当然,强大的powershell不会弱智到让用户每次启动shell时都手动载入aliases一次的。在powershell的配置文件中,我们可以进行相关设置。
方法二:使用powershell的配置文件
配置文件的位置存储在$profile变量中,其默认值为:
'my documents\windowspowershell\microsoft.powershell_profile.ps1″
使用如下命令查看$profile值:
$profile
如前所述,powershell配置文件是一个扩展名为“.ps1”的文件。所有powershell脚本都使用这个扩展名。在此,我将使用记事本对其进行编辑。不过在此之前,还需要检查的powershell的执行策略设置。
powershell在第一次安装时默认的执行策略是"restricted",也就是“受限制的”,这意味着powershell将不能运行任何脚本和配置文件。
• powershell的执行策略分级:
restricted - 不能运行任何脚本和配置文件
allsigned - 所有脚本和配置文件必须拥有受信任的发布者的签名
remotesigned - 所有脚本和配置文件从可以是互联网上下载,但必须拥有受信任的发布者的签名
unrestricted - 所有脚本和配置文件都将运行,从互联网上下载的脚本在运行前会有提示。
使用如下cmdlet查看当前所处的策略级别:
get-executionpolicy <enter>
修改策略级别为unrestricted:
set-executionpolicy unrestricted <enter>
好的,我们现在来对$profile进行配置。
• 第1步 验证$profile是否存在
test-path $profile <enter>
false ===> 配置文件不存在(继续步骤2)。
true ===> 不多说了,直接跳过步骤2和3吧。除非你想创建一个新的配置文件,不过这将删除当前的配置文件。
• 第2步 创建一个新的配置文件
new-item -path $profile -itemtype file -force <enter>
第3步 再次验证是否成功创建新的配置文件
重复步骤1吧。结果应该为"true”。
好了,在记事本中打开配置文件:
notepad $profile <enter>
ok!我们现在拥有了一个空白的配置文件,其实可以称之为一个空白脚本。
其文件名为:
“microsoft.powershell_profile.ps1″
现在开始配置吧:
好了,现在可以关闭notepad和powershell了。重新打开powershell试试看。
完美!
另外需要说明几点,更改powershell策略级别时,需要使用管理员权限的,否则……
好了,这一节就到这里。说实话,那几个策略级别的单词真不好记,不过幸好不常用~~~