我我的不多用到Linux/Unix 操做系统. 对于很多Linux/Unix管理员在系统任务操做Shell一直保持很难理解. 后来从朋友公司据说他们测试队伍中专门保留了一个脚本Scirpt Shell 测试小组. 我一时更纳闷了. 固然这个问题知道我碰到Windows PowerShell-Windows出的一套Shell工具后 才渐渐理解.sql
Windows PowerShell是微软为Windows系统开发的Shell及脚本语言技术,它是一种新的命令行外壳和脚本语言,用于实现系统自动化管理。它的出现弥补了与Linux/Unix系统相比Windows在Shell方面的不足,这也就不难理解为何微软从2004起一直在作方面努力 相继推出两个版本1.0/2.0 ,这两个版本的连续发布能够看出微软公司在马力十足的不断开发PowerShell,同时也为程序开发人员提供了一种更高效的编写脚本的工具,shell
Windows 7和Windows Server 2008 R2中已经整合了PowerShell 2.0: Windows 7下集成路径在附件中:编程
Windows PowerShell创建在.NET Framework 2.0/3.x的基础上, 和.NET公共语言运行时(CLR)和.NET框架上,它内部创建一个通讯管道专门用来接受并返回.NET对象.网络
对脚本编程接触较少,今天将采用几个实际事例来验证Windows PowerShell(2.0) 对.NET对象的内部支持.框架
在进行验证以前. 咱们有必要有一个好的编译工具.俗话说”公欲善其事必先利其器.”如今的Windows PowerShell已经发布到2.0版本 ,在Windows 7已经集成. 可是集成自带的图形操做界面ISE工具 . 整体给我感受功能太多于单一. 没有字体调整. 没有详细调试执行信息提示界面.对>NET对象API没有提示界面. 咱们须要一个更好用的工具——PowerShellAnalyzer ide
打开界面:工具
如今EditPlus和UltraEdit都已经出了powershell的语法文件,可是对Shell脚本编程功能更强的IDE只能算是PowerShellAnalyzer,用了N多第三方控件, 在2009年6月份只能45天试用,如今已经所有免费开放这款强大的Shell脚本的IDE工具. 也是微软官方推荐第三方工具的首选.测试
下载地址: Shell Tools——PowerShellAnalyzer-Tool字体
目前采用Shell版本是2.0, 请确认本机.NET的环境在2.0/3.5版本上. Shell直接集成与。Net CLR 之上. 这就为了咱们直接在Shell脚本中建立.NET对象提供了可能.powershell能够很方便的使用.net的类库。使用 New-Object 能够实例化一个.net类. 例如咱们常在网页操做文件下载. 咱们一样能够直接Shell脚本用简短几行代码 快速实现对固定连接文件本地下载:ui
- $getobject = New-Object Net.WebClient
- $downloadurl = 'http://files.cnblogs.com/chenkai/WP7_LocalDBDemo.rar'
- $storepath = "$home\LocalStroeFile.zip"
- $getobject.DownloadFile($downloadurl, $storepath )
下载成功. 可是整个过程没有任何提示.并且下载时间是相对于本身网络环境而言有很大影响. 咱们是否有必要作一个下载进度条来显示下载的文件整体进度.不过很遗憾,简单的DownloadFile ( )方法没有提供下载进度条控制. 可是VBScript中有一个方法偏偏在空间ServerComputer.Network下提供了下载进度条控制方法:
- [void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')
- $url = 'http://files.cnblogs.com/chenkai/WP7_LocalDBDemo.rar'
- $local = "$home\powershellworkshop.zip"
- $object = New-Object Microsoft.VisualBasic.Devices.Network
- $object.DownloadFile($url, $local, '', '', $true, 500, $true, 'DoNothing')
如今加载Microsoft.VisualBasic.Devices.Network 空间. New出对象,后. DownLoadFile方法参数对比:
DownloadFile 方法 (Uri, String, String, String, Boolean, Int32, Boolean, UICancelOption)