PowerShell是Microsoft推出的自动化CLI终端及其对应脚本语言,它最早出现在03年9月的开发者大会(PDC)上。PowerShell虽说是脚本语言,有点像UNIX的Bash脚本,但其远远超过Bash脚本(个人感觉),因为PowerShell是完全对向对象的,而且与.NET高度集成,也就是说你可以轻松访问.NET库。因此,使用PowerShell不仅可以自动化一些常见的过程,而且甚至可以编写.NET程序,这一点也不夸张。PowerShell的cmd-let可以轻易对PowerShell进行扩展,而且由于面向对象的原因也易于编写。
PowerShell的主界面
PowerShell最新的版本是2.0.只有Windows 7 Professional以上及Windows Server 2008 R2才附带,Windows XP SP3, Windows Server 2003 SP2,!Windows Vista SP1与Windows Server 2008您需要手动下载,其地址:http://support.microsoft.com/kb/968929,当然,你先要安装.NET。
当然,您如果想对PowerShell进行进一步的了解的话,可以去Wikipedia上的专题,地址为:http://en.wikipedia.org/wiki/Powershell。现在我们就来做一个自动清除下载文件的脚本,假设我们的下载文件都储存在“D:\tp”中。由于我们需要使用事件功妮,因此我们得给启动命令上加上“-sta”,至于为什么可以去百度一下。如下图。
给启动命令加上-sta
启动自带的PowerShell ISE开发环境来进行开发。出于安全方面的考虑,现在你还不能进行本地脚本,须要更换安全级别,详见:http://technet.microsoft.com/en-us/library/ee176949.aspx。下面我讲述一下几个关键步骤,文章尾部附带有源代码,大家可以自行研究。我们设计系统会给用户一个提示,如果用户没有在规定的时间来取消,就进行清除工作,然后显示该盘的剩余空间。那么首先我们须要加载.NET的Form库。
## Load the window lib [void] [System.Reflection.Assembly] ::LoadWithPartialName("System.Windows.Forms")对于对用户进行提示这块,我们当然想到了最友好的气泡提示窗口。我们就要创建几个对象,依次为下载地址、所在盘、与气泡窗口,如下:
## This is the!location of your download files unregister-event * $fileLocation = "D:\tp" $diskLabel = "D:" $notification = new-object System.Windows.Forms.NotifyIcon然后注册一个事件,来监听NotifyIcon的Click事件。
## Register a click event register-objectevent $notification BalloonTipClicked -sourceIdentifier click_event这里的register-objectevent是关键字,$notification是我们的窗口变量,BalloonTipClicked是要监听的事件,最后一个是该次监听的ID,以后会用。我们等15秒来让用户解决是否要取消本次操作。
## Wait for the onClick event wait-event -sourceIdentifier click_event -timeout 15然后看看消息队列是有没有我们要要的东东。
## Chech if the event occurs $flag = get-event -sourceIdentifier click_event | where-object {$_.sourceIdentifier -match "click_event"}。之后我们就可以根据〈b>flag的内容来决定是否要进行删除了。有时候我们要保留一些文件,那就把他们放在“saved”中,用以下删除命令就可以了。
rm $tp_1 -r -fo -exclude "saved"
那么最终效果就是这样的了。 Windows 7及Vista用户须要以管理员的身份运行。
|
当然,PowerShell的功能远不止这点而已,还有更多功能等待你去开发。
附上几个关于PowerShell的网址:
TechNet:technet.microsoft.com/en-us/scriptcenter/dd742419.aspx
PowerGUI.org :http://powergui.org/index.jspa
MSDN:http:/-msdn.microsoft.com/en-us/library/cc281945.aspx