.net笔记3:关于PowerShell

PowerShell是微软推出的基于.NET Framework的命令行外壳程序和技术,旨在为Windows环境提供强大的自动化管理和脚本编写能力。本文介绍了PowerShell的历史背景、基本特性和实际应用场景。

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作为中间层对服务程序进行管理, 现阶段例如Exchange 2007等已经支持PowerShell的管理. 可以预期, 使用PowerShell管理Windows服务器指日可待.
PowerShell这项全新的技术提供了丰富的控制与自动化的系统管理能力;而“脚本语言”(scripting languages)则是用来编写程序的计算机语言。脚本语言通常都有简单、易学、易用的特性,目的就是希望能让写程序的人(开发者)快速完成程序的编写工作。
Windows PowerShell 是微软公司为 Windows 环境所开发的壳程式(shell)及脚本语言技术,采用的是命令行界面。这项全新的技术提供了丰富的控制与自动化的系统管理能力。
之前的专桉代号是 Monad,程式另一个名称叫 Microsoft Shell(MSH)。

ps_1.jpg

起源与目的


UNIX 系统一直有着功能强大的脚本(shell),Windows PowerShell 的诞生就是要提供功能相当于 UNIX 系统 BASH 的命令列壳程式,同时也内建脚本语言以及辅助脚本程式的工具。

程序特性


一致性的设计让所有工具和系统资料的使用语法、命名原则都相同。
脚本语言简单易学,而且能支援现有的脚本程式和命令列工具。
内含129种称为 cmdlet 的标准工具,可用来处理常见的系统管理工作。
具备完整的扩充功能,独立软体商或开发者都能很容易的自行扩充。
cmdlet 是 Windows PowerShell 的指令,发音念法为 command-let。这相当于 DOS 或其他壳程式的内建指令,指令名称的格式都是以连字号(-)隔开的一对动词和名词,并且通常都是单数名词;例如线上查询说明的 cmdlet 指令为 get-help,名称的动词部分大致有 get、set、add、remove 等等(字母都不分大小写)。

技术基础


Windows PowerShell 是以 .NET Framework 技术为基础,并且与现有的 WSH 保持回溯相容,因此它的脚本程式不仅能存取 .NET CLR,也能使用现有的 COM 技术。同时也包含了数种系统管理工具、简易且一致的语法,提升管理者处理,常见如登录资料库、WMI。Exchange Server 2007 以及 System Center Operations Manager 2007 等伺服器软体都将内建 Windows PowerShell。

PowerSHell上手


相对于传统的命令行工具,PowerShell对很多用户来说都会显得非常陌生。究竟PowerShell支持哪些命令呢?其实PowerShell可以管理系统进程,服务,注册表,系统日志甚至证书等多项内容。想知道它支持哪些命令,只需要在窗口内输入get-command并按下回画就可以了,这时屏幕上会显示所有PowerShell支持的命令。
此处除了可以显示命令的类型外,还会显示名称和描述。想查看某个命令的详细用法就可以使用get-help命令来获得帮助,比如要查看add-content命令的详细内容,就可以输入get-help add-content,按下回车后就会显示命令的名称,摘要,语法,详细说明,相关链接以及备注。要想更深入了解powerShell就要经常获取帮助哦。PowerShell应用
PowerShell可以方便地查看和结束系统内的进程,这样不仅可以监控系统内的可疑进程,还可以轻松地将其关闭。要想查看当前系统内的进程,就需要打开PowerShell,输入 get-process后按下回车,这样系统中进程的句柄,进程名,进程占用处理器时间和进程唯一标识符就会显示出来。
如果要结束某个或多个进程,就需要记录下进程的唯一标识符,在powerShell中输入Stop-process后根据提示输入一个或多个进程的ID,按下回车后进程即可被自动结束。
用别外快速启动程序
对于某些常用的命令,powershell还支持将其设置为别名使用。比如需要给get-process设置别外,就可以在powershell中输入set-alias gp get-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 = "http://www.cnpowershell.net "
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中文技术交流社区:http://www.cnpowershell.com/
2.powershell中文网 http://www.cnpowershell.net
3.PowerShell在Exchange中应用:http://www.Exchangecn.com
4.PowerShell技术教程:http://www.hellocto.com/wz/list.aspx?cid=84

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值