什么都分享
以及,记录自己的故事
正在载入当前位置天气信息……

PowerShell 基础教程

Windows PowerShell 简介
XP/Server 2003/Vista/Server 2008操作系统的脚本语言。包括 Cmd.exe 、SH、KSH、
CSH以及BASHUnix在内的大多数外壳程序的操作方式都是在新的进程中执行命令
或实用工具程序,并以文本格式向用户显示结果。多年以来,许多文本处理实用
工具程序,如sed、AWK 和 PERL,都已逐渐发展为支持这种交互模式。
这些外壳程序也会提供内置于外壳程序中并在外壳程序处理器中执行的
命令,例如KSH 中的 typeset 命令和以及 Cmd.exe 中的 dir 命令。在大多数外壳
程序中,由于内置命令数量少,从而导致许多实用工具程序应运而生。
针对这一点,Windows PowerShell 有不同的做法。
◆Windows PowerShell 并不处理文本,而是处理以.NET平台为基础的对象;
◆Windows PowerShell 附带了数量庞大的内置命令集和一致的接口;
◆对于各个工具,全部的外壳程序命令都使用相同的命令剖析器,而非使用不同
的剖析器,这项特点会使你更容易学会每种命令的使用方式。
其中最棒的就是你完全不需要舍弃已使用习惯的工具,你可以继续在
Windows PowerShell 中使用诸如Net、SC 和 Reg.exe 等传统的 Windows 工具。
Windows PowerShell Cmdlet
Cmdlet (发音如 “command-let”) 是指在 Windows PowerShell 中用来操作对
象的单一功能命令。你可以依据其名称格式来加以辨识 Cmdlet — 以破折号 (-)
分隔的动词和名词,例如Get-Help、Get-Process 和 Start-Service。
在传统的外壳程序中,命令是极为简单 (例如 attrib.exe) 到极为复杂 (例
如 netsh.exe) 范围内的可执行程序。
在 Windows PowerShell 中,大多数Cmdlet 都相当简单,而且设计成与其他
Cmdlet 结合使用。例如,”get” Cmdlet 只提取数据,”set” Cmdlet 只创建或修改
数据,”format” Cmdlet 只格式化数据,而 “out” Cmdlet 只将输出导向到指定的
目的地。每种 Cmdlet 都具备可在输入下列命令时加以显示的说明文件:

