第2章:基本概念的PowerShell

地空导弹

123.4 第2页
第2页4

在这个例子中,Get-Process是命令,- name为参数,并探险者是参数。该命令的结果是关于进程的信息Explorer.exe的。如果没有使用参数或参数,Get-Process命令只列出有关当前正在运行的所有进程的进程信息,而不列出有关特定进程的信息。要控制命令的功能或让它执行比默认操作更多的操作,您需要理解命令的语法。若要在CLI中有效地使用命令,请使用得到帮助命令,稍后将在“有用的cmdlet”中讨论,以获取关于命令的功能及其使用需求的详细信息。

导航CLI

与所有基于CLI的炮弹,你需要了解如何浏览PowerShell的CLI有效地使用它。表2.1列出了使用PowerShell控制台时有各种键相关的编辑操作。

表2.1 PowerShell控制台编辑特性

编辑操作

左右箭头

将光标左右移动到当前命令行。

上下箭头

向上移动,并通过最近输入的命令的列表下来。

插入

切换插入和overstrike文本输入模式。

删除

删除当前光标位置的字符。

退格

删除紧接在当前光标位置前面的字符。

F7

在命令shell的弹出窗口中显示最近键入的命令列表。使用向上和向下箭头选择先前键入的命令,然后按Enter键执行所选的命令。

标签

自动完成的命令行序列。使用Shift+Tab序列向后移动可能匹配的列表。

幸运的是,表2.1中的大多数特性都是原生的CMD命令提示符,这使得已经熟悉Windows命令行的管理员更容易采用PowerShell。惟一的主要区别是,选项卡键自动完成功能在PowerShell中得到了增强CMD命令提示符。

PowerShell中的Tab键自动完成

如同CMD命令提示符,PowerShell对文件和目录名执行自动完成。因此,如果您输入一个部分文件或目录名并按Tab键,PowerShell将返回当前目录中第一个匹配的文件或目录名。再次按Tab键将返回第二个可能的匹配项,并使您能够循环遍历结果列表。就像CMD命令提示符,PowerShell的Tab键自动完成也可以自动完成与通配符,如本例所示:

psd:\> cd:\Doc*<选项卡>PS C:\> CD 'C:\ Documents和设置'PS C:\文档和设置>

在Tab键自动完成之间的区别CMDPowerShell是PowerShell可以自动完成命令。例如,您可以输入部分命令名并按下标签和PowerShell步骤通过一个可能的命令匹配列表,如下所示:

p C: \ > get-pro<选项卡>p C: \ > get-process

PowerShell中可以与特定命令相关联还自动完成参数名称。只需输入一个命令和部分参数名称,然后按标签通过为您指定的命令的参数键,和PowerShell周期。这种方法也适用于与命令相关的变量。此外,PowerShell中进行自动完成的方法和变量和对象的属性。以使用命名变量来看一个例子Z美元设定值“变量”:

PS C:\> $Z = "变量"p C: \ >美元z <选项卡>

在你输入Z美元然后按Tab键,PowerShell循环执行可以针对的操作Z美元变量。例如,如果您选择Z.Length美元属性并按Enter键,PowerShell将返回字符串的长度Z美元变量,如下图所示:

PS C:\> $Z = "变量"PS C:\> $ž。<选项卡>p C: \ > Z.Length美元8p C: \

对于变量之间的区分自动完成功能属性方法。属性列表中没有开括号(如前面所示)Z.Length美元和方法用开括号列出,如下例所示:

