导语:对于电脑高手来说,华丽的图形界面往往并不实用,快捷的键盘命令才是王道。Win7集成的PowerShell2.0,更是其中的王中王,让你直接掌控你的电脑命脉。
Win7中集成了PowerShell2.0,如今任何GUI执行的管理任务(例如控制系统,访问注册表、系统日志和数字签名证书等数据)都能通过PowerShell脚本来完成了,如果你的系统是WinXP/Vista/2003/2008,只需到http: //support.microsoft.com/kb/968929下载安装PowerShell2.0,即可使用这个新一代的命令行工具!
一、PowerShell是何方神圣?
PowerShell是CMD的升级版,类似C++语言,提供了200多条命令、还有循环、条件、流控制和变量赋值等语言结构,可以让你创建各种复杂的脚本去完成任务。它支持完全交互式环境,可在提示符下逐条键入命令执行,例如输入命令get-process回车,系统返回该命令结果,也可以将多条命令写在同一个脚本文件中连续执行,脚本文件的文件扩展名为 .ps1,在命令提示符下键入该脚本名称(文件扩展名可选)即可自动连续执行脚本中的所有命令;命令执行的结果能输出到外壳程序窗口、文件或打印机中,还能使用管道运算符 (|) 输出到其他命令中。
二、启动PowerShell
在Win7中点击“开始→所有程序”,在“附件”中有个Windows PowerShell,点击展开Windows PowerShell,里面有Windows PowerShell ISE和Windows PowerShell这两个选项(图1),后者是CMD那样的命令行模式界面,前者是图形化的PowerShell开发环境、包含了调试功能和交互式控制台,适合PowerShell编程的用户使用。
除了以上方法能启动PowerShell,在传统的CMD窗口中输入PowerShell回车也能启动PowerShell,与CMD不同,PowerShell的提示符是PS开头的(图2);
如要启动PowerShell ISE,可以点击“开始→所有程序→附件→Windows PowerShell→Windows PowerShell ISE”,这是一个集成的脚本环境(图3),里面有3个窗格,在顶部窗格中你可以练习编程创建或编辑脚本,中间是运行结果,最下方窗格中能输入运行 PowerShell命令。
三、PowerShell支持哪些命令?
启动PowerShell后,在窗口中输入get-command回车会显示PowerShell的所有命令,按照命令的类型、名称和描述一行一个命令列出清单(图4),有Alias、Cmdlet、Function三种命令类型,其中cmdlet命令有129条,这是用于操作对象的单功能命令,其书写格式是由-分隔的动词和名词,例如Get-Process、Start-Service等,大多数 cmdlet都非常简单,它们设计为与其他 cmdlet 组合使用,例如Get-Process仅显示当前系统内的进程,输入Get-Process|findstr “svchost”(图5),就会将Get-Process命令的结果传递到 Findstr 命令,用管道运算符 (|) 将其左侧命令的结果发送到其右侧的命令,这样只会列出含有“svchost”的进程。如要查看某命令的详细用法可使用get-help命令,例如输入 get-help get-process回车即可显示该命令的名称、摘要、语法、详细说明、相关链接及备注。
PowerShell能管理系统服务、操作注册表、进行众多的网络相关操作,可以方便地查看和结束系统内的进程,例如输入get- process就会列出系统中进程的句柄、进程名、进程占用处器时间和进程ID,如要结束某个或多个进程,只需先用get-process查看该进程的 ID,然后输入Stop-process,再根据提示输入一个或多个进程的ID,按下回车后这些进程即可被结束。
PowerShell还允许用别名来启动某命令和系统内建的工具,例如你输入命令set-alias gp get-process,可将gp设置为get-process的别名,以后输入gp即可启动get-process了,再如你输入命令set- alias ca calc将ca设置为计算器calc的别名,以后输入ca即可启动计算器。
四、语法与范例
下面给出一些PowerShell命令范例:
功能
格式和备注
范例
数学运算
输入要计算的表达式,结果就会出来的
PS C:\> 105+20
PS C:\> (2+3*4)/512
输出文本
PowerShell不需要打印语句,在要输出的文本前后加上引号即可
PS C:\> “hello”
大小写转换
将字串转为英文大写字母”HELLO”
PS C:\> “hello”.ToUpper()
插入字串
在字串的第1个字符后插入字串
PS C:\> “hello”.Insert(1, “my”)
输出结果存储到临时文件
计算结果保存到lbb.txt文件中
PS C:\>(1-2)*3/4 > c:\lbb.txt
列出文件中的内容
用type命令将文件的结果取回
PS C:\>type c:\lbb.txt
运算结果存储到变量中
运算结果存储到变量x中,以后可调用这个变量x
PS C:\> $x=(3-1)*2
变量运算
变量x中数据与3进行运算
PS C:\> $x/3
数组
将当前目录下的目录项对象集合保存到dirs数组中
PS C:\> $dirs=dir
数组访问
PowerShell数组下标是从0开始的,这是返回dirs中保存的第一个目录项对象
PS C:\> $dirs[0]
访问注册表
PowerShell中,HKEY_LOCAL_MACHINE 配置单元映射到 HKLM: 驱动器,而 HKEY_CURRENT_USER 配置单元映射到 HKCU: 驱动器
PS C:\> cd hklm:
PS HKLM:\> dir
访问证书存储区
证书存储区映射到 Cert: 驱动器
PS C:\> cd cert:
PS cert:\> dir
等待calc程序执行结束
PS C:\> $processToWatch = get-process calc
PS C:\> $processToWatch.WaitForExit()
管道运算符 (|)应用
停止运行所有以”i”字符开头的程序
PS C:\> get-process i* | stop-process
计算当前目录下所有文件的长度总和
PS C:\>get-childitem | measure-object -property length -sum