get-help <cmdlet 名称> -detailed
Cmdlet 说明文件包括了该 Cmdlet 的描述、命令语法、参数的描述以及示范
该 Cmdlet 的使用范例。
全新的脚本语言
WindowsPowerShell 由于下列原因使用其特有的语言,而不沿用既有的任何语
言。
◆Windows PowerShell 必须拥有可管理.NET对象的语言。
◆这种语言必须提供使用 Cmdlet 的一致环境。
◆这种语言必须支持复杂的工作,而且不能让简单工作变得复杂。
◆这种语言必须与进行 .NET 程序设计时所使用的高级语言 (例如 C#) 达成一致
性。
Windows 命令和实用工具程序
你可以在 Windows PowerShell 中执行 Windows 命令行程序,而且可以在外壳
程序中启动具有图形用户界面的 Windows 程序,例如记事本和计算器。你也可以
提取程序所产生的文本,然后用与在使用 Cmd.exe 时的相同方式在此外壳程序中
使用该段文本。
处理对象
也许开始时你可能并未察觉到,当你在 Windows PowerShell 中执行工作时,
实际上是在使用 .NET 对象。随着你的经验的不断累积,以及对象处理的效果更
加明显,你将发现其实自己是在使用对象,甚至最后以对象为思考依据。

从技术上来看,.NET 对象是由数据以及与该数据关联的作业所组成的 .NET
类型例项。不过,你可以将对象当作拥有属性 (类似特性) 和方法 (可以针对对
象执行的动作) 的数据实体。
例如,当你在 Windows PowerShell 中取得服务时,实际上你所取得的是代表
该项服务的对象。当你在查看服务的相关信息时,你是在查看其服务对象的属性。
同样地,当你启动服务时,也就是当你将该项服务的 Status 属性修改为
“started” 时,你正在使用该项服务对象的方法。
所有相同类型的对象都会具有相同的属性和方法,不过,对象的每个实例属
性值可以各不相同。例如,每个服务对象都具有 Name 和 Status 属性。不过,
各个服务可以拥有不同的名称和状态。
了解这些概念之后,这些对象就不难理解。若要找出 Cmdlet 会取得哪种对
象类型,请使用管道运算符 (|) 将 “get” 命令的结果传送到Get-Member 命令。
例如,下列命令会将 Get-Service 命令所提取的对象传送Get-Member。
get-service | get-member
Get-Member 会显示该服务对象的相关信息,其中包括对象的Typename,以及
包含此对象属性和方法的列表。
TypeName: System.ServiceProcess.ServiceController
Name
—-
Name
MemberType
———-
Definition
———-
AliasProperty Name = ServiceName
Method System.Void
add_Disposed
add_Disposed(EventHandler value)
Close
Method
System.Void
Close()
Continue
Method
System.Void
Continue()

如需取得对象类型的相关信息,请复制和粘贴 Typename (例如,
System.ServiceProcess.ServiceController) 到 MSDN 中。当找到类型时,你就可以
读取相关 MSDN 子主题来认识以该类型为基础的对象的属性和方法,例如出现在
Windows PowerShell 中的对象。
若要找出特定对象的所有属性值,请使用管道运算符 (|) 将 “get” 命令的结
果传送到 Format-List 或是 Format-Table 命令。请配合所有 (*) 的值来使用这些
Formatcmdlet 的 Property 参数。例如,若要找出系统中 Schedule 服务的所有属
性,请输入:
get-service schedule | format-list -property
下面内容显示结果范例。
Name
: Schedule
CanPauseAndContinue : True
CanShutdown
CanStop
: True
: True
DisplayName
: Task Scheduler
DependentServices
MachineName
: {}
: .
ServiceName
: Schedule
ServicesDependedOn : {RpcSs}
ServiceHandle
Status
: SafeServiceHandle
: Running
ServiceType
Site
: Win32ShareProcess
:
Container
:

如果是第一次接触 WindowsPowerShell,你还不需要熟知对象的每个细节,但
是要对这个概念略有印象,因为你很快就能够应用这类对象来发挥其最大效益。
对象管道
使用对象的最大优点就是可以让命令更容易通过管道进行传递,也就是将某
个命令的输出传递为另一个命令的输入。这种通信经常必须通过字符串操作将某
种格式的输出转换成另一种格式,以及移除标题和栏标题。
WindowsPowerShell 会提供以对象为基础 (而非以文本) 的全新互动模式,负
责接收对象的 cmdlet,可以直接处理对象的属性和方法,而不需要进行任何转换
或操作。用户可以依据名称引用对象的属性和方法,而不是计算数据在输出中的
位置。
在下面的范例中,IpConfig 命令的结果会传递给 Findstr 命令。管道运算符
(|) 会将位于此命令左边的结果传递到命令的右边。在 Microsoft® Windows®
PowerShell 中,你并不需要操作字符串或计算数据位移。
PS> ipconfig | findstr “Address”
IP Address. . . . . . . . . . . . : 172.28.21.5
IP Address. . . . . . . . . . . . : 172.30.160.225

PowerShell 基础教程二:Windows PowerShell 中的
交互式和脚本
与其他外壳程序一样,Windows PowerShell 支持完全交互式环境。在提示符下
键入命令后,将处理该命令并在外壳程序窗口中显示输出。可以将命令输出发送
到文件或打印机,也可以使用管道运算符 (|) 将输出发送到其他命令。
对脚本的支持
如果重复运行特定的命令或命令序列,或者如果开发一系列命令来执行复杂的任
务,则会希望在文件中保存命令并执行命令文件,而不是在提示符下键入命令。
保存有命令的文件称为脚本。<o:p></o:p>
Windows PowerShell 除了提供交互式界面外,还完全支持脚本。在 Windows
PowerShell 中,脚本文件的文件扩展名为 .ps1。若要运行脚本,请在命令提示
符下键入该脚本的名称。文件扩展名是可选的。
例如:
c:\test\testscript.ps1<o:p></o:p>

c:\test\testscript<o:p></o:p>
即使脚本在当前目录中,也必须指定脚本文件的完全限定路径。若要指示当前目
录,请键入目录名称或使用点 (.) 表示当前目录。例如:
.\testscript.ps1
<o:p></o:p>
虽然脚本在一些企业中非常有用 — 甚至是必需的,但是它们可以用于传播恶意
代码。因此,Windows PowerShell 中的安全策略(称为执行策略)允许您确定
脚本是否可以运行,以及它们是否必须包括数字签名。为了消除明显的风险,
Windows PowerShell 中的执行策略都不允许通过双击脚本的图标来运行它。有
关详细信息,请键入:
get-help
about_signing<o:p></o:p>

Windows PowerShell 还包括一种非常丰富的脚本语言,使用该语言可以创建从
最简单到非常复杂的脚本。它支持用于循环、条件、流控制和变量赋值的语言结
构。
PowerShell 基础教程三:Windows PowerShell 使用
初步
单击“开始”、“所有程序”、Windows PowerShell 1.0 和 Windows PowerShell。
若要从“运行”框启动 Windows PowerShell,请单击“开始”,再单击“运行”,然后键入:
powershell
若要从命令提示符 (cmd.exe) 窗口启动 Windows PowerShell,请在命令提示符下键入:
powershell
<o:p></o:p>若要查看用于启动 Windows PowerShell 的选项,请在命令提示符窗口中键入:
powershell
-?
在 Windows PowerShell 打开时,可以使用 Get-Help cmdlet 查找帮助。在 Windows
PowerShell 命令提示符下,键入:
get-help
使用 Windows PowerShell
本节介绍使用 Windows PowerShell 的基本知识。首先介绍 Get-Help cmdlet,该 cmdlet 显
示有关 Windows PowerShell 中 cmdlet 和概念性主题的信息。然后,介绍几个基本的
cmdlet,说明如何使用 cmdlet 参数,然后说明如何设置 cmdlet 输出的格式以获取有用显
示中所需的数据。最后的主题说明如何使用别名以便更容易地使用 Windows PowerShell,
如何在 Windows PowerShell 中运行传统的 Windows 程序,以及如何管理错误。
Get-Help:获取帮助

Get-Help cmdlet 是用于了解 Windows PowerShell 的有用工具。通过阅读 cmdlet 的说明、
了解有关概念并浏览语言主题,您可以开始了解如何使用 Windows PowerShell 了。
感兴趣的第一个主题可能是帮助系统。若要显示有关 Windows PowerShell 中帮助系统的信
息,请键入:
get-help<o:p></o:p>
>然后,您可能会对了解几个基本的 cmdlet(如 Get-Help、Get-Command、Get-Process、
Get-Service 和 Get-Eventlog)感兴趣。
若要显示 cmdlet 的帮助的最简单视图,请键入“get-help”,后跟该 cmdlet 的名称。例如,
若要获取 Get-Command cmdlet 的帮助,请键入:
get-help
get-command<o:p></o:p>
如果 cmdlet 帮助的格式设置不正确(即,如果它以 XMLNS 标记开头),则可能是系统上
的 Windows PowerShell 执行策略阻止系统加载用于设置 cmdlet 帮助格式的配置文件。有
关执行策略的信息,请键入:
get-help
about_signing
<o:p></o:p>若要显示 cmdlet 的详细帮助,包括参数说明和示例,请使用 Get-Help 的
Detailed 参数。例如,若要获取 Get-Command cmdlet 的详细帮助,请键入:
get-help get-command
-detailed
若要显示 cmdlet 的所有可用帮助,包括有关 cmdlet 及其参数的技术信息,请使用 Full 参
数。例如,若要获取 Get-Command cmdlet 的完整帮助,请键入:
get-help get-command
-full
也可以显示帮助文件的所选部分。若要仅查看示例,请使用 Examples 参数。例如,若要显
示 Get-Command cmdlet 的示例,请键入:
get-help get-command
-examples
若要仅查看详细的参数说明,请使用 Get-Help 的 Parameter 参数。可以指定参数的名称,
或者使用通配符 (*) 指定所有参数。例如,若要查看 Get-Command 的 TotalCount 参数说

明,请键入:
get-help get-command -parameter
totalcount
若要查看 Get-Command cmdlet 的所有参数,请键入:
get-help get-command
-parameter *
也可以使用调用 Get-Help 的 Windows PowerShell 函数之一。Help 函数一次显示一整屏帮
助内容。Man 函数显示与 Unix 中的手册页类似的帮助。若要使用 Help 和 Man 函数显
示 Get-Command cmdlet 的帮助,请键入:
man
get-command

help
get-command
请求特定的帮助主题时,Get-Help 将显示该主题的内容。但是使用通配符请求多个主题时,
Get-Help 将显示一个主题列表。例如,若要查看“Get”cmdlet 的帮助主题列表,请键入:
get-help get-*
有关 Windows PowerShell 中概念的帮助以 “about_”开头。若要显示有关 Windows
PowerShell 概念的帮助,请键入“get-help”,后跟概念名称。例如,若要获取有关通配符的
帮助,请键入:
get-help
about_wildcard
若要显示 Windows PowerShell 中所有概念性帮助主题的列表,请键入:
get-help
about_*
通过阅读帮助主题并尝试示例,您将了解 Windows PowerShell 的工作原理以及在您的工作
中如何使用它。
使用 Cmdlet

cmdlet(读作“command-let”)是一个内置到外壳程序中的简单的单一功能命令行工具。可以
就像使用传统的命令和实用工具那样使用 cmdlet。首先在 Windows PowerShell 命令提示符
下键入 cmdlet 的名称。Windows PowerShell 命令不区分大小写,因此可以用任意大小写键
入。
例如,可以尝试 Get-Date cmdlet:
C:\PS> get-date
2005 年 11 月 10 日,星期四,下
午 4:43:50<
若要在会话中列出 cmdlet,请使用 Get-Command cmdlet,且不带任何命令参数。
PS> get-command
CommandType
———–
Name
Definition
—-
———-
Cmdlet
Cmdlet
Cmdlet

Add-Content
Add-Content [-Path] <String[…<o:p></o:p>
Add-History
Add-History [[-InputObject] …<o:p></o:p>
Add-Member
Add-Member [-MemberType] <PS…<o:p></o:p>
…<o:p></o:p>
默认的 Get-Command 显示有以下三列:CommandType、Name 和 Definition。列出 cmdlet
时,Definition 列显示 cmdlet 的语法。语法中的省略号 (…) 指示数据被截断。
Get-Command cmdlet 还获取除 cmdlet 之外的命令和命令元素,其中包括在 Windows
PowerShell 中可用的别名(命令昵称)、函数和可执行文件。
通过使用 Get-Command 的 Name 参数,以下命令列出了在 Windows PowerShell 中可用的
可执行文件。

PS> get-command *.exe<
<o:p> </o:p>
CommandType
Name
Definition<o:p></o:p>
———-
———– —-
Application
000StTHK.exe
C:\WINDOWS\system32\000StTHK.exe
C:\WINDOWS\system32\00THotkey.exe
C:\WINDOWS\system32\accwiz.exe
Application
00THotkey.exe
Application
accwiz.exe

列出可执行文件时,Defintion 列包含可执行文件的完整路径。
然后,尝试一些其他 cmdlet,如 Get-Process、Get-Service、Get-EventLog 和 Get-Alias。
如果对简单的“Get-”cmdlet 已非常熟悉,请尝试更有趣的 cmdlet,如 Get-WmiObject。此
cmdlet 非常有用,因为使用它可以查看和更改远程计算机的组件。例如,以下命令获取有
关 Server01 远程计算机上 BIOS 的信息:
get-wmiobject win32_bios -computername
server01
<o:p></o:p>如果需要任何 cmdlet 的帮助,请键入:<o:p></o:p>
get-help <cmdlet 名称> -detailed
例如:
get-help get-alias -detailed。
了解对象:Get-Member
Get-Member 是最有用的 cmdlet 之一,它显示有关命令返回的 .NET 对象的信息。该信息
包括对象的类型、属性和方法。
若要使用 Get-Member,请使用管道运算符 (|) 将命令结果发送到 Get-Member。例如:

<o:p></o:p>
get-service | get-member
此命令显示 Get-Service 实际上返回了一组 System.ServiceProcess.ServiceController 对象 —
计算机上的每个服务都有一个对象。
TypeName:System.ServiceProcess.ServiceController<o:p></o:p>
<o:p> </o:p>
Name
MemberType
———-
Defin
—–
ition<o:p></o:p>
—-
—–
Name
AliasProperty Name =
Method System.Vo
ServiceName<o:p></o:p>
add_Disposed
id add_Disposed(EventHandler value)<o:p></o:p>
Close
Method
Sy
Syste
stem.Void Close()<o:p></o:p>
Continue
Method
m.Void Continue()<o:p></o:p>
CreateObjRef
Method
System.Ru
ntime.Remoting.ObjRef CreateObjRef(Type requestedType)<o:p></o:p>
Dispose
Method
Method
Syst
Sys
em.Void Dispose()<o:p></o:p>
Equals

tem.Boolean Equals(Object obj)<o:p></o:p>
ExecuteCommand
Method
System.Void
ExecuteCommand(Int32 command)<o:p></o:p>
get_CanPauseAndContinue Method
get_CanPauseAndContinue()<o:p></o:p>
System.Boolean
get_CanShutdown
Method
System.Boole

an get_CanShutdown()<o:p></o:p>
get_CanStop
Method
System.B
System.Com
oolean get_CanStop()<o:p></o:p>
get_Container
Method
ponentModel.IContainer get_Container()<o:p></o:p>
get_DependentServices
Method
System.ServiceProc
ess.ServiceController[] get_DependentServices()<o:p></o:p>
get_DisplayName
Method
Method
System.Strin
System.Strin
g get_DisplayName()<o:p></o:p>
get_MachineName
g get_MachineName()<o:p></o:p>
get_ServiceHandle
Method
System.Runtime
.InteropServices.SafeHandle get_ServiceHandle()<o:p></o:p>
get_ServiceName
Method
System.Strin
g get_ServiceName()<o:p></o:p>
get_ServicesDependedOn
Method
System.ServiceProce
ss.ServiceController[] get_ServicesDependedOn()<o:p></o:p>
get_ServiceType
Method
System.Servi
Syste
ceProcess.ServiceType get_ServiceType()<o:p></o:p>
get_Site
Method
m.ComponentModel.ISite get_Site()<o:p></o:p>
get_Status
Method
System.
ServiceProcess.ServiceControllerStatus get_Status()<o:p></o:p>
GetHashCode
Method
System.I
System.Object
Syst
nt32 GetHashCode()<o:p></o:p>
GetLifetimeService
Method
GetLifetimeService()<o:p></o:p>
GetType
Method
em.Type GetType()<o:p></o:p>
InitializeLifetimeService Method
System.Object

InitializeLifetimeService()<o:p></o:p>
Pause
Method
Sy
Syst
stem.Void Pause()<o:p></o:p>
Refresh
Method
em.Void Refresh()<o:p></o:p>
remove_Disposed
Method
System.Void
System.Void
System.Void
System.Void
Syste
remove_Disposed(EventHandler value)<o:p></o:p>
set_DisplayName
Method
set_DisplayName(String value)<o:p></o:p>
set_MachineName
Method
set_MachineName(String value)<o:p></o:p>
set_ServiceName
Method
set_ServiceName(String value)<o:p></o:p>
set_Site
Method
m.Void set_Site(ISite value)<o:p></o:p>
Start
Method
Sy
stem.Void Start(), System.Void Start(String[] args)<o:p></o:p>
Stop
Method
S
Syste
ystem.Void Stop()<o:p></o:p>
ToString
Method
m.String ToString()<o:p></o:p>
WaitForStatus
Method
System.Voi
d WaitForStatus(ServiceControllerStatus desiredStatus),
System.Voi…<o:p></o:p>
CanPauseAndContinue
Property
System.Boolean
CanPauseAndContinue {get;}<o:p></o:p>
CanShutdown
Property
System.Boo
System
lean CanShutdown {get;}<o:p></o:p>
CanStop
Property
.Boolean CanStop {get;}<o:p></o:p>

Container
Property
System.C
omponentModel.IContainer Container {get;}<o:p></o:p>
DependentServices
Property
System.ServicePr
ocess.ServiceController[] DependentServices {get;}<o:p></o:p>
DisplayName
Property
Property
System.Str
System.Str
ing DisplayName {get;set;}<o:p></o:p>
MachineName
ing MachineName {get;set;}<o:p></o:p>
ServiceHandle
Property
System.Runti
me.InteropServices.SafeHandle ServiceHandle {get;}<o:p></o:p>
ServiceName
Property
System.Str
ing ServiceName {get;set;}<o:p></o:p>
ServicesDependedOn
Property
System.ServicePro
cess.ServiceController[] ServicesDependedOn {get;}<o:p></o:p>
ServiceType
Property
System.Ser
Sys
viceProcess.ServiceType ServiceType {get;}<o:p></o:p>
Site
Property
tem.ComponentModel.ISite Site {get;set;}<o:p></o:p>
Status
Property
Syste
m.ServiceProcess.ServiceControllerStatus Status {get;}<o:p></o:p>
<o:p></o:p>此信息看起来技术性很强,但是它实际上非常实用。
PowerShell 基础教程四:在Windows PowerShell 中
导航
Windows PowerShell 的最强大功能之一是,它允许您使用在文件系统中用来导
航的相同熟悉方法在许多不同的数据存储区中导航。
除了熟悉的文件系统驱动器(如 C: 和 D:)之外,Windows PowerShell 还包括
表示 HKEY_LOCAL_MACHINE (HKLM:) 和 HKEY_CURRENT_USER (HKCU:) 注册表配
置单元、计算机上的数字签名证书存储区 (Cert:) 以及当前会话中函数
(Function:) 等的驱动器。这些驱动器称为 Windows PowerShell 驱动器。

Windows PowerShell 附带有 Windows PowerShell 提供程序支持的数个有用驱
动器。若要查看 Windows PowerShell 驱动器的列表,请键入:
get-psdrive
在文件系统中导航
启动 Windows PowerShell 时,您可能很想键入熟悉的 cd、dir 或 ls。可以这
样做!cd 是 Set-Location cmdlet(将当前位置更改为指定路径的 cmdlet)的
别名。dir 和 ls 是 Get-Childitem cmdlet(获取某个位置中子项的 cmdlet)
的别名。
若要在文件系统驱动器中导航,请使用 Set-Location (cd) 和 Get-Childitem
(dir、ls)cmdlet。在 Windows PowerShell 中,驱动器由驱动器名称后跟冒
号 (:) 表示,如 C:,父项与子项用反斜杠 (\) 或正斜杠 (/) 隔开,如
C:\Windows\System32。
有几项功能可以使在 Windows PowerShell 中导航更容易:
有表示当前目录 (.) 和目录内容 (*) 的符号。


有表示主目录的内置变量 $home 和表示 Windows PowerShell 安装
目录的内置变量 $pshome。
与在其他外壳程序中一样,可以更改位置,创建、删除、移动和复制目录及文件,
以及更改其属性。甚至可以将 Tab 补齐功能用于路径名。有关详细信息,请参
阅 Item cmdlet(Get-Item、Get-Childitem、New-Item、Remove-Item、Set-Item、
Move-Item 和 Copy-Item)的帮助。
在注册表中导航
可以使用与在文件系统驱动器中用来导航的相同方法在 Windows 注册表中进行
导航。在 Windows PowerShell 中,HKEY_LOCAL_MACHINE 配置单元映射到
Windows PowerShell HKLM: 驱动器,而 HKEY_CURRENT_USER 驱动器映射到
Windows PowerShell HKCU: 驱动器。
例如:
PS C:\> cd hklm:
PS HKLM:\> dir
PS HKLM:\> dir
Hive:Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE
SKC VC
Name
Property
— —
—-
——–
{}
4 0 HARDWARE
1 0
SAM
{}
Get-ChildItem :不允许所请求的注册表访问权。
所在行:1 字符:3
+ dir <<<<
39 2
SOFTWARE
{flash,

(default)}
8
0 SYSTEM
{}
PS HKLM:\> cd system\currentcontrolset\control
PS HKLM:\system\currentcontrolset\control> dir
<o:p> </o:p>在导航时,您将注意到,dir (Get-Childitem) 的输出在注册表
驱动器中与在文件系统中是不同的。由于注册表具有包含不同信息的不同驱动
器,因此外壳程序提供了数据的不同视图。在这种情况下,知道存在多 少子项
和项是很重要的,因此除了子项和项的名称外,输出还包括子项计数 (SKC) 和
值项计数 (VC)。
PS> cd “CurrentControlSet\Control\Session Manager”
PS> dir
Hive:Registry::HKEY_LOCAL_MACHINE\system\CurrentControlSet\Control\Se
ssion
Manager
<o:p> </o:p>
SKC VC ChildName
Property
——–
— — ———
0 1 AppCompatibility
15 0 AppPatches
0 7 DOS Devices
MAILSLOT, NUL, PIPE, PRN, UNC, f…
<o:p> </o:p>
{AppCompatCache}
{}
{AUX,
到达注册表项之前,不会在导航中遇到很多的差异。注册表项中的项被认为是它
们所在项的属性。因此,使用 Get-ItemProperty cmdlet 可以检索它们。
例如,如果要查看 Windows PowerShell 执行策略的值,可以使用
Get-ExecutionPolicy cmdlet,或导航到在
HKLM:\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell
中存储值的 ExecutionPolicy 注册表项。
PS C:\> cd hklm:
PS HKLM:\> cd
software\microsoft\powershell\1\ShellIds\Microsoft.PowerShell
PS
HKLM:\software\microsoft\powershell\1\ShellIds\Microsoft.PowerShell>
dir
PS
HKLM:\software\microsoft\powershell\1\ShellIds\Microsoft.PowerShell>
get-itemproperty -path .-name executionpolicy
<o:p> </o:p>
PSPath
:Microsoft.PowerShell.Core\Registry::HKEY_LO
CAL_MACHINE\software\microsoft\powershell\1\ShellIds\Micro
soft.PowerShell
PSParentPath
:Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MA
CHINE\software\microsoft\powershell\1\ShellIds

PSChildName
PSDrive
:Microsoft.PowerShell
:HKLM
PSProvider
:Microsoft.PowerShell.Core\Registry
ExecutionPolicy :RemoteSigned
在证书存储区中导航
也可以在计算机上的数字签名证书存储区中导航。证书存储区映射到
theWindows PowerShell Cert: 驱动器。以下示例说明如何使用 Set-Location
(cd) 和 Get-Childitem(dir、ls)在 Cert: 驱动器中导航。
PS C:\> cd cert:
PS cert:\> dir
Location :CurrentUser
StoreNames :{TrustedPeople, _NMSTR, Trust, REQUEST…}
<o:p> </o:p>
Location :LocalMachine
StoreNames :{_NMSTR, Trust, REQUEST, TrustedPeople…}
<o:p> </o:p>
PS cert:\> cd currentuser
PS cert:\currentuser> dir
<o:p> </o:p>
Name :TrustedPeople
Name :_NMSTR
Name :Trust
Name :REQUEST
Name :AuthRoot
Name :ACRS
Name :My
Name :addressbook
Name :Disallowed
Name :CA
Name :UserDS
Name :Root
Name :TrustedPublisher
<o:p> </o:p>
PS cert:\currentuser> cd authroot
PS cert:\currentuser\authroot> dir
Directory:Microsoft.PowerShell.Security\Certificate::currentuser\auth
root
Thumbprint
Subject
———-
——-
F88015D3F98479E1DA553D24FD42BA3F43886AEF O=C&W HKT SecureNet CA SGC
Root, C=hk

F44095C238AC73FC4F77BF8F98DF70F8F091BC52 CN=Class 3TS Primary CA,
O=Certplus, C=FR
EF2DACCBEABB682D32CE4ABD6CB90025236C07BC O=”Colegio Nacional de
Correduria Publica Mexicana, A.C.”, CN=”Autoridad C…

PS cert:\currentuser\authroot> get-childitem
F88015D3F98479E1DA553D24FD42BA3F43886AEF
Directory:Microsoft.PowerShell.Security\Certificate::currentuser\auth
root
Thumbprint
Subject
———-
——-
F88015D3F98479E1DA553D24FD42BA3F43886AEF O=C&W HKT SecureNet CA SGC
Root, C=hk
<o:p> </o:p>
PS cert:\currentuser\authroot> get-childitem
F88015D3F98479E1DA553D24FD42BA3F43886AEF | format-list -property *
<o:p> </o:p>
<o:p> </o:p>
PSPath
:Microsoft.PowerShell.Security\Certifi
cate::currentuser\authroot\F88015D3F98479E1DA553D24FD42BA3F43
886AEF
PSParentPath
currentuser\authroot
PSChildName
PSDrive
:Microsoft.PowerShell.Security\Certificate::
:F88015D3F98479E1DA553D24FD42BA3F43886AEF
:cert
PSProvider
:Microsoft.PowerShell.Security\Certificate
PSIsContainer
Archived
:False
:False
Extensions
: {}
FriendlyName
IssuerName
:CW HKT SecureNet CA SGC Root
:System.Security.Cryptography.X509Certific
ates.X500DistinguishedName
NotAfter
:10/16/2009 2:59:00 AM
:6/30/1999 3:00:00 AM
NotBefore
HasPrivateKey
PrivateKey
:False
:
PublicKey
:System.Security.Cryptography.X509Certifi
: {48, 130, 2, 235…}
cates.PublicKey
RawData
SerialNumber
SubjectName
: 00
:System.Security.Cryptography.X509Certifica
tes.X500DistinguishedName

SignatureAlgorithm :System.Security.Cryptography.Oid
Thumbprint
Version
Handle
:F88015D3F98479E1DA553D24FD42BA3F43886AEF
: 1
: 1577256
Issuer
:O=C&W HKT SecureNet CA SGC Root, C=hk
:O=C&W HKT SecureNet CA SGC Root, C=hk
Subject
在其他驱动器中导航
除了文件系统、注册表和证书驱动器外,Windows PowerShell 还附带有几个其
他有用的驱动器,其中包括别名 (Alias:)、环境提供程序 (Env:)、函数
(Function:) 和变量 (Variable:) 驱动器。使用相同的基本方法可以在这些驱
动器中导航。
关于 Windows PowerShell 驱动器
Windows PowerShell 中扩展导航功能背后的概念是 Windows PowerShell 驱动
器。
可以在 Windows PowerShell 的任何数据存储区中创建 Windows PowerShell 驱
动器,而且它们可以具有任何有效名称,如 C: 或“My Drive”后跟冒号 (:)。
可以使用在文件系统驱动器中所用的相同方法在这些驱动器中导航。但是,
Windows PowerShell 驱动器仅在 Windows PowerShell 中是可见的。无法在
Windows 资源管理器或 Cmd.exe 中查看或访问它们。
Windows PowerShell 附带有 Windows PowerShell 提供程序支持的数个有用驱
动器。若要查看 Windows PowerShell 驱动器的列表,请键入:
get-psdriv
也可以使用 New-PsDrive cmdlet 创建自己的 Windows PowerShell 驱动器。例
如,若要创建名为“MyDocs:”的新驱动器(位于 My Documents 目录中),请
键入:
new-psdrive -name MyDocs -psprovider FileSystem -root
“$home\My Documents”
现在,可以像使用任何其他驱动器那样使用 MyDocs: 驱动器。可以将您的位置
转到该驱动器,枚举其内容以及更改其属性。
驱动器和提供程序
Windows PowerShell 提供程序使 Windows PowerShell 中的驱动器可用于您的
会话,这些提供程序是 .NET 程序集,它们使在专用数据存储区中的数据在
Windows PowerShell 中可用,以便您可以轻松地查看和管理该数据。有关
Windows PowerShell 提供程序的信息,请键入:
get-help
about_psprovider
若要查看 Windows PowerShell 提供程序的列表,请键入:
get-psprovide
有关提供程序帮助文件的列表,请键入:
get-help -category

provider
有关特定提供程序的信息,请键入:
get-help <提供程序
名称>
例如,
get-help
registry

打赏
本文遵守创作共享 BY-NC-ND 4.0协议,转载前请先联系作者。绯末博客 » PowerShell 基础教程
分享到: 更多 (0)

评论 抢沙发

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