PowerShell有个强大的地方,就是和DotNet做了深度整合,可以直接在PowerShell脚本里调用DotNet的类库。这样做的一个好处便是,如果你已经有一定的C#的基础,你将会发现PowerShell非常容易上手。
举个实际的例子,在写脚本实现系统环境自动化安装和配置时,一个常见的需求是从官方网站自动下载最新的软件版本,然后用命令行方式安装。关于http下载,用C#实现自动化可以直接用HttpWebRequest实现,在PowerShell下实现起来基本类似。下面代码演示了如何用PowerShell从微软官方的SilerLight下载地址http://go.microsoft.com/fwlink/?LinkID=149156下载最新的SilverLight,并且保存到本地的c:temp文件夹。
$webRequest = [System.Net.HttpWebRequest]::Create("http://go.microsoft.com/fwlink/?LinkID=149156") $webRequest.Method = "GET"; $webRequest.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)" $response = $webRequest.GetResponse() $stream = $response.GetResponseStream() $reader = New-Object System.IO.BinaryReader($stream) $bytes = New-Object System.Byte[] $response.ContentLength for ($read = 0; $read -ne $bytes.Length; $read += $reader.Read($bytes,$read,$bytes.Length - $read) ){ } [System.IO.File]::WriteAllBytes("c:tempSilverLight.exe",$bytes);
是不是和C#的写法很像?
Leave a Reply
You must be logged in to post a comment.