Windows PowerShell 的最强大功能之一是,它允许您使用在文件系统中用来导航的相同熟悉方法在许多不同的数据存储区中导航。<o:p></o:p>
除了熟悉的文件系统驱动器(如 C: 和 D:)之外,Windows PowerShell 还包括表示 HKEY_LOCAL_MACHINE (HKLM:) 和 HKEY_CURRENT_USER (HKCU:) 注册表配置单元、计算机上的数字签名证书存储区 (Cert:) 以及当前会话中函数 (Function:) 等的驱动器。这些驱动器称为 Windows PowerShell 驱动器。<o:p></o:p>
Windows PowerShell 附带有 Windows PowerShell 提供程序支持的数个有用驱动器。若要查看 Windows PowerShell 驱动器的列表,请键入:<o:p></o:p>
get-psdrive<o:p></o:p> |
启动 Windows PowerShell 时,您可能很想键入熟悉的 cd、dir 或 ls。可以这样做!cd 是 Set-Location cmdlet(将当前位置更改为指定路径的 cmdlet)的别名。dir 和 ls 是 Get-Childitem cmdlet(获取某个位置中子项的 cmdlet)的别名。<o:p></o:p>
若要在文件系统驱动器中导航,请使用 Set-Location (cd) 和 Get-Childitem(dir、ls)cmdlet。在 Windows PowerShell 中,驱动器由驱动器名称后跟冒号 (:) 表示,如 C:,父项与子项用反斜杠 (\) 或正斜杠 (/) 隔开,如 C:\Windows\System32。<o:p></o:p>
有几项功能可以使在 Windows PowerShell 中导航更容易:<o:p></o:p>
· 有表示当前目录 (.) 和目录内容 (*) 的符号。<o:p></o:p>
· 有表示主目录的内置变量 $home 和表示 Windows PowerShell 安装目录的内置变量 $pshome。<o:p></o:p>
与在其他外壳程序中一样,可以更改位置,创建、删除、移动和复制目录及文件,以及更改其属性。甚至可以将 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: 驱动器。<o:p></o:p>
例如:<o:p></o:p>
PS C:\> cd hklm:<o:p></o:p> PS HKLM:\> dir<o:p></o:p> PS HKLM:\> dir<o:p></o:p> Hive:Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE<o:p></o:p> SKC VC Name Property<o:p></o:p> --- -- ---- -------- 4 0 HARDWARE {}<o:p></o:p> 1 0 SAM {}<o:p></o:p> Get-ChildItem :不允许所请求的注册表访问权。<o:p></o:p> 所在行:1 字符:3<o:p></o:p> + dir <<<<<o:p></o:p> 39 2 SOFTWARE {flash, (default)}<o:p></o:p> 8 0 SYSTEM {}<o:p></o:p> PS HKLM:\> cd system\currentcontrolset\control<o:p></o:p> PS HKLM:\system\currentcontrolset\control> dir<o:p></o:p> |
<o:p> </o:p>在导航时,您将注意到,dir (Get-Childitem) 的输出在注册表驱动器中与在文件系统中是不同的。由于注册表具有包含不同信息的不同驱动器,因此外壳程序提供了数据的不同视图。在这种情况下,知道存在多少子项和项是很重要的,因此除了子项和项的名称外,输出还包括子项计数 (SKC) 和值项计数 (VC)。<o:p></o:p>
PS> cd "CurrentControlSet\Control\Session Manager"<o:p></o:p> PS> dir<o:p></o:p> Hive:Registry::HKEY_LOCAL_MACHINE\system\CurrentControlSet\Control\Session<o:p></o:p> Manager<o:p></o:p> <o:p> </o:p> SKC VC ChildName Property<o:p></o:p> --- -- --------- -------- 0 1 AppCompatibility {AppCompatCache}<o:p></o:p> 15 0 AppPatches {}<o:p></o:p> 0 7 DOS Devices {AUX, MAILSLOT, NUL, PIPE, PRN, UNC, f...<o:p></o:p> <o:p> </o:p> |
<o:p></o:p>到达注册表项之前,不会在导航中遇到很多的差异。注册表项中的项被认为是它们所在项的属性。因此,使用 Get-ItemProperty cmdlet 可以检索它们。<o:p></o:p>
例如,如果要查看 Windows PowerShell 执行策略的值,可以使用 Get-ExecutionPolicy cmdlet,或导航到在 HKLM:\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell 中存储值的 ExecutionPolicy 注册表项。<o:p></o:p>
PS C:\> cd hklm:<o:p></o:p> PS HKLM:\> cd software\microsoft\powershell\1\ShellIds\Microsoft.PowerShell<o:p></o:p> PS HKLM:\software\microsoft\powershell\1\ShellIds\Microsoft.PowerShell> dir<o:p></o:p> PS HKLM:\software\microsoft\powershell\1\ShellIds\Microsoft.PowerShell> get-itemproperty -path .-name executionpolicy<o:p></o:p> <o:p> </o:p> PSPath :Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\ShellIds\Micro<o:p></o:p> soft.PowerShell<o:p></o:p> PSParentPath :Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\software\microsoft\powershell\1\ShellIds<o:p></o:p> PSChildName :Microsoft.PowerShell<o:p></o:p> PSDrive :HKLM<o:p></o:p> PSProvider :Microsoft.PowerShell.Core\Registry<o:p></o:p> ExecutionPolicy :RemoteSigned<o:p></o:p> |
也可以在计算机上的数字签名证书存储区中导航。证书存储区映射到 theWindows PowerShell Cert: 驱动器。以下示例说明如何使用 Set-Location (cd) 和 Get-Childitem(dir、ls)在 Cert: 驱动器中导航。<o:p></o:p>
PS C:\> cd cert:<o:p></o:p> PS cert:\> dir<o:p></o:p> Location :CurrentUser<o:p></o:p> StoreNames :{TrustedPeople, _NMSTR, Trust, REQUEST...}<o:p></o:p> <o:p> </o:p> Location :LocalMachine<o:p></o:p> StoreNames :{_NMSTR, Trust, REQUEST, TrustedPeople...}<o:p></o:p> <o:p> </o:p> PS cert:\> cd currentuser<o:p></o:p> PS cert:\currentuser> dir<o:p></o:p> <o:p> </o:p> Name :TrustedPeople<o:p></o:p> Name :_NMSTR<o:p></o:p> Name :Trust<o:p></o:p> Name :REQUEST<o:p></o:p> Name :AuthRoot<o:p></o:p> Name :ACRS<o:p></o:p> Name :My<o:p></o:p> Name :addressbook<o:p></o:p> Name :Disallowed<o:p></o:p> Name :CA<o:p></o:p> Name :UserDS<o:p></o:p> Name :Root<o:p></o:p> Name :TrustedPublisher<o:p></o:p> <o:p> </o:p> PS cert:\currentuser> cd authroot<o:p></o:p> PS cert:\currentuser\authroot> dir<o:p></o:p> Directory:Microsoft.PowerShell.Security\Certificate::currentuser\authroot<o:p></o:p> Thumbprint Subject<o:p></o:p> ---------- ------- F88015D3F98479E1DA553D24FD42BA3F43886AEF O=C&W HKT SecureNet CA SGC Root, C=hk<o:p></o:p> F44095C238AC73FC4F77BF8F98DF70F8F091BC52 CN=Class 3TS Primary CA, O=Certplus, C=FR<o:p></o:p> EF2DACCBEABB682D32CE4ABD6CB90025236C07BC O="Colegio Nacional de Correduria Publica Mexicana, A.C.", CN="Autoridad C...<o:p></o:p> ... PS cert:\currentuser\authroot> get-childitem F88015D3F98479E1DA553D24FD42BA3F43886AEF<o:p></o:p> Directory:Microsoft.PowerShell.Security\Certificate::currentuser\authroot<o:p></o:p> Thumbprint Subject<o:p></o:p> ---------- ------- F88015D3F98479E1DA553D24FD42BA3F43886AEF O=C&W HKT SecureNet CA SGC Root, C=hk<o:p></o:p> <o:p> </o:p> PS cert:\currentuser\authroot> get-childitem F88015D3F98479E1DA553D24FD42BA3F43886AEF | format-list -property *<o:p></o:p> <o:p> </o:p> <o:p> </o:p> PSPath :Microsoft.PowerShell.Security\Certificate::currentuser\authroot\F88015D3F98479E1DA553D24FD42BA3F43<o:p></o:p> 886AEF<o:p></o:p> PSParentPath :Microsoft.PowerShell.Security\Certificate::currentuser\authroot<o:p></o:p> PSChildName :F88015D3F98479E1DA553D24FD42BA3F43886AEF<o:p></o:p> PSDrive :cert<o:p></o:p> PSProvider :Microsoft.PowerShell.Security\Certificate<o:p></o:p> PSIsContainer :False<o:p></o:p> Archived :False<o:p></o:p> Extensions : {} FriendlyName :CW HKT SecureNet CA SGC Root<o:p></o:p> IssuerName :System.Security.Cryptography.X509Certificates.X500DistinguishedName<o:p></o:p> NotAfter :10/16/2009 2:59:00 AM<o:p></o:p> NotBefore :6/30/1999 3:00:00 AM<o:p></o:p> HasPrivateKey :False<o:p></o:p> PrivateKey :<o:p></o:p> PublicKey :System.Security.Cryptography.X509Certificates.PublicKey<o:p></o:p> RawData : {48, 130, 2, 235...} SerialNumber : 00 SubjectName :System.Security.Cryptography.X509Certificates.X500DistinguishedName<o:p></o:p> SignatureAlgorithm :System.Security.Cryptography.Oid<o:p></o:p> Thumbprint :F88015D3F98479E1DA553D24FD42BA3F43886AEF<o:p></o:p> Version : 1 Handle : 1577256 Issuer :O=C&W HKT SecureNet CA SGC Root, C=hk<o:p></o:p> Subject :O=C&W HKT SecureNet CA SGC Root, C=hk<o:p></o:p> |
除了文件系统、注册表和证书驱动器外,Windows PowerShell 还附带有几个其他有用的驱动器,其中包括别名 (Alias:)、环境提供程序 (Env:)、函数 (Function:) 和变量 (Variable:) 驱动器。使用相同的基本方法可以在这些驱动器中导航。<o:p></o:p>
Windows PowerShell 中扩展导航功能背后的概念是 Windows PowerShell 驱动器。
可以在 Windows PowerShell 的任何数据存储区中创建 Windows PowerShell 驱动器,而且它们可以具有任何有效名称,如 C: 或“My Drive”后跟冒号 (:)。可以使用在文件系统驱动器中所用的相同方法在这些驱动器中导航。但是,Windows PowerShell 驱动器仅在 Windows PowerShell 中是可见的。无法在 Windows 资源管理器或 Cmd.exe 中查看或访问它们。<o:p></o:p>
Windows PowerShell 附带有 Windows PowerShell 提供程序支持的数个有用驱动器。若要查看 Windows PowerShell 驱动器的列表,请键入:<o:p></o:p>
get-psdriv |
也可以使用 New-PsDrive cmdlet 创建自己的 Windows PowerShell 驱动器。例如,若要创建名为“MyDocs:”的新驱动器(位于 My Documents 目录中),请键入: <o:p></o:p>
new-psdrive -name MyDocs -psprovider FileSystem -root "$home\My Documents"<o:p></o:p> |
现在,可以像使用任何其他驱动器那样使用 MyDocs: 驱动器。可以将您的位置转到该驱动器,枚举其内容以及更改其属性。<o:p></o:p>
Windows PowerShell 提供程序使 Windows PowerShell 中的驱动器可用于您的会话,这些提供程序是 .NET 程序集,它们使在专用数据存储区中的数据在 Windows PowerShell 中可用,以便您可以轻松地查看和管理该数据。有关 Windows PowerShell 提供程序的信息,请键入:<o:p></o:p>
get-help about_psprovider<o:p></o:p> |
若要查看 Windows PowerShell 提供程序的列表,请键入:<o:p></o:p>
get-psprovide |
有关提供程序帮助文件的列表,请键入:<o:p></o:p>
get-help -category provider<o:p></o:p> |
有关特定提供程序的信息,请键入:<o:p></o:p>
get-help <提供程序名称><o:p></o:p> |
例如,<o:p></o:p>
get-help registry<o:p></o:p> |
<o:p> </o:p>
严禁抄袭和谢绝任何形式的私自转载,如需转载,请与本人联系,谢谢!<o:p></o:p>
好书推荐,精彩明天继续······<o:p></o:p>
向有一定开发经验的朋友们推荐两本.NET方面的经典著作,中文版在国内深受读者好评!<o:p></o:p>
1.《C#和.NET实战:平台、语言与框架》(原书名:Practical .Net2 and C#2: Harness the Platform, the Language, the Framework)<o:p></o:p>
<!---->(1) <!---->C#传奇经典<o:p></o:p>
<!---->(2) <!---->世界众多.NET专家好评如潮的秘籍<o:p></o:p>
<!---->(3) <!---->国内四位MVP联袂翻译<o:p></o:p>
<!---->(4) <!---->深入全面,知识密集,代码丰富<o:p></o:p>
更多详细信息: http://www.china-pub.com/37188<o:p></o:p>
<o:p> </o:p>
2.《ASP.NET 2.0揭秘.卷1》(原书名: ASP.NET 2.0 Unleashed)
<o:p></o:p>
<!---->(1) <!---->微软技术大师力作<o:p></o:p>
<!---->(2) <!---->四位微软MVP联袂翻译,众多MVP鼎力推荐<o:p></o:p>
<!---->(3) <!---->代码密集,提供C#和VB.NET两种版本<o:p></o:p>
<!---->(4) <!---->有史以来最成功的ASP.NET著作的最新版,有“ASP.NET圣经”之誉。<o:p></o:p>