《PowerShell实例教程讲解.doc》由会员分享,可在线阅读,更多相关《PowerShell实例教程讲解.doc(526页珍藏版)》请在三一办公上搜索。
1、PowerShell实例教程认识PowerShell介绍和安装Powershell 是运行在windows机器上实现系统和应用程序管理自动化的命令行脚本环境。你可以把它看成是命令行提示符cmd.exe的扩充,不对,应当是颠覆。 powershell需要.NET环境的支持,同时支持.NET对象。微软之所以将Powershell 定位为Power,并不是夸大其词,因为它完全支持对象。其可读性,易用性,可以位居当前所有shell之首。 当前powershell有四版本,分别为1.0,2.0,3.0 ,4.0 如果您的系统是window7或者Windows Server 2008,那么PowerShe
2、ll 2.0已经内置了,可以升级为3.0,4.0。 如果您的系统是Windows 8 或者Windows server 2012,那么PowerShell 3.0已经内置了,可以升级为4.0。 如果您的系统为Windows 8.1或者Windows server 2012 R2,那默认已经是4.0了。自定义控制台右击标题栏选择”属性”弹出powershell控制台对话框。在这里有四个选项卡:选项、字体、布局和颜色。“选项”设置光标,历史记录,编辑模式的切换。控制台选项“字体”设置字体的名称和大小控制台字体“布局”设置窗口的缓冲区、窗口的大小、窗口起始坐标控制台布局“颜色”设置屏幕和对话框的背景
3、色和前景色。控制台颜色快速编辑模式和标准模式powershell控制台有两种模式,一个是快速编辑模式,一个是标准模式。快速编辑模式和标准模式的切换可以通过控制台标题栏-鼠标右击-属性-选项-编辑选项 。 Powershell标准模式鼠标右击选择标记后才能实现复制和粘切功能。 Powershell快速编辑模式可以通过鼠标左键选择任意矩形区域内的文本,并且鼠标右击实现复制功能。快捷键Powershell的快捷键和cmd,linux中的shell,都比较像。ALT+F7清除命令的历史记录PgUp PgDn显示当前会话的第一个命令和最后一个命令Enter执行当前命令End将光标移至当前命令的末尾Del
4、从右开始删除输入的命令字符Esc清空当前命令行F2自动补充历史命令至指定字符(例如历史记录中存在Get-Process,按F2,提示Enter char to copy up to,键入s,自动补齐命令:Get-Proce)F4删除命令行至光标右边指定字符处F7对话框显示命令行历史记录F8检索包含指定字符的命令行历史记录F9根据命令行的历史记录编号选择命令,历史记录编号可以通过F7查看左/右方向键左右移动光标上/下方向键切换命令行的历史记录Home光标移至命令行最左端Backspace从右删除命令行字符Ctrl+C取消正在执行的命令Ctrl+左/右方向键在单词之间移动光标Ctrl+Home删除
5、光标最左端的所有字符Tab自动补齐命令或者文件名管道和重定向管道把上一条命令的输出作为下一条命令的输入。PowerShell管道例如通过ls获取当前目录的所有文件信息,然后通过Sort -Descending对文件信息按照Name降序排列,最后将排序好的文件的Name和Mode格式化成Table输出。PS C:PStest ls | sort -Descending Name | Format-Table Name,ModeName Mode- -d.txt -a-c.txt -a-b.txt -a-ABC d-a.txt -a-重定向把命令的输出保存到文件中,为覆盖,追加。PS C:PSte
6、st Powershell Routing test.txtPS C:PStest Get-Content .test.txtPowershell RoutingPS C:PStest Powershell Routing test.txtPS C:PStest Powershell Routing test.txtPS C:PStest Powershell Routing test.txtPS C:PStest Powershell Routing test.txtPS C:PStest Powershell Routing test.txtPS C:PStest Get-Content
7、.test.txtPowershell RoutingPowershell RoutingPowershell RoutingPowershell RoutingPowershell RoutingPowershell RoutingPS C:PStestPowershell交互式数学运算我们可以把powershell当成一个计算器。象键入命令行那样输入数学表达式,回车,powershell会自动计算并把结果输出。常用的加减乘除模(+,-,*,/,%)运算和小括号表达式都支持。PS C:pstest 1+2+36PS C:pstest 0xABCD43981PS C:pstest 3.14*1
8、0*10314PS C:pstest 1+3-(2.4-5)*(7.899-4.444)12.983PowerShell也能自动识别计算机容量单位,包括KB,MB,GB,TB,PBPS C:pstest 1pb/1tb1024PS C:pstest 1tb/1gb1024PS C:pstest 1gb/1kb1048576PS C:pstest 1gb/20mb*10kb524288假如一个网站每个页面大小为80kb,统计显示每天的PV操作为800,1个月下来占用的带宽:PS C:pstest 80kb*800*30/1gb1.8310546875假如一个网站的每天人均PV操作为5,页面大小为
9、80Kb,主机提供商限制的总流量为10G,那平均每天的最大访客数为:PS C:pstest 10GB/(80KB*5)/30873.813333333333执行外部命令Powershell 能够像CMD一样很好的执行外部命令。通过netstat查看网络端口状态PS C:PS netstatActive Connections Proto Local Address Foreign Address State TCP 192.168.0.100:3049 192.168.0.88:7575 ESTABLISHED TCP 192.168.0.100:3052 192.168.0.88:7575
10、ESTABLISHED TCP 192.168.0.100:3061 192.168.0.88:7575 ESTABLISHED通过IPConfig查看自己的网络配置PS C:PS ipconfigWindows IP ConfigurationEthernet adapter Local Area Connection: Connection-specific DNS Suffix . : Link-local IPv6 Address . . . . . : fe80:b9dd:91e33:33f0:7885%10 IPv4 Address. . . . . . . . . . . : 1
11、92.168.140.100 Subnet Mask . . . . . . . . . . . : 255.255.252.0 Default Gateway . . . . . . . . . : 192.168.140.1Tunnel adapter : Connection-specific DNS Suffix . : Link-local IPv6 Address . . . . . : fe80:5efe:192.168.140.100%11 Default Gateway . . . . . . . . . :Tunnel adapter Teredo Tunneling Ps
12、eudo-Interface: Media State . . . . . . . . . . . : Media disconnected Connection-specific DNS Suffix . :route print查看路由信息PS C:PS route printIPv4 Route Table=Active Routes:Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.140.1 192.168.140.100 20 192.0.0.0 255.0.0.0 On-lin
13、k 192.0.0.1 306 192.0.0.1 255.255.255.255 On-link 192.0.0.1 306 192.255.255.255 255.255.255.255 On-link 192.0.0.1 306 192.168.140.0 255.255.252.0 On-link 192.168.140.100 276 192.168.140.100 255.255.255.255 On-link 192.168.140.100 276 192.168.143.255 255.255.255.255 On-link 192.168.140.100 276 224.0.
14、0.0 240.0.0.0 On-link 192.0.0.1 306 224.0.0.0 240.0.0.0 On-link 192.168.140.100 276 255.255.255.255 255.255.255.255 On-link 192.0.0.1 306 255.255.255.255 255.255.255.255 On-link 192.168.140.100 276=Persistent Routes: NoneIPv6 Route Table=Active Routes: If Metric Network Destination Gateway 1 306 :1/
15、128 On-link 10 276 fe80:/64 On-link 11 281 fe80:5efe:192.168.140.100/128 On-link 10 276 fe80:b965:91f3:33a0:7285/128 On-link 1 306 ff00:/8 On-link 10 276 ff00:/8 On-link=Persistent Routes: None启动CMD控制台启动CMD控制台键入cmd或者cmd.exe,退出cmd可以通过命令exit。PS C:PS cmdMicrosoft Windows Version 6.1.7601Copyright (c) 2
16、009 Microsoft Corporation. All rights reserved.C:PSexitPS C:PS查找可用的Cmd控制台命令Cmd.exe 通过 /c 来接收命令参数,在Cmd中help可以查看可用的命令,所以可以通过Cmd /c help 查找可用的Cmd控制台命令PS C:PS cmd /c help有关某个命令的详细信息,请键入 HELP 命令名ASSOC 显示或修改文件扩展名关联。ATTRIB 显示或更改文件属性。BREAK 设置或清除扩展式 CTRL+C 检查。BCDEDIT 设置启动数据库中的属性以控制启动加载。CACLS 显示或修改文件的访问控制列表(A
17、CL)。CALL 从另一个批处理程序调用这一个。CD 显示当前目录的名称或将其更改。CHCP 显示或设置活动代码页数。CHDIR 显示当前目录的名称或将其更改。CHKDSK 检查磁盘并显示状态报告。CHKNTFS 显示或修改启动时间磁盘检查。CLS 清除屏幕。CMD 打开另一个 Windows 命令解释程序窗口。COLOR 设置默认控制台前景和背景颜色。COMP 比较两个或两套文件的内容。COMPACT 显示或更改 NTFS 分区上文件的压缩。CONVERT 将 FAT 卷转换成 NTFS。您不能转换 当前驱动器。COPY 将至少一个文件复制到另一个位置。DATE 显示或设置日期。DEL 删除
18、至少一个文件。DIR 显示一个目录中的文件和子目录。DISKCOMP 比较两个软盘的内容。DISKCOPY 将一个软盘的内容复制到另一个软盘。DISKPART 显示或配置磁盘分区属性。DOSKEY 编辑命令行、调用 Windows 命令并创建宏。DRIVERQUERY 显示当前设备驱动程序状态和属性。ECHO 显示消息,或将命令回显打开或关上。ENDLOCAL 结束批文件中环境更改的本地化。ERASE 删除一个或多个文件。EXIT 退出 CMD.EXE 程序(命令解释程序)。FC 比较两个文件或两个文件集并显示它们之间的不同。FIND 在一个或多个文件中搜索一个文本字符串。FINDSTR 在多
19、个文件中搜索字符串。FOR 为一套文件中的每个文件运行一个指定的命令。FORMAT 格式化磁盘,以便跟 Windows 使用。FSUTIL 显示或配置文件系统的属性。FTYPE 显示或修改用在文件扩展名关联的文件类型。GOTO 将 Windows 命令解释程序指向批处理程序 中某个带标签的行。GPRESULT 显示机器或用户的组策略信息。GRAFTABL 启用 Windows 在图形模式显示扩展字符集。HELP 提供 Windows 命令的帮助信息。ICACLS 显示、修改、备份或还原文件和 目录的 ACL。IF 在批处理程序中执行有条件的处理过程。LABEL 创建、更改或删除磁盘的卷标。MD
20、 创建一个目录。MKDIR 创建一个目录。MKLINK 创建符号链接和硬链接MODE 配置系统设备。MORE 逐屏显示输出。MOVE 将一个或多个文件从一个目录移动到另一个目录。OPENFILES 显示远程用户为了文件共享而打开的文件。PATH 为可执行文件显示或设置搜索路径。PAUSE 停止批处理文件的处理并显示信息。POPD 还原由 PUSHD 保存的当前目录上一次的值。PRINT 打印一个文本文件。PROMPT 改变 Windows 命令提示。PUSHD 保存当前目录,然后对其进行更改。RD 删除目录。RECOVER 从损坏的磁盘中恢复可读取的信息。REM 记录批处理文件或 CONFIG
21、.SYS 中的注释。REN 重新命名文件。RENAME 重新命名文件。REPLACE 替换文件。RMDIR 删除目录。ROBOCOPY 复制文件和目录树的高级实用程序SET 显示、设置或删除 Windows 环境变量。SETLOCAL 开始用批文件改变环境的本地化。SC 显示或配置服务(后台处理)。SCHTASKS 安排命令和程序在一部计算机上按计划运行。SHIFT 调整批处理文件中可替换参数的位置。SHUTDOWN 让机器在本地或远程正确关闭。SORT 将输入排序。START 打开单独视窗运行指定程序或命令。SUBST 将驱动器号与路径关联。SYSTEMINFO 显示机器的具体的属性和配置。
22、TASKLIST 显示包括服务的所有当前运行的任务。TASKKILL 终止正在运行的进程或应用程序。TIME 显示或设置系统时间。TITLE 设置 CMD.EXE 会话的窗口标题。TREE 以图形显示启动器或路径的目录结构。TYPE 显示文本文件的内容。VER 显示 Windows 的版本。VERIFY 告诉 Windows 验证文件是否正确写入磁盘。VOL 显示磁盘卷标和序列号。XCOPY 复制文件和目录树。WMIC 在交互命令外壳里显示 WMI 信息。启动外部程序为什么可以通过notpad打开记事本,不能通过wordpad打开写字板?因为notepad.exe位于C:Windowssyst
23、em32 这个目录,而这个目录已经默认被包含在Powershell的环境变量$env:Path中。C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32Wbem;C:WINDOWSSystem32WindowsPowerShellv1.0;C:Program Files (x86)Windows Kits8.1Windows Performance Toolkit;C:Program FilesMicrosoft SQL Server110ToolsBinn;C:Program Files (x86)Microsoft SDKsTypeScript1.0;C
24、:Program FilesMicrosoftWeb Platform Installer而wordpad.exe 所在的“%ProgramFiles%Windows NTAccessorieswordpad.exe“目录却没有包含,可以先进入这个目录,再运行wordpad,或者将wordpad所在的目录加入到环境变量中,$env:Path=$env:Path+”%ProgramFiles%Windows NTAccessories”。默认键入一个字符串,powershell会将它原样输出,如果该字符串是一个命令或者启动程序,在字符串前加&可以执行命令,或者启动程序。PS C:PS lslsP
25、S C:PS &ls Directory: C:PSMode LastWriteTime Length Name- - - -d- 2011/11/23 17:25 ABC-a- 2011/11/23 17:36 14 a.txt-a- 2011/11/23 17:25 0 b.txt-a- 2011/11/23 17:25 0 c.txt-a- 2011/11/23 17:25 0 d.txt-a- 2011/11/23 17:37 242 test.txtPS C:PS cmd.execmd.exePS C:PS &cmd.exeMicrosoft Windows Version 6.1.
26、7601Copyright (c) 2009 Microsoft Corporation. All rights reserved.命令集 cmdletscmdlets是Powershell的内部命令,cmdlet的类型名为System.Management.Automation.CmdletInfo,包含下列属性和方法:NameMemberTypeDefinitionEqualsMethodbool Equals(System.Object obj)GetHashCodeMethodint GetHashCode()GetTypeMethodtype GetType()ToStringMet
27、hodstring ToString()CommandTypePropertySystem.Management.Automation.CommandTypes CommandType get;DefaultParameterSetPropertySystem.String DefaultParameterSet get;DefinitionPropertySystem.String Definition get;HelpFilePropertySystem.String HelpFile get;ImplementingTypePropertySystem.Type Implementing
28、Type get;ModulePropertySystem.Management.Automation.PSModuleInfo Module get;ModuleNamePropertySystem.String ModuleName get;NamePropertySystem.String Name get;NounPropertySystem.String Noun get;OutputTypePropertySystem.Collections.ObjectModel.ReadOnlyCollection1System.Management.Automation.PSTypeName
29、, System.Management.Automation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 OutputType get;ParametersPropertySystem.Collections.Generic.Dictionary2System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089,System.Management.Automation.ParameterMe
30、tadata, System.Management.Automation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 Parameters get;ParameterSetsPropertySystem.Collections.ObjectModel.ReadOnlyCollection1System.Management.Automation.CommandParameterSetInfo, System.Management.Automation, Version=1.0.0.0, Culture=n
31、eutral, PublicKeyToken=31bf3856ad364e35 ParameterSets get;PSSnapInPropertySystem.Management.Automation.PSSnapInInfo PSSnapIn get;VerbPropertySystem.String Verb get;VisibilityPropertySystem.Management.Automation.SessionStateEntryVisibility Visibility get;set;DLLScriptPropertySystem.Object DLL get=$th
32、is.ImplementingType.Assembly.Location;HelpUriScriptPropertySystem.Object HelpUri get=try# ok to cast CommandTypes enum to HelpCategory because string/indentifier for# cmdlet,function,filter,alias,externalscript is identical.# it is ok to fail for other enum values (i.e. for Application)$helpObject =
33、 get-help -Name ($this.Name) -Category (string($this.CommandType) -ErrorAction SilentlyContinue# return first non-null uri (and try not to hit any strict mode things)if ($helpObject -eq $null) return $null if ($helpObject.psobject.propertiesrelatedLinks -eq $null) return $null if ($helpObject.relate
34、dLinks.psobject.propertiesnavigationLink -eq $null) return $null $helpUri = string$( $helpObject.relatedLinks.navigationLink | % if ($_.psobject.propertiesuri -ne $null) $_.uri | ? $_ | select -first 1 )return $helpUricatch ;下面是全部的Cmdlets命令每个命令有一个动词和名词组成,命令的作用一目了然。NameModuleNameHelpAdd-ComputerMicro
35、soft.PowerShell.ManagementhelpAdd-ContentMicrosoft.PowerShell.ManagementhelpAdd-HistoryMicrosoft.PowerShell.CorehelpAdd-MemberMicrosoft.PowerShell.UtilityhelpAdd-PSSnapinMicrosoft.PowerShell.CorehelpAdd-TypeMicrosoft.PowerShell.UtilityhelpCheckpoint-ComputerMicrosoft.PowerShell.ManagementhelpClear-C
36、ontentMicrosoft.PowerShell.ManagementhelpClear-EventLogMicrosoft.PowerShell.ManagementhelpClear-HistoryMicrosoft.PowerShell.CorehelpClear-ItemMicrosoft.PowerShell.ManagementhelpClear-ItemPropertyMicrosoft.PowerShell.ManagementhelpClear-VariableMicrosoft.PowerShell.UtilityhelpCompare-ObjectMicrosoft.
37、PowerShell.UtilityhelpComplete-TransactionMicrosoft.PowerShell.ManagementhelpConnect-WSManMicrosoft.WSMan.ManagementhelpConvertFrom-CsvMicrosoft.PowerShell.UtilityhelpConvertFrom-SecureStringMicrosoft.PowerShell.SecurityhelpConvertFrom-StringDataMicrosoft.PowerShell.UtilityhelpConvert-PathMicrosoft.
38、PowerShell.ManagementhelpConvertTo-CsvMicrosoft.PowerShell.UtilityhelpConvertTo-HtmlMicrosoft.PowerShell.UtilityhelpConvertTo-SecureStringMicrosoft.PowerShell.SecurityhelpConvertTo-XmlMicrosoft.PowerShell.UtilityhelpCopy-ItemMicrosoft.PowerShell.ManagementhelpCopy-ItemPropertyMicrosoft.PowerShell.ManagementhelpDebug-ProcessMicrosoft.PowerShell.ManagementhelpDisable-ComputerRestoreMicrosoft.Po