1、2022年年12月月3日日第第1010章章 Windows PowerShell Windows PowerShell 脚本编脚本编程程10.1 PowerShell概述概述10.1.1 PowerShell简介简介10.1.2 PowerShell的运行环境的运行环境10.2 PowerShell 的安装及配置的安装及配置10.2.1 在在Windows Server 2008中安装中安装PowerShell10.2.2 使用使用VBScript验证安装验证安装10.2.3 配置配置PowerShell10.2.4 PowerShell的使用运行的使用运行10.3获取获取Windows Po
2、wershell帮助帮助10.4Powershell cmdlet命令命令第第1010章章 Windows PowerShell Windows PowerShell 脚本编脚本编程程10.4.1cmdlet介绍介绍10.4.2cmdlet中的一些常用命令中的一些常用命令10.5 PowerShell脚本语言语法脚本语言语法10.5.1 使用变量和常量使用变量和常量10.5.2 使用使用For语句语句10.5.3 使用判断语句使用判断语句10.5.4 使用数据类型使用数据类型10.6 使用使用PowerShell管理管理Windows10.6.1查看网络设置查看网络设置10.6.2 配置配置D
3、NS服务器设置服务器设置10.6.3 添加用户到域组添加用户到域组【本章提要本章提要】Windows PowerShell的概述的概述 PowerShell 的安装及配置的安装及配置 如何使用如何使用PowerShell管理管理Windows基本内容基本内容 可以初步地将可以初步地将Windows PowerShell理解为理解为微软早期版本操作系统中的微软早期版本操作系统中的CMD.exe命令工命令工具集,但与此相比,具集,但与此相比,Windows PowerShell的功能更加强大,使用方式更加灵活。的功能更加强大,使用方式更加灵活。Windows PowerShell作为作为Windo
4、ws Server 2008提供的重大改进之一,已成为提供的重大改进之一,已成为Windows Server 2008的一个组件。本章将的一个组件。本章将讨论讨论PowerShell的基本概念、特点及语法,的基本概念、特点及语法,并介绍如何利用并介绍如何利用PowerShell对对Windows进进行基本管理。行基本管理。10.1 PowerShell10.1 PowerShell概述概述 10.1.1 PowerShell简介简介 Windows PowerShell包括一个全新的基于任务包括一个全新的基于任务的命令行外壳,以及特别设计的用于系统管理的脚的命令行外壳,以及特别设计的用于系统管
5、理的脚本语言。它构建于本语言。它构建于.NET Framework的基础之上的基础之上,因此,因此Windows PowerShell也可以运行在支持也可以运行在支持.NET Framework的操作系统平台上的操作系统平台上。Windows PowerShell内置的命令为内置的命令为cmdlets,用用户可以使用户可以使用cmdlets命令以命令行的方式来管理计命令以命令行的方式来管理计算机,而且算机,而且Windows PowerShell还具有完整的还具有完整的用户开发的脚本语言和丰富的表达式解析程序。用户开发的脚本语言和丰富的表达式解析程序。10.1.2 PowerShell10.1
6、.2 PowerShell的运行环境的运行环境目前可以安装目前可以安装Windows Powershell程序包的系统程序包的系统如下:如下:1.安装有安装有SP2补丁程序包的补丁程序包的Windows XP。2.安装有安装有SP1补丁程序包的补丁程序包的Windows Server 2003 3.Windows Vista及及Windows Server 2008。另外由于另外由于Windows Powershell构建于构建于Microsfot.NET框架之上,因此安装该工具包需要框架之上,因此安装该工具包需要Microsfot.NET Framework2.0及以上版本的环境及以上版本的
7、环境。10.2 PowerShell 10.2 PowerShell 的安装及配置的安装及配置10.2.1 在在Windows Server 2008中安装中安装PowerShell 1.选择选择“开始开始”|“所有程序所有程序”|“管理工具管理工具”|“服务服务器管理器器管理器”菜单命令菜单命令 2.选择选择“功能功能”选项,右侧选择选项,右侧选择“添加功能添加功能”,便,便会弹出会弹出“添加功能向导添加功能向导”窗口。窗口。3.在在“添加功能向导添加功能向导”窗口中间的列表框中,选择窗口中间的列表框中,选择“Windows Powershell”,然后单击,然后单击“下一步下一步”按钮。安
8、装向导就会自动安装,并将安装完成的结按钮。安装向导就会自动安装,并将安装完成的结果反馈给用户。果反馈给用户。10.2.2 10.2.2 使用使用VBScriptVBScript验证安装验证安装 因为因为Windows Powershell目前没有被默认安装在目前没有被默认安装在微软已发布的任何操作系统上,因此在使用前,需微软已发布的任何操作系统上,因此在使用前,需要确认目标平台是否已经安装了要确认目标平台是否已经安装了Windows Powershell。运行脚本步骤:。运行脚本步骤:方法一:将脚本复制到方法一:将脚本复制到C盘根目录下,点击盘根目录下,点击“开始开始”菜单,选择菜单,选择“运
9、行运行”,输入,输入“cmd”回车,再输回车,再输入命令入命令“c:/FindPowerShell.vbs”回车了;回车了;方法二:直接双击该脚本文件运行。方法二:直接双击该脚本文件运行。如果系统安装了如果系统安装了PowerShell,脚本会显示,脚本会显示“PowerShell is present on your computer”的字样。的字样。10.2.3 10.2.3 配置配置PowerShellPowerShell创建创建Windows Powershell配置文件配置文件Windows Powershell的配置文件中可以保存很的配置文件中可以保存很多设置,这些内容可以保存在多
10、设置,这些内容可以保存在psconsole文件中。文件中。如果要到处这些如果要到处这些psconsole配置文件,可以使用配置文件,可以使用Export-Console cmdlet命令。方法如下:首先命令。方法如下:首先启动安装好的启动安装好的Powershell,在命令窗口中输入如下在命令窗口中输入如下命令并回车:命令并回车:PS C:Export-Console myconsole10.2.3 10.2.3 配置配置PowerShellPowerShell配置配置Windows Powershell启动选项启动选项Windows Powershellde 启动方式有很多,如果启动方式有很
11、多,如果双击默认的双击默认的Windows Powershell图标后启动的图标后启动的窗口可以满足需要,直接使用即可。另外,我们窗口可以满足需要,直接使用即可。另外,我们还可以使用不同的配置文件启动还可以使用不同的配置文件启动Windows Powershell,甚至可以在运行某个,甚至可以在运行某个Windows Powershell命令后自动退出。如果需要启动特定命令后自动退出。如果需要启动特定版本的版本的Windows Powershell,则可以在启动时,则可以在启动时为为version参数提供不同的值参数提供不同的值。10.2.4 PowerShell10.2.4 PowerShe
12、ll的使用运行的使用运行 安装及配置好安装及配置好Powershell之后,按照如下方法运行:之后,按照如下方法运行:方法方法1:选择:选择“开始开始”-“所有程序所有程序”-“Windows Powershell 1.0”-“Windows Powershell”菜单命令,即可打开,如图所示。菜单命令,即可打开,如图所示。方法方法2:选择:选择“开始开始”-“运行运行”菜单命令,在弹出的菜单命令,在弹出的对话框中输入对话框中输入“Powershell”即可启动。即可启动。方法方法3:在命令提示符环境下,输入:在命令提示符环境下,输入“Powershell”即可启即可启动动10.3 10.3
13、获取获取Windows PowershellWindows Powershell帮助帮助 方法方法1:Windows Powershell安装后自带的帮助安装后自带的帮助文档。在文档。在Windows Powershell安装完毕后,在开安装完毕后,在开始菜单中就包含了帮助文档的快捷方式。始菜单中就包含了帮助文档的快捷方式。方法方法2:获取帮助的内置命令。:获取帮助的内置命令。Help命令:显示命令列表或某一命令的帮助信息命令:显示命令列表或某一命令的帮助信息。Get-help命令:显示有关命令:显示有关Windows Powershell和概念的帮助。和概念的帮助。方法方法3:微软官方网站中
14、的:微软官方网站中的Windows Powershell专题等网站专题等网站。10.4 Powershell cmdlet10.4 Powershell cmdlet命令命令 10.4.1 cmdlet介绍介绍 Windows Powershell支持完全的命令行交互式(支持完全的命令行交互式(CLI)环境。在命令提示符下输入命令后,系统将)环境。在命令提示符下输入命令后,系统将处理该命令并将结果显示输出在外壳程序窗口中。处理该命令并将结果显示输出在外壳程序窗口中。cmdlet是指由是指由Windows Powershell团队创建的团队创建的原生命令,这些命令类似可执行程序,但因为内建原生命
15、令,这些命令类似可执行程序,但因为内建于于Windows Powershell中,因此非常易于使用。中,因此非常易于使用。Windows Powershell自带自带120多个多个cmdlet,可,可以帮助网络管理员在不用学习以帮助网络管理员在不用学习Windows Powershell脚本语言的情况下充分享受到脚本语言的情况下充分享受到Windows Power shell带来的各种便利带来的各种便利。10.4.2 cmdlet10.4.2 cmdlet中的一些常用命令中的一些常用命令1、可用的、可用的cmd和和UNIX命令命令 可以利用如下方法查看这些别名所对应的可以利用如下方法查看这些别
16、名所对应的Windows Powershell的实际命令:的实际命令:Get-alias 例:例:PS C:UsersAdministratorget-alias cat10.4.2 cmdlet10.4.2 cmdlet中的一些常用命令(续)中的一些常用命令(续)2、格式控制命令、格式控制命令 Windows Powershell还提供了一组用于控制特定还提供了一组用于控制特定对象的显示属性的对象的显示属性的cmdlet命令。他们包括命令。他们包括Format-Wide、Format-List、Format-Table和和Format-Custom。Format-Wide:将对象的格式设置为
17、只能显:将对象的格式设置为只能显示每个对象的一个属性的宽表。示每个对象的一个属性的宽表。Format-List:将输出的格式设置为属性列表:将输出的格式设置为属性列表,其中每个属性均各占一行显示。,其中每个属性均各占一行显示。Format-Table:将输出的格式设置为表。:将输出的格式设置为表。Format-Custom:使用自定义视图来设置输:使用自定义视图来设置输出的格式出的格式。10.4.2 cmdlet10.4.2 cmdlet中的一些常用命令(续)中的一些常用命令(续)3、重定向数据类命令、重定向数据类命令 默认情况下,默认情况下,Windows Powershell的大部分命的大
18、部分命令是将数据输出到屏幕显示。而重定向数据类的命令是将数据输出到屏幕显示。而重定向数据类的命令可将数据重新发送到另外的输出设备。这些命令令可将数据重新发送到另外的输出设备。这些命令主要包括主要包括Out-Host、Out-Null、Out-Printer和和Out-File。Out-Host:将输出发送到将输出发送到Windows Powershell主机进行显示。主机将在命令行显示输出。由于主机进行显示。主机将在命令行显示输出。由于Out-Host是默认设置,因此除非想使用其参数来是默认设置,因此除非想使用其参数来更改显示,否则不需要指定它。主要使用该命令实更改显示,否则不需要指定它。主要
19、使用该命令实现数据分页。现数据分页。10.4.2 cmdlet10.4.2 cmdlet中的一些常用命令(续)中的一些常用命令(续)Out-Null:删除输出,不将其发送到控制台。如:删除输出,不将其发送到控制台。如果不需要获取运行命令输出的数据,则可以放弃这果不需要获取运行命令输出的数据,则可以放弃这些数据,此时些数据,此时Out-Null命令就很有作用。命令就很有作用。Out-Printer:将输出发送到默认打印机或备用打:将输出发送到默认打印机或备用打印机(如果制定了打印机)。通过制定打印机的显印机(如果制定了打印机)。通过制定打印机的显示名称,可以使用任何基于示名称,可以使用任何基于W
20、indows的打印机。的打印机。无需指定任何种类的打印机端口映射,设置无需指无需指定任何种类的打印机端口映射,设置无需指定实际的物理打印机。定实际的物理打印机。Out-File:将输出发送到文件。如果需要使用它的:将输出发送到文件。如果需要使用它的参数,可以使用此命令而不是重定向运算符参数,可以使用此命令而不是重定向运算符()。)。10.4.2 cmdlet10.4.2 cmdlet中的一些常用命令(续)中的一些常用命令(续)4、导航定位命令、导航定位命令 在在Windows Powershell中提供了导航的命令。这些导航是指在驱动中提供了导航的命令。这些导航是指在驱动器之间更换位置的操作器
21、之间更换位置的操作。在文件系统中导航在文件系统中导航Set-Location:将当前位置更换为制定路径。其别名为:将当前位置更换为制定路径。其别名为cd。Get-Childitem:获取某个位置中的子项。其别名为:获取某个位置中的子项。其别名为dir和和ls。Get-Item:获取位于制定位置的项的内容。:获取位于制定位置的项的内容。New-Item:在命名空间中创建新项(包括文件或文件夹或注册表项等):在命名空间中创建新项(包括文件或文件夹或注册表项等)。此命令还可以设置新项的值。此命令还可以设置新项的值。Remove-Item:删除指定的项。可以删除一个或多个项(包括文件、目:删除指定的项
22、。可以删除一个或多个项(包括文件、目录、注册表项、别名、证书和函数)。录、注册表项、别名、证书和函数)。Copy-Item:将一个位置复制到命名空间的另一个位置。其中符号:将一个位置复制到命名空间的另一个位置。其中符号“.”表示当前目录;符号表示当前目录;符号“*”表示目录内容;表示目录内容;$home表示目录的内置变量;表示目录的内置变量;$pshome表示表示Windows Powershell安装目录的内置变量。安装目录的内置变量。10.4.2 cmdlet10.4.2 cmdlet中的一些常用命令(续)中的一些常用命令(续)在注册表中导航在注册表中导航 可以使用与文件系统驱动器中相同导
23、航方法在可以使用与文件系统驱动器中相同导航方法在Windows注册表中导航。在注册表中导航。在Windows Powershell中,注册表项中,注册表项“HKEY_LOCAL_MACHINE”映射到映射到Windows Powershell HKLM:驱动器,而注册表项驱动器,而注册表项“HKEY_CURRENT_USER”映射到映射到Windows Powershell HKCU:驱动器。驱动器。如下图,表示在注册表项中进行导航。如下图,表示在注册表项中进行导航。10.4.2 cmdlet10.4.2 cmdlet中的一些常用命令(续)中的一些常用命令(续)在证书存储区中导航在证书存储区中
24、导航 可以在计算机上的数字签名证书存储区中导航。证可以在计算机上的数字签名证书存储区中导航。证书存储区映射到书存储区映射到Windows Powershell Cert:驱:驱动器。动器。如图所示,表示在证书存储区中导航。如图所示,表示在证书存储区中导航。10.4.2 cmdlet10.4.2 cmdlet中的一些常用命令(续)中的一些常用命令(续)在其他驱动器中导航在其他驱动器中导航 除了上述除了上述3类驱动器外,类驱动器外,Windows Powershell还还提供了其他有用的驱动器,其中包括别名驱动器提供了其他有用的驱动器,其中包括别名驱动器(Alias:)、环境提供程序驱动器()、环
25、境提供程序驱动器(Env:)、函数)、函数驱动器(驱动器(Funciton:)、和变量驱动器)、和变量驱动器(Variable:)。使用相同的方法就可以在这些驱)。使用相同的方法就可以在这些驱动器中导航。动器中导航。10.5 PowerShell10.5 PowerShell脚本语言语法脚本语言语法 10.5.1 使用变量和常量使用变量和常量 Windows Powershell中变量的默认规则是:在使中变量的默认规则是:在使用某一变量之前,没必要提前声明该变量,只需要在使用变用某一变量之前,没必要提前声明该变量,只需要在使用变量保存数据时声明即可。并且所有变量名称前都必须包含一量保存数据时声
26、明即可。并且所有变量名称前都必须包含一个美元符号。个美元符号。Windows Powershell中常量类似于变量,但又有中常量类似于变量,但又有两点区别:常量的值永远不会发生变化;常量无法被删除。两点区别:常量的值永远不会发生变化;常量无法被删除。常量可以使用常量可以使用Set-Variable cmdlet创建,指派创建,指派-option参参数即可创建常量。数即可创建常量。例:例:$computername=“mycomputer”Set-Variable name intDriveType value 3 option constant 这里设置了变量这里设置了变量computerna
27、me和常量和常量intDriveType。10.5.2 10.5.2 使用使用ForFor语句语句 For语句可以用于控制脚本块在符合要求的情况下语句可以用于控制脚本块在符合要求的情况下执行。大部分时候,可以使用执行。大部分时候,可以使用for语句执行需要重语句执行需要重复多次的操作。复多次的操作。For语句的结构例可以使用小括号语句的结构例可以使用小括号将需要求值的表达式于包含在大括号中的代码分隔将需要求值的表达式于包含在大括号中的代码分隔开。如下例:开。如下例:for ($a=1;$a le 3;$a+)“hello”for括号里的表达式主要分成三部分:第一部分是括号里的表达式主要分成三部
28、分:第一部分是变量变量$a,并为其赋值,并为其赋值“1”;第二部分则包含了计;第二部分则包含了计算条件,表示变量算条件,表示变量$a值不大于数字值不大于数字“3”,这样代,这样代码块部分包含的命令才会被运行;第三部分则表示码块部分包含的命令才会被运行;第三部分则表示给变量给变量$a的值增加的值增加“1”。这行代码最后输出。这行代码最后输出3个个“hello”的字样。的字样。7.5.3 7.5.3 使用判断语句使用判断语句 在脚本中对分支的控制进行判断是一项基本技术,在脚本中对分支的控制进行判断是一项基本技术,事实上,这也是自动化操作的基础。这个过程中需事实上,这也是自动化操作的基础。这个过程中
29、需要判断并评估每种情况,并决定需要进行的操作。要判断并评估每种情况,并决定需要进行的操作。ifelse是最基本的判断语句,这个结构容易被理是最基本的判断语句,这个结构容易被理解,适合一般的会话。例如:可以考虑下列两个天解,适合一般的会话。例如:可以考虑下列两个天气情况:气情况:if(sunny and warm)go to park elseif(cloudy and cool)go shopping else stay at home7.5.3 7.5.3 使用判断语句使用判断语句(续续)在其他编程语言中,在其他编程语言中,switch也叫也叫“选择情况选择情况”语句(语句(select c
30、ase),它与),它与ifelse语句不同,它可以提供一系列可能的语句不同,它可以提供一系列可能的匹配条件来进行判断选择。这种方法的本质也可以看成匹配条件来进行判断选择。这种方法的本质也可以看成ifelseifelse语句。语句。在使用在使用switch语句的时候,需要判断的条件会包含在括号语句的时候,需要判断的条件会包含在括号内。然后,每个需要判断条件都会放在代码块内大括号的内内。然后,每个需要判断条件都会放在代码块内大括号的内部,如下所示的一个简单例子:部,如下所示的一个简单例子:$a=3;switch($a)1“one detected”2“two detected”3“three de
31、tected”因为这里的变量因为这里的变量a被赋值为被赋值为3,所以在,所以在switch语句中,它会语句中,它会选择大括号中符合条件的选择大括号中符合条件的3执行执行“three detected”。7.5.4 7.5.4 使用数据类型使用数据类型 Windows PowershellWindows Powershell是一种强类型语言,不过在表现上上却是一种强类型语言,不过在表现上上却像是无类型的。这是因为像是无类型的。这是因为Windows PowershellWindows Powershell在监测数据类在监测数据类型并采取相应操作方面做得很好。如果某个东西是字符串,型并采取相应操作
32、方面做得很好。如果某个东西是字符串,Windows PowershellWindows Powershell就会将其当作字符串处理。就会将其当作字符串处理。例如,考虑如下三条语句:例如,考虑如下三条语句:PS C:1+1 PS C:1+1 PS C:12:00+:30 PS C:12:00+:30 PS C:a+b PS C:a+b 只有第一条语句能成功执行,因为在只有第一条语句能成功执行,因为在Windows PowershellWindows Powershell中中,可以将内容正确监测为数字,并允许进行加法操作,然而,可以将内容正确监测为数字,并允许进行加法操作,然而,时间和字母是无法相
33、加的。但是如果将字母,时间和字母是无法相加的。但是如果将字母a a和和b b用双引号用双引号引用,然后相加,操作就会成功。引用,然后相加,操作就会成功。10.6 10.6 使用使用PowerShellPowerShell管理管理WindowsWindows 因为因为Windows Powershell中的脚本在默认情况下中的脚本在默认情况下并没有启用,因此在部署或运行任何脚本或命令之并没有启用,因此在部署或运行任何脚本或命令之前,还需要验证平台对脚本的支持级别。如果没有前,还需要验证平台对脚本的支持级别。如果没有启动支持就尝试运行启动支持就尝试运行Windows Powershell脚本,脚本
34、,就会看到错误信息。脚本也无法运行。在就会看到错误信息。脚本也无法运行。在Windows Powershell中,通过使用中,通过使用Set-ExecutionPoliy cmdlet,可以设置,可以设置4个不同级别个不同级别的执行策略,这的执行策略,这4个级别的详细信息如下表所示。个级别的详细信息如下表所示。10.6.110.6.1查看网络设置查看网络设置 下面的一个脚本例子GetNetAdapterStatus.ps1,可以用于产看本地计算机上现有的每个网络适配器的状态。完整的GetNetAdapterStatus.ps1脚本见教材P215页。10.6.2 10.6.2 配置配置DNSDN
35、S服务器设置服务器设置 在微软的域名系统(在微软的域名系统(DNS)中包含很多设置,虽然)中包含很多设置,虽然其中大部分设置很少需要调整,但数量众多的选项其中大部分设置很少需要调整,但数量众多的选项卡使得重要选项很容易被遗漏,此时使用卡使得重要选项很容易被遗漏,此时使用Windows Powershell脚本就可以用批量的模式同脚本就可以用批量的模式同时调整多个选项,通过使用时调整多个选项,通过使用SetDNSServerConfig.ps1脚本,可以调整脚本接脚本,可以调整脚本接受对受对DNS服务器配置的任何属性或值的设置。通过服务器配置的任何属性或值的设置。通过此脚本,还可以同时调整多个参
36、数。此脚本,还可以同时调整多个参数。完整的完整的SetDNSServerConfig.ps1脚本见教材脚本见教材P217页。页。10.6.3 10.6.3 添加用户到域组添加用户到域组 首先要连接到组,再将用户添加到域组中。在教材首先要连接到组,再将用户添加到域组中。在教材所示的所示的AddUserToGroup.ps1脚本,开头用到的脚本,开头用到的是是param()语句,在这里可以提供用户和组的名语句,在这里可以提供用户和组的名称以及他们所在的域名称。其代码见教材称以及他们所在的域名称。其代码见教材P219页页。习题习题 1010 10.1 什么是什么是PowerShell?它的运行环境是
37、什么?它的运行环境是什么?10.2 什么是什么是Powershell cmdlet命令?它有哪命令?它有哪些常用命令?其语法是什么?些常用命令?其语法是什么?10.3 简要描述如何配置简要描述如何配置Powershell。10.4 请描述创建请描述创建Powershell脚本及其运行方法脚本及其运行方法。实训实训10 10 使用使用PowerShellPowerShell管理管理WindowsWindows网络网络 10.1 在在Windows Server 2008中安装好中安装好PowerShell,并对其进行初始配置。,并对其进行初始配置。10.2 利用利用PowerShell脚本查看脚本查看DNS设置设置,并对其进行配置。,并对其进行配置。10.3 使用使用PowerShell编程,创建域用户。编程,创建域用户。