Windows系统图形化界面(GUI)的优点和缺点都很明显。一方面,GUI给系统用户带来了操作上的极大便利,用户只需要单击按钮或图标就能使用操作系统的所有功能;另一方面,GUI给系统管理员带来了烦琐的操作步骤,例如修改Windows系统终端的登录密码,需要依次单击“控制面板”“用户账户”“修改账户密码”等一系列选项,如果需要修改100台终端的登录密码,将会耗费大量时间。
微软公司正是基于改进Windows操作系统的管理效率问题而研发了PowerShell。为了方便理解,我们可以把PowerShell当成一个命令行窗口(Shell),管理员既可以在这个Shell中输入命令运行,也可以直接执行脚本程序,从而自动化地完成GUI所能完成的所有操作,极大地提高了工作效率。例如,修改终端的登录密码,在PowerShell里输入如下命令就可以完成。
Set-LocalUser "administrator" -Password "password"
PowerShell具有无须安装、几乎不会触发杀毒软件、可以远程执行、功能齐全等特点,从网络安全攻防的角度,对攻击方和防守方来说,它都是不可多得的系统工具,值得读者研究学习。
Windows PowerShell是一种命令行外壳程序和脚本环境,它内置在每个受支持的Windows版本中(Windows 7、Windows 2008 R2和更高版本)。PowerShell需要.NET环境的支持,同时支持.NET对象,使命令行用户和脚本编写者可以利用.NET Framework的强大功能,其可读性、易用性位居当前所有Shell之首。也可以把PowerShell看作命令行提示符cmd.exe的扩充。
可以输入Get-Host或者
PowerShell支持的命令非常多,难以记忆使用,我们经常需要借助Get-Help和Get-Command命令查找所需的命令,并正确使用。所以Get-Help和Get-Command这两个命令被称为“最重要的两个PowerShell命令”。
当对某个命令一无所知的时候,就用Get-Help命令试一下,如图所示,它能够列出命令的正确使用方法。
使用语法如下:
Get-Help [[-Name] <string>]
下面对参数进行说明。
— [-Name] <string>:功能是请求指定命令的帮助信息,例如-Name Get-Process。
— 参数为空时列出Get-Help自己的使用帮助。
Get-Command命令可以一键列出PowerShell支持的所有命令,同时能按照关键词缩小命令的查找范围,如图所示。
使用语法如下:
Get-Command [[-Name] <string[]>]
下面对参数进行说明。
— [-Name] <string[]>:检索指定名称的cmdlet或命令元素,参数“<string[]>”就是指定的名称,例如Get-Process。
— 参数为空时列出PowerShell支持的所有命令。
这里通过一个实例梳理Get-Help命令和Get-Command命令的使用技巧。
在本例中,假设我们在目标计算机中执行了恶意程序“Calculator”,需要查看Calculator进程是否正在运行,最后还需要结束该进程。与此同时,我们不知道应该使用哪个命令,所以只能借助Get-Help命令和Get-Command命令逐步查找,具体步骤如下。
第一步:通过Get-Command命令查找能够“查看进程信息”的命令。命令如下:
Get-Command -CommandType cmdlet Get-*
如前文所述,PowerShell使用统一的“动词-名词信息”命令格式,所以查看信息以“Get-”开头。通过查看命令列表,确定框中的Get-Process命令就是查看进程信息的命令,如图所示。
第二步:通过Get-Help命令查看如何使用Stop-Process命令,如图所示。
Get-Help Stop-Process
第三步:通过Get-Process命令查看是否存在Calculator进程。命令如下:
Get-Process -Name Calculator
如果存在Calculator进程,则列出;如果不存在,则报错,如图所示。
第四步:通过Get-Command命令查找能够“结束进程”的命令。命令如下:
方法同第一步,进而确定Stop-Process就是结束进程的命令,如图所示。
Get-Command Stop-Process
第五步:通过Get-Help命令查看如何使用Stop-Process命令。
方法同第二步,使用如下命令查看Stop-Process语法,如图8-30所示。
Get-Help Stop-Process
第六步:通过Stop-Process命令结束Calculator进程。
先使用Stop-Process命令结束进程,再使用Get-Process命令确定进程是否终结,如图所示。
Stop-Process -name Calculator
Get-Process Calculator
说到这里,部分读者可能发现了Stop-Process命令具有造成拒绝服务攻击的危险,这里简单介绍一下,假设我们运行了下面这条命令:
Get-Process | Stop-Process
你能想象结果会怎样吗?会宕机!操作系统会尝试逐个终止所有的进程,包括系统的核心进程,所以我们的计算机很快就会进入蓝屏“死机”状态。
— 实验室旗下直播培训课程 —