PowerShell基础教程(4)—— 在Windows PowerShell 中导航 <o:p></o:p>
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>
启动 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>
也可以使用 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>
有关提供程序帮助文件的列表,请键入:<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>
向有一定开发经验的朋友们推荐两本.NET方面的经典著作,中文版在国内深受读者好评!<o:p></o:p>
1.《C#和.NET实战:平台、语言与框架》(原书名:Practical .Net2 and C#2: Harness the Platform, the Language, the Framework)<o:p></o:p>
<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>
更多详细信息:
分享到:
相关推荐
在Windows环境中,PowerShell提供了一种强大的命令行工具,可以实现这些功能。本教程将深入探讨如何使用PowerShell来发送POST和GET请求,以及相关的知识点。 1. **PowerShell基础知识**: PowerShell是一种面向...
最新超全的渗透测试学习基础教程集合,新手、大佬都可以阅读: 01.入门笔记之看雪Web安全学习及异或解密示例; 02.Chrome浏览器保留密码功能渗透解析及登录加密入门笔记; 03.Burp Suite工具安装配置、Proxy基础用法...
在Windows系统中,批处理与PowerShell等更现代的脚本语言相结合,可以实现更为复杂和强大的自动化任务。 总之,批处理是一种简单而实用的工具,通过编写批处理脚本,用户可以自动化完成许多日常计算机操作,减轻...
在Windows中,文件和文件夹的管理是通过资源管理器进行的。学习如何创建、重命名、移动、复制、删除文件和文件夹,以及理解文件路径和网络共享是重要的实践技能。 4. **应用程序安装与管理** 学习如何在Windows上...
在“lab-programmation-script-powershell”这个项目中,我们很显然会深入学习如何利用PowerShell进行编程和脚本编写。作为赞助人的实验室资源,这个压缩包很可能包含一系列的示例脚本、教程文档以及练习,帮助用户...
在Windows部分,可能会涉及系统安全、注册表编辑、故障排除以及使用PowerShell进行自动化管理的知识。 学习操作系统不仅有助于提升日常的计算机使用效率,更是进入系统管理员、软件开发者、网络安全等领域的基础。...
这篇教程将指导你如何在两种主要的操作系统——Windows和Linux上快速开始使用.NET Core进行开发。 首先,我们来了解.NET Core的基础知识。.NET Core包含了运行时环境、框架和编译器,使得开发者可以使用C#、F#或VB...
《Active Directory 循序渐进系列指南》是一个深入学习和理解Windows操作系统中核心组件——Active Directory(活动目录)的综合教程。本指南旨在帮助IT专业人员逐步掌握如何规划、部署、管理和维护Active Directory...
1. **云服务模型**:Azure支持三种主要的云服务模型——基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。IaaS允许用户租用计算资源,如虚拟机;PaaS提供了一个平台来构建、运行和管理应用程序;...
- 在实际应用中,可能需要根据具体需求调整脚本,比如增加错误处理机制、扩展查询条件等。 - 对于更复杂的场景,可能还需要结合其他技术如ADSI(Active Directory Service Interfaces)、PowerShell等进行综合运用...
总的来说,DOS虽然在现代计算机环境中已不再主流,但它的核心思想——命令行操作和脚本自动化,依然在各种高级操作系统(如Linux和Windows PowerShell)中得到延续和发展。因此,学习DOS不仅可以了解计算机历史,还...
在Windows操作系统中,可以使用W32Time服务进行配置和管理。该服务默认情况下会周期性地与选定的NTP服务器进行同步。用户可以通过命令行工具(如cmd或PowerShell)运行`w32tm /config /manualpeerlist:服务器地址 /...
打开命令行(在Windows上是CMD或PowerShell,在Mac/Linux上是Terminal),导航到源代码文件所在的目录,然后输入以下命令: ``` javac HelloWorld.java ``` 这将生成一个名为"HelloWorld.class"的字节码文件,这是...
**DOS概述** DOS(Disk Operating System,磁盘操作系统)是个人计算机上最早期...虽然现在DOS的使用已经大大减少,但其精髓——命令行操作和高效的工作方式,仍然在现代的命令提示符(CMD)和PowerShell中得以延续。
例如,你可以在这里找到如何使用grep命令在大量文本中快速查找信息,或者如何使用Powershell在Windows环境中实现高级任务自动化。 接着,我们讨论一下LOLBAS的概念。LOLBAS的理论基础是,攻击者往往不依赖外部工具...
然后,打开命令行工具,这可以是Windows系统中的命令提示符(cmd)或PowerShell,也可以是Unix/Linux系统中的终端。 在命令行输入: ``` python -m django --version ``` 这条命令利用了Python的模块执行功能,它...
标题中的“记事本_自动化”表明我们讨论的主题是关于使用自动化技术来操作或扩展Windows系统内置的简单文本编辑器——记事本。记事本虽然功能基础,但通过自动化工具,我们可以实现一些高效和复杂的任务,比如批量...