Windows PowerShell入门.docx
《Windows PowerShell入门.docx》由会员分享,可在线阅读,更多相关《Windows PowerShell入门.docx(37页珍藏版)》请在冰点文库上搜索。
![Windows PowerShell入门.docx](https://file1.bingdoc.com/fileroot1/2023-6/8/3aa38669-1f35-4098-be26-3c8afcc2e6e8/3aa38669-1f35-4098-be26-3c8afcc2e6e81.gif)
WindowsPowerShell入门
WindowsPowerShell™入门指南
MicrosoftCorporation
发布日期:
2006年9月
摘要
WindowsPowerShell™是专为系统管理员设计的新Windows命令行外壳程序。
该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。
本文档旨在为新用户介绍WindowsPowerShell,以及使他们了解其基本功能。
有关更详细的信息,请参阅“WindowsPowerShell入门”。
目录
WindowsPowerShell入门指南版权声明5
WindowsPowerShell设计目标5
主旨6
WindowsPowerShell简介6
WindowsPowerShellCmdlet6
新脚本语言7
Windows命令和实用工具7
处理对象7
对象管道8
交互和脚本9
交互式环境9
对脚本的支持9
启动WindowsPowerShell10
使用WindowsPowerShell10
Get-Help:
获取帮助11
使用Cmdlet12
了解对象:
Get-Member14
使用Cmdlet参数16
通用参数17
设置命令输出的格式17
使用别名19
创建别名20
删除别名20
使用函数创建替代名称20
使用Windows程序21
管理错误21
在WindowsPowerShell中导航22
在文件系统中导航22
在注册表中导航23
在证书存储区中导航24
在其他驱动器中导航26
关于WindowsPowerShell驱动器26
驱动器和提供程序26
自定义WindowsPowerShell27
检查执行策略27
WindowsPowershell配置文件28
了解配置文件28
创建配置文件28
WindowsPowerShell入门指南版权声明
本文档仅供参考,Microsoft在本文档中不提供任何明示或暗示的保证。
本文档中的信息(包括引用的URL和其他Internet网站)如有变动,恕不另行通知。
全部使用风险或使用本文档产生的结果由用户承担。
除非另行说明,否则本文档范例中所提及的公司、组织、产品、域名、电子邮件地址、徽标、人员、地点和事件均属虚构,并无有意联系或暗示任何实际的公司、组织、产品、域名、电子邮件地址、徽标、人员、地点或事件。
遵守所有适用的版权法是用户的责任。
在不限制版权许可的权利的情况下,如果没有得到MicrosoftCorporation明确书面许可,本文档的任何部分不得被复制、存储或引进检索系统,或者以任何形式、任何方式(电子、机械、影印、录音或其他)或为任何目的进行传播。
本文档可能涉及MicrosoftCorporation的专利、正在申请的专利、商标、版权或其他知识产权。
除非与MicrosoftCorporation签订的书面许可协议中有明确规定,否则使用本文档并不意味着授予使用这些专利、商标、版权或其他知识产权的任何许可。
©2006MicrosoftCorporation。
保留所有权利。
Microsoft、MS-DOS、Windows、WindowsNT、Windows2000、WindowsXP、WindowsServer2003、WindowsVista、.NETFramework2.0、.NETFramework2.0运行时组件和Win32是MicrosoftCorporation在美国和/或其他国家(地区)的注册商标或商标。
本文档所提及的实际公司和产品的名称可能是其各自所有者的商标。
WindowsPowerShell设计目标
WindowsPowerShell是专为系统管理员设计的新Windows命令行外壳程序。
该外壳程序包括交互式提示和脚本环境,两者既可以独立使用也可以组合使用。
与接受和返回文本的大多数外壳程序不同,WindowsPowerShell是在.NET公共语言运行时(CLR)和.NETFramework的基础上构建的,它接受和返回.NET对象。
环境中的这一根本更改带来了管理和配置Windows的全新工具和方法。
WindowsPowerShell引入了cmdlet(读作“command-let”)的概念,这是内置到外壳程序中的一个简单的单一功能命令行工具。
可以分别使用每个cmdlet,但是组合使用这些简单的工具执行复杂任务时才发挥其作用。
WindowsPowerShell包括一百多个基本的核心cmdlet,您可以编写自己的cmdlet并与其他用户共享它们。
与许多外壳程序一样,WindowsPowerShell为您提供了对计算机上文件系统的访问。
此外,使用WindowsPowerShell提供程序,还可以访问其他数据存储区,如注册表和数字签名证书存储区,与访问文件系统一样容易。
本入门指南对WindowsPowerShell进行了介绍:
语言、cmdlet、提供程序和对象的使用。
主旨
本文档的主旨是帮助WindowsPowerShell用户了解WindowsPowerShell的入门知识。
本文档介绍开始使用外壳程序时所需的外壳程序功能。
有关外壳程序的详细分析、其功能以及如何使用外壳程序的示例,请参阅“WindowsPowerShell入门”。
WindowsPowerShell简介
大多数外壳程序(包括Cmd.exe以及SH、KSH、CSH和BASHUnix外壳程序)的运行方式是在新进程中执行命令或实用工具,然后将结果以文本形式显示给用户。
经过数年的发展,许多文本处理实用工具(如sed、AWK和PERL)现已发展为支持此交互。
这些外壳程序还具有内置到外壳程序中并在外壳程序进程中运行的命令,如KSH中的typeset命令和Cmd.exe中的dir命令。
在大多数的外壳程序中,由于内置命令很少,因此创建了许多实用工具。
WindowsPowerShell有很大不同。
∙WindowsPowerShell不处理文本。
相反,它基于.NET平台处理对象。
∙WindowsPowerShell附带了具有一致界面的大量内置命令。
∙所有的外壳程序命令都使用同一命令分析程序,而不是每个工具使用不同的分析程序。
这样便可更轻松地学习如何使用每个命令。
其最好的优点在于,您不必忍痛舍弃自己惯用的工具。
仍可以在WindowsPowerShell中使用传统的Windows工具,如Net、SC和Reg.exe。
WindowsPowerShellCmdlet
cmdlet(读作“command-let”)是WindowsPowerShell中用于操作对象的单功能命令。
可以通过其名称格式识别cmdlet--由短划线(-)分隔的动词和名词,如Get-Help、Get-Process和Start-Service。
在传统的外壳程序中,命令是从非常简单(如attrib.exe)到非常复杂(如netsh.exe)的可执行程序。
在WindowsPowerShell中,大多数cmdlet都非常简单,它们设计为与其他cmdlet组合使用。
例如,“get”cmdlet仅检索数据,“set”cmdlet仅建立或更改数据,“format”cmdlet仅设置数据格式,“out”cmdlet仅将输出定向到指定的目标。
每个cmdlet都具有一个帮助文件,可以通过键入以下内容访问它:
get-help-detailed
cmdlet帮助文件的详细视图包括cmdlet说明、命令语法、参数说明和说明cmdlet用法的示例。
新脚本语言
由于以下原因,WindowsPowerShell使用它自己的语言,而不是重用现有的语言:
∙WindowsPowerShell需要用于管理.NET对象的语言。
∙该语言需要为使用cmdlet提供一致的环境。
∙该语言需要支持复杂的任务,而不会使简单的任务变得更复杂。
∙该语言需要与在.NET编程中使用的高级语言(如C#)一致。
Windows命令和实用工具
可以在WindowsPowerShell中运行Windows命令行程序,并可以在外壳程序中启动具有图形用户界面的Windows程序(如记事本和计算器)。
还可以捕获程序生成的文本,并在外壳程序中使用该文本(与在Cmd.exe中很类似)。
处理对象
虽然您最初可能没有意识到,但是在WindowsPowerShell中工作时,所使用的是.NET对象。
随着您经验的增加,对象处理能力变得更明显,而且您发现自己使用的是对象,甚至用对象进行思考。
从技术上讲,.NET对象是.NET类的实例,包含数据以及与该数据关联的操作。
但是,可以将对象视为具有属性(与特性类似)和方法(可以对对象执行的操作)的数据实体。
例如,在WindowsPowerShell中获取服务时,实际上是获取表示该服务的对象。
查看有关服务的信息时,所查看的是其服务对象的属性。
此外,启动服务时(即,在将服务的Status属性更改为“started”时),所使用的是服务对象的方法。
类型相同的所有对象都具有相同的属性和方法,但是对象的每个实例可能具有不同的属性值。
例如,每个服务对象都具有Name和Status属性。
但是,每个服务都可以具有不同的名称和不同的状态。
准备就绪后,了解对象是很容易的。
若要查明cmdlet正获取对象的类型,请使用管道运算符(|)将“get”命令的结果发送到Get-Member命令。
例如,以下命令将Get-Service命令检索的对象发送到Get-Member。
get-service|get-member
Get-Member显示有关服务对象的信息,其中包括对象的类型名称及其属性和方法的列表。
TypeName:
System.ServiceProcess.ServiceController
NameMemberTypeDefinition
------------------------
NameAliasPropertyName=ServiceName
add_DisposedMethodSystem.Voidadd_Disposed(EventHandlervalue)
CloseMethodSystem.VoidClose()
ContinueMethodSystem.VoidContinue()
...
若要获取有关对象类的信息,请在MSDN中复制并粘贴类型名称,如System.ServiceProcess.ServiceController。
找到类后,可以阅读MSDN副主题,以了解基于该类的对象(如WindowsPowerShell中的对象)的属性和方法。
若要查找特定对象的所有属性的值,请使用管道运算符(|)将“get”命令的结果发送到Format-List或Format-Table命令。
将formatcmdlet的Property参数与表示所有的值(*)一起使用。
例如,若要查找系统上Schedule服务的所有属性,请键入:
get-serviceschedule|format-list-property*
以下显示一个结果示例。
Name:
Schedule
CanPauseAndContinue:
True
CanShutdown:
True
CanStop:
True
DisplayName:
TaskScheduler
DependentServices:
MachineName:
.
ServiceName:
Schedule
ServicesDependedOn:
{RpcSs}
ServiceHandle:
SafeServiceHandle
Status:
Running
ServiceType:
Win32ShareProcess
Site:
Container:
最初学习WindowsPowerShell时,无需了解有关对象的任何信息,但是要意识到该概念。
您将很快能够充分利用对象。
对象管道
使用对象的一个主要优点是,它使得用管道传输命令(即,将一个命令的输出作为输入传递到另一命令)容易得多。
通信通常需要字符串操作,以便将输出从一种格式转换为另一种格式,并删除标题和列标题。
WindowsPowerShell提供了一个基于对象而不是基于文本的新交互模型。
接收对象的cmdlet可以直接作用于其属性和方法,而无需进行转换或操作。
用户可以通过名称引用对象的属性和方法,而不是计算数据在输出中的位置。
在以下示例中,将IpConfig命令的结果传递到Findstr命令。
管道运算符(|)将其左侧命令的结果发送到其右侧的命令。
在Microsoft®Windows®PowerShell中,无需操作字符串或计算数据偏移量。
PS>ipconfig|findstr"Address"
IPAddress............:
172.28.21.5
IPAddress............:
172.30.160.225
交互和脚本
交互式环境
与其他外壳程序一样,WindowsPowerShell支持完全交互式环境。
在提示符下键入命令后,将处理该命令并在外壳程序窗口中显示输出。
可以将命令输出发送到文件或打印机,也可以使用管道运算符(|)将输出发送到其他命令。
对脚本的支持
如果重复运行特定的命令或命令序列,或者如果开发一系列命令来执行复杂的任务,则会希望在文件中保存命令并执行命令文件,而不是在提示符下键入命令。
保存有命令的文件称为脚本。
WindowsPowerShell除了提供交互式界面外,还完全支持脚本。
在WindowsPowerShell中,脚本文件的文件扩展名为.ps1。
若要运行脚本,请在命令提示符下键入该脚本的名称。
文件扩展名是可选的。
例如:
c:
\test\testscript.ps1
或
c:
\test\testscript
即使脚本在当前目录中,也必须指定脚本文件的完全限定路径。
若要指示当前目录,请键入目录名称或使用点(.)表示当前目录。
例如:
.\testscript.ps1
虽然脚本在一些企业中非常有用--甚至是必需的,但是它们可以用于传播恶意代码。
因此,WindowsPowerShell中的安全策略(称为执行策略)允许您确定脚本是否可以运行,以及它们是否必须包括数字签名。
为了消除明显的风险,WindowsPowerShell中的执行策略都不允许通过双击脚本的图标来运行它。
有关详细信息,请键入:
get-helpabout_signing
WindowsPowerShell还包括一种非常丰富的脚本语言,使用该语言可以创建从最简单到非常复杂的脚本。
它支持用于循环、条件、流控制和变量赋值的语言结构。
启动WindowsPowerShell
若要从“开始”菜单启动WindowsPowerShell,请依次单击“开始”、“所有程序”、WindowsPowerShell1.0和WindowsPowerShell。
若要从“运行”框启动WindowsPowerShell,请单击“开始”,再单击“运行”,然后键入:
powershell
若要从命令提示符(cmd.exe)窗口启动WindowsPowerShell,请在命令提示符下键入:
powershell
若要查看用于启动WindowsPowerShell的选项,请在命令提示符窗口中键入:
powershell-?
在WindowsPowerShell打开时,可以使用Get-Helpcmdlet查找帮助。
在WindowsPowerShell命令提示符下,键入:
get-help
使用WindowsPowerShell
本节介绍使用WindowsPowerShell的基本知识。
首先介绍Get-Helpcmdlet,该cmdlet显示有关WindowsPowerShell中cmdlet和概念性主题的信息。
然后,介绍几个基本的cmdlet,说明如何使用cmdlet参数,然后说明如何设置cmdlet输出的格式以获取有用显示中所需的数据。
最后的主题说明如何使用别名以便更容易地使用WindowsPowerShell,如何在WindowsPowerShell中运行传统的Windows程序,以及如何管理错误。
Get-Help:
获取帮助
Get-Helpcmdlet是用于了解WindowsPowerShell的有用工具。
通过阅读cmdlet的说明、了解有关概念并浏览语言主题,您可以开始了解如何使用WindowsPowerShell了。
感兴趣的第一个主题可能是帮助系统。
若要显示有关WindowsPowerShell中帮助系统的信息,请键入:
get-help
然后,您可能会对了解几个基本的cmdlet(如Get-Help、Get-Command、Get-Process、Get-Service和Get-Eventlog)感兴趣。
若要显示cmdlet的帮助的最简单视图,请键入“get-help”,后跟该cmdlet的名称。
例如,若要获取Get-Commandcmdlet的帮助,请键入:
get-helpget-command
如果cmdlet帮助的格式设置不正确(即,如果它以XMLNS标记开头),则可能是系统上的WindowsPowerShell执行策略阻止系统加载用于设置cmdlet帮助格式的配置文件。
有关执行策略的信息,请键入:
get-helpabout_signing
若要显示cmdlet的详细帮助,包括参数说明和示例,请使用Get-Help的Detailed参数。
例如,若要获取Get-Commandcmdlet的详细帮助,请键入:
get-helpget-command-detailed
若要显示cmdlet的所有可用帮助,包括有关cmdlet及其参数的技术信息,请使用Full参数。
例如,若要获取Get-Commandcmdlet的完整帮助,请键入:
get-helpget-command-full
也可以显示帮助文件的所选部分。
若要仅查看示例,请使用Examples参数。
例如,若要显示Get-Commandcmdlet的示例,请键入:
get-helpget-command-examples
若要仅查看详细的参数说明,请使用Get-Help的Parameter参数。
可以指定参数的名称,或者使用通配符(*)指定所有参数。
例如,若要查看Get-Command的TotalCount参数说明,请键入:
get-helpget-command-parametertotalcount
若要查看Get-Commandcmdlet的所有参数,请键入:
get-helpget-command-parameter*
也可以使用调用Get-Help的WindowsPowerShell函数之一。
Help函数一次显示一整屏帮助内容。
Man函数显示与Unix中的手册页类似的帮助。
若要使用Help和Man函数显示Get-Commandcmdlet的帮助,请键入:
manget-command
或
helpget-command
请求特定的帮助主题时,Get-Help将显示该主题的内容。
但是使用通配符请求多个主题时,Get-Help将显示一个主题列表。
例如,若要查看“Get”cmdlet的帮助主题列表,请键入:
get-helpget-*
有关WindowsPowerShell中概念的帮助以“about_”开头。
若要显示有关WindowsPowerShell概念的帮助,请键入“get-help”,后跟概念名称。
例如,若要获取有关通配符的帮助,请键入:
get-helpabout_wildcard
若要显示WindowsPowerShell中所有概念性帮助主题的列表,请键入:
get-helpabout_*
通过阅读帮助主题并尝试示例,您将了解WindowsPowerShell的工作原理以及在您的工作中如何使用它。
使用Cmdlet
cmdlet(读作“command-let”)是一个内置到外壳程序中的简单的单一功能命令行工具。
可以就像使用传统的命令和实用工具那样使用cmdlet。
首先在WindowsPowerShell命令提示符下键入cmdlet的名称。
WindowsPowerShell命令不区分大小写,因此可以用任意大小写键入。
例如,可以尝试Get-Datecmdlet:
C:
\PS>get-date
2005年11月10日,星期四,下午4:
43:
50
若要在会话中列出cmdlet,请使用Get-Commandcmdlet,且不带任何命令参数。
PS>get-command
CommandTypeNameDefinition
-------------------------
CmdletAdd-ContentAdd-Content[-Path]CmdletAdd-HistoryAdd-History[[-InputObject]...
CmdletAdd-MemberAdd-Member[-MemberType]...
…
默认的Get-Command显示有以下三列:
CommandType、Name和Definition。
列出cmdlet时,Definition列显示cmdlet的语法。
语法中的省略号(…)指示数据被截断。
Get-Commandcmdlet还获取除cmdlet之外的命令和命令元素,其中包括在WindowsPowerShell中可用的别名(命令昵称)、函数和可执行文件。
通过使用Get-Command的Name参数,以下命令列出了在WindowsPowerShell中可用的可执行文件。
PS>get-command*.exe
CommandTypeNameDefinition
-------------------------
Application000StTHK.exeC:
\WIN