瓜瓜派的瓜瓜
分类: IT业界
2012-01-09 16:36:55
PowerShell是微软公司于2006年第四季度正式发布的. 它的出现标志着, 微软公司向服务器领域迈出了重要的一步,拉近了与Unix, Linux等操作系统的距离. PowerShell的前身命名为Monad,在2006年4月25日正式发布beta版时更名为PowerShell。 PowerShell是一款基于对象的shell, 建立在.Net框架之上, 目前支持.Net Framework 2.0.能够运行在Windows XP SP2, Windows Vista, Windows 2003操作系统上. 能够同时支持WMI, COM,ADO.NET, ADSI等已有的Windows管理模型. 根据微软公司的计划,2009年将会实现所有微软公司的GUI管理工具通过PowerShell作为中间层对服务程序进行管理, 现阶段例如Exchange2007等已经支持PowerShell的管理. 可以预期, 使用PowerShell管理Windows服务器指日可待. PowerShell这项全新的技术提供了丰富的控制与自动化的系统管理能力;而“脚本语言”(scriptinglanguages)则是用来编写程序的计算机语言。脚本语言通常都有简单、易学、易用的特性,目的就是希望能让写程序的人(开发者)快速完成程序的编写工作。 Windows PowerShell 是微软公司为 Windows 环境所开发的壳程式(shell)及脚本语言技术,采用的是命令行界面。这项全新的技术提供了丰富的控制与自动化的系统管理能力。 之前的专桉代号是 Monad,程式另一个名称叫 Microsoft Shell(MSH)。 起源与目的 UNIX 系统一直有着功能强大的脚本(shell),Windows PowerShell 的诞生就是要提供功能相当于 UNIX 系统 BASH 的命令列壳程式,同时也内建脚本语言以及辅助脚本程式的工具。 程序特性 一致性的设计让所有工具和系统资料的使用语法、命名原则都相同。 脚本语言简单易学,而且能支援现有的脚本程式和命令列工具。 内含129种称为 cmdlet 的标准工具,可用来处理常见的系统管理工作。 具备完整的扩充功能,独立软体商或开发者都能很容易的自行扩充。 cmdlet是 Windows PowerShell 的指令,发音念法为 command-let。这相当于 DOS或其他壳程式的内建指令,指令名称的格式都是以连字号(-)隔开的一对动词和名词,并且通常都是单数名词;例如线上查询说明的 cmdlet 指令为get-help,名称的动词部分大致有 get、set、add、remove 等等(字母都不分大小写)。 技术基础 WindowsPowerShell 是以 .NET Framework 技术为基础,并且与现有的 WSH 保持回溯相容,因此它的脚本程式不仅能存取 .NETCLR,也能使用现有的 COM技术。同时也包含了数种系统管理工具、简易且一致的语法,提升管理者处理,常见如登录资料库、WMI。Exchange Server 2007 以及System Center Operations Manager 2007 等伺服器软体都将内建 Windows PowerShell。 PowerSHell上手 相对于传统的命令行工具,PowerShell对很多用户来说都会显得非常陌生。究竟PowerShell支持哪些命令呢?其实PowerShell可以管理系统进程,服务,注册表,系统日志甚至证书等多项内容。想知道它支持哪些命令,只需要在窗口内输入get-command并按下回画就可以了,这时屏幕上会显示所有PowerShell支持的命令。 此处除了可以显示命令的类型外,还会显示名称和描述。想查看某个命令的详细用法就可以使用get-help命令来获得帮助,比如要查看add-content命令的详细内容,就可以输入get-helpadd-content,按下回车后就会显示命令的名称,摘要,语法,详细说明,相关链接以及备注。要想更深入了解powerShell就要经常获取帮助哦。PowerShell应用 PowerShell可以方便地查看和结束系统内的进程,这样不仅可以监控系统内的可疑进程,还可以轻松地将其关闭。要想查看当前系统内的进程,就需要打开PowerShell,输入get-process后按下回车,这样系统中进程的句柄,进程名,进程占用处理器时间和进程唯一标识符就会显示出来。 如果要结束某个或多个进程,就需要记录下进程的唯一标识符,在powerShell中输入Stop-process后根据提示输入一个或多个进程的ID,按下回车后进程即可被自动结束。 用别外快速启动程序 对于某些常用的命令,powershell还支持将其设置为别名使用。比如需要给get-process设置别外,就可以在powershell中输入set-alias gpget-process,其中gp为命令get-process的别外。按下回车后直接用gp就可以代替get-process命令了。 同理很多系统内建的工具也可以在powershell中设置别名了,比如在powershell中输入notepad后就可以启动记事本。要想更快地启动记事本,就可以为其设置别名,输入set-alias np notepad后按下回车,这样再次输入np就可以打开记事本了。 [1]PowerShell还有着管理系统服务,操作注册表和众多的网络相关操作。 范例 停止所有目前执行中的以"p"字元开头命名的程式: PS> get-process p* | stop-process 停止所有目前执行中的所有使用大于1000MB内存的程式: PS> get-process | where { $_.WS -gt 1000MB } | stop-process 计算一个目录下档桉内的位元组大小: PS> get-childitem | measure-object -property length -sum 等待一个叫做"notepad"的程式执行结束: PS> $processToWatch = get-process notepad PS> $processToWatch.WaitForExit() 将"hello, world!"字串转为英文大写字元,成为"HELLO, WORLD!": PS> "hello, world!".ToUpper() 在字串"string"的第1个字元后插入字串"ABC",成为"sABCtring": PS> "string".Insert(1, "ABC") 订阅一个指定的RSS Feed并显示它最近8个主题: PS> $rssUrl = " " PS> $blog = [xml](new-object System.Net.WebClient).DownloadString($rssUrl) PS> $blog.rss.channel.item | select title -first 8 把"$UserProfile"设定成数值"UserProfile"的环境变数: PS> $UserProfile = $env:UserProfile 最新版本 目前的版本为 Windows PowerShell V2(CTP3) 常用开发工具 powershell plus 版本 3.0.1.0 参考资料 PowerShell中文技术交流社区 PowerShell中文技术交流社区 扩展阅读: 1.PowerShell中文技术交流社区: 2.powershell中文网 3.PowerShell在Exchange中应用: 4.PowerShell技术教程: |