微软的Windows系统中的 PowerShell是一款基于对象的shell,,建立在.Net框架之上,,目前支持.Net Framework 2.0.,能够运行在Windows XP SP2、Windows Vista、Windows Server 2003、Windows Server 2008等操作系统上。能够同时支持WMI, COM, ADO.NET, ADSI等已有的Windows管理模型。虽然windows7是一款桌面系统但同样可以利用PowerShell来解决许多问题。
1、命令运行
和CMD一样,我们可在“开始”菜单中找到并运行PowerShell。当然,也可以在“开始”菜单的搜索框或者“运行”框中输入PowerShell,回车后即可进入命令行模式的界面。PowerShell的运行界面和CMD类似,只是窗口大小及文字、背景颜色等有所不同,对用户来说并不“眼生”。(图1)
2、命令帮助
PowerShell在命令规范上和CMD相比还是有很大不同,应该来说命令的可读性更强,用户也更容易记忆。执行“get-command”会获取PowerShell提供的129个命令的信息,这些命令囊括了管理服务、进程、事件日志、证书、注册表以及使用WMI等系统管理的方方面面。(图2)
执行“get-help get-command”和获取特定命令的帮助信息,其中“get-command”是某一特定命令。另外,如果命令的帮助信息比较多,我们可使用“|”分屏显示,例如“get-command | more”。(图3)
就命令帮助,无疑PowerShell比CMD要丰富多了,而且PowerShell的命令参数也要比CMD下类似功能命令的参数要多,这样可便于对系统进行更多的控制。
3、应用实例
(1).通过别名来运行命令
PowerShell支持别名,对于某些比较难记的命令可设置简单的别名便于记忆。比如需要给“get-Process” 设置别名,就可以在PowerShell中输入“set-alias gp get-process”,其中gp为命令“get-process”的别名。按下回车后直接用gp就可以代替
“get-process”命令了。类似的我们可为系统中的工具设置别名,比如执行“set-alias np notepad”后,运行np就可打开记事本了。(图4)
(2).高效管理系统进程
PowerShell可以方便地查看和结束系统内的进程,这样不仅可以监控系统内的可疑进程,还可以轻松地将其关闭。要想查看当前系统的进程,在PowerShell中执行“get-process”即可,这样系统中进程的句柄、进程名、进程占用处理器时间、进程标识符(ID
)等就会显示出来。(图5)
如果要结束某个或多个进程.就需要记录下进程的唯一标识符, 在PowerShell中输入“stop-process”后根据提示输入一个或多个进程的lD。按下回车后进程即可被自动结束。(图6)
(3).强大的日志管理
PowerShell在日志管理方面非常强大,它可以访问所有的系统日志并更加用户需要进行排序或者筛选。比如PowerShell中执行“Get-EventLog security | more”会分屏显示但其系统的安全日志。执行“执行“Get-EventLog system -newest 50”返回最新50条系统日志。(图7)
下面列举一个稍微复杂一点的例子,比如从结果中搜索匹配事件ID为“1101”的事件日志可分别执行下面两条语句即可。
$e = get-eventlog -newest 500 -logname application
$e | where-object {$_.EventID -match "1101"}
(图8)
PowerShell比较有趣的一点,它不仅能够访问本地日志而且也能够访问和操作远程服务器中的日志。执行下列语句:
(new-object system.diagnostics.eventlog ("security","JP-pc")).entries | select
-last 10
会返回JP-PC的主机上的最新的10条安全日志。
(图9)
如果要清除JP-PC远程主机上的所有安全日志可执行:
(new-object system.diagnostics.eventlog("security","JP-pc")).clear()
再次执行(new-object system.diagnostics.eventlog ("security","JP-pc")).entries查看JP-PC上的所有安全日志都被删除。
(图10)
总结:通过对PowerShell进行Windows 7系统管理的初步体验,可以看到PowerShell在功能上要比CMD强大得多,也并不是特别复杂和难以上手。PowerShell在脚本编写方面也更加灵活。虽然PowerShell完全取代CMD还需要时间,但用户掌握PowerShell无疑会极大地提升系统管理效率。