PS C:\> $Z = "变量"PS C:\> $ Z.con<选项卡>PS C:\> $ Z.Contains(

当。。。的时候$ Z.Contains(提示出现时,您可以使用此方法查询是否Z美元变量包含字符V通过输入以下命令:

PS C:\> $Z = "变量"PS C:\> $ Z.Contains( “V”)真正的p C: \ >

PowerShell纠正方法或属性名的大小写,使其与定义匹配。在大多数情况下,这个功能只是表面文章,因为在默认情况下,PowerShell不区分大小写。

了解的cmdlet

cmdlet是PowerShell功能的基本组成部分。它们被实现为托管类(构建在。net框架上),其中包含一组定义良好的方法来处理数据。cmdlet开发人员编写在调用cmdlet时运行的代码,并将代码编译到一个DLL中,该DLL在启动PowerShell实例时加载到PowerShell实例中。

cmdlet总是以这种格式命名动词名词其中动词指定动作,名词指定操作对象。您可能已经注意到,为了使PowerShell更加通用,大多数PowerShell名称都是单数,而不是复数。例如,一个命令可能提供一个值或一组值,而且无法提前知道cmdlet名称是否应该是复数。此外,英语在处理复数时也不一致。例如,单词可以是单数,也可以是复数,这取决于上下文。如果英语不是你的第一语言,搞清楚什么应该是复数或者正确的复数形式可能会让人望而生畏。


注意 -默认的PowerShell动词是得到,如果没有其他动词给出其假设。此默认设置的效果是,过程命令产生的结果相同Get-Process


为了确定参数的cmdlet支持,您可以通过使用以下命令的任何审查的cmdlet的帮助信息:

PS C:\> cmdletName -?PS C:\>获取帮助cmdletName

此外,您还可以使用get命令cmdlet来确定哪些参数可用以及如何使用它们。下面是语法的一个例子:

PS C:\> GET命令cmdletName

当与get命令将其输出管道连接到格式列表cmdlet生成一个更简洁的cmdlet使用列表。例如,只显示的定义信息Get-Process,使用以下命令:

PS C:\> get-command get-process |格式列表定义定义:Get-Process [[-Name] ] [-Verbose] [-Debug] [-ErrorAction]] [-ErrorVariable ] [-OutVariable ] [-OutBuffer ]

获取进程-Id <的Int32 []> [-Verbose] [-Debug] [-ErrorAction

] [-ErrorVariable ] [-OutVariable ] [-OutBuffer ]

获取进程-InputObject <处理[]> [-Verbose] [-Debug] [-ErrorAction

] [-ErrorVariable ] [-OutVariable <
字符串>][-OutBuffer < Int32 >)p C: \ >

通用参数

因为cmdlet派生自一个基类,所以有很多常见的参数,这是提供给所有的cmdlet,可以用来帮助PowerShell命令提供更一致的接口。这些通用的参数在表2.2中描述。

TTable的2.2 PowerShell的常见参数

参数

数据类型

描述

详细

布尔

生成关于操作的详细信息,很像跟踪或事务日志。此参数仅在生成详细数据的cmdlet中有效。

调试

布尔

生成有关操作的程序员级详细信息。要使此参数有效,cmdlet必须支持生成调试数据。

ErrorAction

枚举

确定如何在发生错误时的cmdlet的响应。价值观是继续(缺省值),停止,SilentlyContinue,查询

ErrorVariable

字符串

指定一个变量,从处理过程中的命令存储的错误。将填充此变量,除了$错误

OutVariable

字符串

指定处理期间从命令输出一个变量,其存储。

OutBuffer

Int32

在调用管道中的下一个cmdlet之前,确定要缓冲的对象数量。

如果

布尔

解释在执行命令但实际上不执行命令时所发生的情况。

确认

布尔

提示是否允许用户进行任何行动修改系统之前。


注意 -最后两个参数见表2.2,如果确认,是特殊的,因为它们需要cmdlet来支持.NET方法ShouldProcess,这可能对所有cmdlet都不适用。的ShouldProcess方法与用户一起确认操作,在执行操作之前发送要更改的资源的名称以进行确认。


得到帮助

当你开始使用PowerShell时得到帮助get命令cmdlets是有用的。下面几节中描述的这两个cmdlet将帮助您探索PowerShell的功能,并帮助您了解可以运行的命令的更多信息。

得到帮助

如您所料,您将使用得到帮助检索关于cmdlet和其他主题的帮助信息。要显示所有帮助主题的列表,请输入得到帮助*在PowerShell命令提示,如图在下面的例子。请注意,由于空间限制,例如只显示可用主题的一个子集返回由得到帮助

PS C:\>获取帮助*名称分类简介---- -------- --------ac别名添加内容asnp别名Add-PSSnapinclc别名明确cli别名Clear-ItemCLP别名清除-ItemPropertyclv别名Clear-VariableCPI别名拷贝项目cpp别名Copy-ItemPropertycvpa别名Convert-Pathdiff别名比较对象epal别名Export-Aliasepcsv别名Export-Csvfc别名Format-Customfl别名格式表的foreach别名的foreach对象p C: \ >

以缩小所返回的项的列表得到帮助,您可以通过过滤主题名称和类别来缩短它。例如,获取以谓词开头的所有cmdlet的列表得到,试试下面的命令:

PS C:\> get-help - name get-* - category cmdlet名称分类简介---- -------- --------获取命令cmdlet获取基本信息...获取帮助cmdlet显示的信息...Get-History Cmdlet获取com的列表…GET-PSSnapin cmdlet获取Windows电源...获取事件日志Cmdlet获取关于…GET-ChildItem cmdlet获取的项目和智...Get-Content Cmdlet获取…p C: \ >

你选择了一个帮助主题后,您可以通过使用主题名称作为参数的获取帮助信息得到帮助cmdlet。例如,检索。的帮助获取内容cmdlet,输入以下命令:

PS C:\>获取帮助获取内容

注意 -PowerShell有两个参数得到帮助小命令:详细的完整的。的详细的参数显示关于cmdlet的附加信息,包括参数的描述和使用cmdlet的示例。的完整的参数显示cmdlet的整个帮助文件,包括有关参数的技术信息。


cmdlet的帮助主题

PowerShell帮助分为每个cmdlet的部分。表2.3描述了每个cmdlet的帮助信息。

表2.3的PowerShell帮助部分

帮助部分

描述

的名字

该cmdlet的名称。

概要

简要描述cmdlet的功能。

详细说明

对cmdlet行为的详细描述,通常包括使用示例。

语法

具体使用细节与小命令输入命令。

参数

可以与此cmdlet一起使用有效参数。

输入类型

此cmdlet接受的输入类型。

返回类型

cmdlet返回的数据类型。

终止错误

如果存在的话,识别任何错误结果在cmdlet提前终止。

终止错误

标识cmdlet的运行时可能出现的,但不会导致cmdlet来终止其操作不严重的错误。

笔记

关于使用cmdlet的其他详细信息,包括特定的场景和可能的限制或特性。

例子

该cmdlet常见用法示例。

相关链接

引用执行类似任务的其他cmdlet。

get命令

另一个有用的cmdlet是get命令,用于在PowerShell会话中列出所有可用的cmdlet:

PS C:\> GET命令的CommandType名称定义----------- ---- ----------Add-Content [-Path] Cmdlet Add-History Add-History [[-InputObject]…Add-Member [-MemberType] cmdlet的附加PSSnapin添加-PSSnapin [ - 名称] <字符串...清除内容清除内容[-Path] Cmdlet清除- item清除- item [-Path] 小命令清除-ItemProperty清除-ItemProperty [-Path] <...Clear-Variable [-Name] Cmdlet比较对象比较对象[-ReferenceOb…p C: \ >

get命令cmdlet比得到帮助因为它在PowerShell会话中列出了所有可用的命令(cmdlet、脚本、别名、函数和本机应用程序),如下例所示:

PS C:\获取命令注意*的CommandType名称定义----------- ---- ----------应用NOTEPAD.EXE C:\WINDOWS\ NOTEPAD.EXENOTEPAD.EXE C应用:\ WINDOWS \ SYSTEM32 \ NOTEPAD.EXEp C: \ >

当使用get命令对于cmdlet以外的元素,返回的信息与您看到的cmdlet的信息不同。例如,对于现有的应用程序定义属性是应用程序的路径。但是,也可以获得关于应用程序的其他信息,如下所示:

有关:
123.4 第2页
第2页4
工资调查:结果在