2.3 使用Windows PowerShell集成脚本开发环境(ISE)
为了更好地开发Windows PowerShell脚本,可以使用Windows PowerShell集成开发环境,以下简称ISE。该工具属于操作系统的一部分,但在初始安装的时候不会默认安装进来,如果使用的是Windows Server 2008服务器,可以通过管理工具->服务器管理->添加功能(Feature)将ISE作为功能添加进来,如图2-7所示,如果使用的是Windows 7,可以使用控制面板将ISE添加进来。
图2-7 安装ISE
安装完成以后,通过单击开始->所有程序->附件->Windows PowerShell->Windows PowerShell ISE运行集成开发环境,启动以后界面如图2-8所示。
使用过Visual Studio的开发者将会发现ISE非常好用,可以通过F5键执行,也可以在程序中设置断点进行调试。在ISE的上部窗口里输入以下代码测试:
$sum1=1+2 $sum2=3+4 $sum3=$sum1+$sum2 Write-Host $sum3
图2-8 ISE启动画面
输入后按F5键查看运行结果,如图2-9所示。
图2-9 运行结果
上例中通过“$”来创建变量sum1和sum2,而不需要向C#里面那样事先声明,下面再看一个带流程控制的例子:
$names=“YangGuo”,“XiaoLongNv”,“GuoJing”,“HuangRong” Foreach($name in $names){ Write-Host $name }
Windows PowerShell强大的一处在于,在PS脚本里可以直接调用任意.NET对象,比如以下代码就会调用New-Object命令创建一个.NET的DateTime对象:
$date=New-Object –TypeName System.DateTime –ArgumentList @(1525,8,10,0,0,0) $message=“GuoJing was born at “+$date.ToLongDateString() Write-Host $message
执行输出结果如下:
GuoJing was born at Monday,August 10,1525
PowerShell不仅可以创建新的.NET对象,还可以调用.NET对象的静态属性。例如,开发人员可以通过[System.DateTime]::Today的方式调用DateTime类的静态成员。
$today=[System.DateTime]::Today Write-Host $today.ToLongDateString() Write-Host $today.ToString(“MM/dd/yy”) Write-Host $today.AddDays(100).ToString(“MMMM d”)
执行输出结果如下:
Wednesday,May 25,2011 05/25/11 September 2
PowerShell甚至可以调用COM对象,比如开发人员想通过PowerShell打开IE并进入到某个网站:
$ie=New-Object –ComObject “InternetExplorer.Application” $ie.Navigate(“http://www.cnblogs.com/johnsonwong”) $ie.Visible=$true
运行此脚本将打开IE,进入笔者的博客。