系统维护管理中大家常在命令提示符(cmdexe)下进行操作对Windows PowerShell鲜有接触或者使用其实在微软的计划中Windows PowerShell将成为CDM的继任者是下一代命令行工具Windows PowerShell目前最高版本为并且已经集成到Windows Server 及Windows 中Windows PowerShell使得IT管理员更容易地控制系统管理和加速自动化作为系统管理员应该掌握和使用它笔者因为工作需要开始学习Windows PowerShell下面和大家分享几个非常实用的Windows PowerShell应用实例
Windows PowerShell的安装
在Windows Server 中已经集成了Windows PowerShell不过默认情况下并没有安装大家可以在服务管理器中进行安装而不用从网上下载对于Windows 的用户系统已经默认安装了Windows PowerShell 直接使用就可以了对于其他版本的Windows用户可以微软的网站x?FamilyID=deacbbefacfdaabc&DisplayLang=en下载
善用Windows PowerShell帮助
Windows PowerShell是新的命令和脚本规范初学者会有一定的陌生感不容易上手其实善用Windows PowerShell帮助可以帮助大家尽快了解其命令规范
运行Windows PowerShell输入并执行getcommand会返回Windows PowerShell提供的个命令的信息这些命令囊括了管理服务进程事件日志证书注册表以及使用 Windows Management Instrumentation (WMI)等系统管理的方方面面如果要获取其中的某个命令的使用帮助信息比如我们要获取getcommand这个命令的使用帮助可以执行命令gethelp getcommand获取其他命令的帮助信息的方法类似(图)
图 Windows Powershell
另外为大家提供几个很实用的技巧如果命令的帮助信息比较多一屏呈不下可用通道符号|进行分屏显示例如getcommand | more将逐屏显示Windows PowerShell所有的程序集gethelp getservice full将会显示getservice这一程序集的详细帮助(包括示例)gethelp getservice –parameter *将会列出GetService程序集的所有参数及参数说明help getservice –parameter *作用和前面一个命令一样但是将会逐屏显示有时基于需要我们还需要使用通配符Windows PowerShell中的通配符使用与CMD有区别可以执行命令gethelp about_wildcard获取通配符使用的帮助信息(图)
图 Windows Powershell
活用别名提升操作效率
Windows PowerShell中的命令虽然可读性强但是命令比较长输入起来比较费事这样我们可以根据需要创建个性的易记的命令别名来提高命令输入的效率降低命令输入错误的概率
比如我们要为getservice命令创建别名实现输入gs可调用该命令可Windows PowerShell命令行中执行setalias gs getservice来实现这样当我们执行gs其实就是执行getservice(图)
图 Windows Powershell
除此之外我们还可以在Windows PowerShell中为系统中的应用程序创建别名这样我们调用某个程序时就不用进入其所在路径并输入程序名进行调用了例如我们要为活动目录工具dsmgmtexe创建别名ad可以在Windows PowerShell命令行中执行setalias ad c:\windows\system\dsmgmtexe其中ad就是命令别名c:\windows\system\是dsmgmtexe所在路径我们在Windows PowerShell命令行中执行ad可以看到调用了dsmgmtexe工具(图)
图 Windows Powershell
当然可以创建别名也可以删除别名比如我们要删除刚才创建的dsmgmtexe的别名ad可以在Windows PowerShell命令行下执行removeitem alias:ad即可这样当我们执行别名ad时会显示错误因为它已经被删除了(图)
图 Windows Powershell
自定义函数实现特殊需要
Windows PowerShell优于CMD的一个特性是可以创建自定义函数以实现某些特殊需要其实函数和上面的别名比较类似不过函数比别名要复杂它可以使用参数我们可以通过函数来创建复杂PowerShell命令的快捷方式比如我们创建一个名为displayRunningService的函数以显示当前服务器上正在运行的所有服务可以执行命令function displayRunningService {getservice | whereobject {$_Status eq Running}}其中function申明创建函数displayRunningService是函数名{getservice | whereobject {$_Status eq Running}}是筛选出当前所有状态为Running的系统服务即当前正在运行的服务函数创建完毕后如果此后我们要查看当前服务器中正在运行的服务只需在Windows PowerShell的命令行下执行displayRunningService即可如果要删除该函数我们只需执行RemoveItem Function: displayRunningService就可以了(图)
图 Windows Powershell
上面的例子只是Windows PowerShell自定义函数的一个简单的例子在系统管理中管理员完全可以根据自己的需要创建各种函数实现一劳永逸快速进行系统的管理和维护此外Windows PowerShell中也可创建带参数的自定义函数以满足更复杂灵活的系统管理的需要
快速访问注册表
访问注册表是Windows PowerShell一个非常实用的特性利用该功能我们可以实现对注册表的快速访问通过注册表键值了解系统状况特别是在某些特殊情况下比如注册表被锁时这应该是我们通往注册表的一条通道在Windows PowerShell的命令行下可执行cd path hklm:\可进入注册表HKEY_LOCAL_MACHINE主键路径下继续执行dir可显示HKLM主键下的各子键执行cd Software\Microsoft\Windows\CurrentVersion\Run进入系统自启动项下执行gp *将显示RUN项的属性以及下面的键值输出结果中前面四个为RUN项的属性据此管理员可进行进行分析启动项是否正常说明一下刚才输入的命令中Gp *是getitemproperty path name *的快捷方式简化的输入(图)
图 Windows Powershell
获取详细的系统信息
Windows PowerShell和系统底层函数无缝结合我们可以利用其提供的对象获取详细的系统信息比如我们要获取服务器的DNS信息可以在Windows PowerShell中执行命令GetWMIObject win_service filter name=DNS | formattable以查看当前DNS运行状态其中GetWMIObject win_service是使用WMI对象获取系统服务信息filter name=DNS是筛选其中的DNS服务当然我们可以替换ame=DNS的DNS获取其他服务信息formattable是以列表的形式显示结果另外我们还可以加入computer参数获取域中其他主机的DNS信息比如执行命令GetWMIObject win_service filter name=DNS computer | formattable可以获取域中jp主机的DNS运行信息(图)
图 Windows Powershell
总结上面六个应用实例只是Windows PowerShell应用中极少的一部分并且每一部分的实例只是其简单应并没要深入下去毫不讳言Windows PowerShell的一个非常强大的系统管理工具系统通过本文大家能够对其引起重视它进而学习它使用它提升你的系统管理维护效率