Windows PowerShell基础教程(1)——Windows PowerShell 简介 <o:p></o:p>
PowerShell 开发代号为Monad, 是支持 Windows XP/Server 2003/Vista/Server 2008操作系统的脚本语言。包括 Cmd.exe 、SH、KSH、CSH以及BASH Unix在内的大多数外壳程序的操作方式都是在新的进程中执行命令或实用工具程序,并以文本格式向用户显示结果。多年以来,许多文本处理实用工具程序,如sed、AWK 和 PERL,都已逐渐发展为支持这种交互模式。<o:p></o:p>
这些外壳程序也会提供内置于外壳程序中并在外壳程序处理器中执行的命令,例如KSH 中的 typeset 命令和以及 Cmd.exe 中的 dir 命令。在大多数外壳程序中,由于内置命令数量少,从而导致许多实用工具程序应运而生。<o:p></o:p>
针对这一点,Windows PowerShell 有不同的做法。<o:p></o:p>
<!---->◆ <!---->Windows PowerShell 并不处理文本,而是处理以.NET平台为基础的对象;<o:p></o:p>
<!---->◆Windows PowerShell 附带了数量庞大的内置命令集和一致的接口;<o:p></o:p>
<!---->◆对于各个工具,全部的外壳程序命令都使用相同的命令剖析器,而非使用不同的剖析器,这项特点会使你更容易学会每种命令的使用方式。<o:p></o:p>
其中最棒的就是你完全不需要舍弃已使用习惯的工具,你可以继续在 Windows PowerShell 中使用诸如Net、SC 和 Reg.exe 等传统的 Windows 工具。
<o:p></o:p>
Windows PowerShell Cmdlet<o:p></o:p>
Cmdlet (发音如 “command-let”) 是指在 Windows PowerShell 中用来操作对象的单一功能命令。你可以依据其名称格式来加以辨识 Cmdlet -- 以破折号 (-) 分隔的动词和名词,例如Get-Help、Get-Process 和 Start-Service。<o:p></o:p>
在传统的外壳程序中,命令是极为简单 (例如 attrib.exe) 到极为复杂 (例如 netsh.exe) 范围内的可执行程序。<o:p></o:p>
在 Windows PowerShell 中,大多数Cmdlet 都相当简单,而且设计成与其他 Cmdlet 结合使用。例如,"get" Cmdlet 只提取数据,"set" Cmdlet 只创建或修改数据,"format" Cmdlet 只格式化数据,而 "out" Cmdlet 只将输出导向到指定的目的地。每种 Cmdlet 都具备可在输入下列命令时加以显示的说明文件:<o:p></o:p>
get-help <cmdlet 名称> -detailed<o:p></o:p>
Cmdlet 说明文件包括了该 Cmdlet 的描述、命令语法、参数的描述以及示范该 Cmdlet 的使用范例。
<o:p></o:p>
全新的脚本语言<o:p></o:p>
Windows PowerShell 由于下列原因使用其特有的语言,而不沿用既有的任何语言。<o:p></o:p>
<!---->◆Windows PowerShell 必须拥有可管理.NET对象的语言。<o:p></o:p>
<!---->◆这种语言必须提供使用 Cmdlet 的一致环境。<o:p></o:p>
<!---->◆这种语言必须支持复杂的工作,而且不能让简单工作变得复杂。<o:p></o:p>
<!---->◆这种语言必须与进行 .NET 程序设计时所使用的高级语言 (例如 C#) 达成一致性。
<o:p></o:p>
Windows 命令和实用工具程序<o:p></o:p>
你可以在 Windows PowerShell 中执行 Windows 命令行程序,而且可以在外壳程序中启动具有图形用户界面的 Windows 程序,例如记事本和计算器。你也可以提取程序所产生的文本,然后用与在使用 Cmd.exe 时的相同方式在此外壳程序中使用该段文本。
<o:p></o:p>
处理对象<o:p></o:p>
也许开始时你可能并未察觉到,当你在 Windows PowerShell 中执行工作时,实际上是在使用 .NET 对象。随着你的经验的不断累积,以及对象处理的效果更加明显,你将发现其实自己是在使用对象,甚至最后以对象为思考依据。<o:p></o:p>
从技术上来看,.NET 对象是由数据以及与该数据关联的作业所组成的 .NET 类型例项。不过,你可以将对象当作拥有属性 (类似特性) 和方法 (可以针对对象执行的动作) 的数据实体。<o:p></o:p>
例如,当你在 Windows PowerShell 中取得服务时,实际上你所取得的是代表该项服务的对象。当你在查看服务的相关信息时,你是在查看其服务对象的属性。同样地,当你启动服务时,也就是当你将该项服务的 Status 属性修改为 "started" 时,你正在使用该项服务对象的方法。<o:p></o:p>
所有相同类型的对象都会具有相同的属性和方法,不过,对象的每个实例属性值可以各不相同。例如,每个服务对象都具有 Name 和 Status 属性。不过,各个服务可以拥有不同的名称和状态。<o:p></o:p>
了解这些概念之后,这些对象就不难理解。若要找出 Cmdlet 会取得哪种对象类型,请使用管道运算符 (|) 将 "get" 命令的结果传送到Get-Member 命令。例如,下列命令会将 Get-Service 命令所提取的对象传送Get-Member。<o:p></o:p>
get-service | get-member<o:p></o:p>
Get-Member 会显示该服务对象的相关信息,其中包括对象的Typename,以及包含此对象属性和方法的列表。<o:p></o:p>
TypeName: System.ServiceProcess.ServiceController<o:p></o:p>
<o:p> </o:p>Name MemberType Definition<o:p></o:p>
---- ---------- ----------<o:p></o:p>
Name AliasProperty Name = ServiceName<o:p></o:p>
add_Disposed Method System.Void add_Disposed(EventHandler value)<o:p></o:p>
Close Method System.Void Close()<o:p></o:p>
Continue Method System.Void Continue()<o:p></o:p>
如需取得对象类型的相关信息,请复制和粘贴 Typename (例如,System.ServiceProcess.ServiceController) 到 MSDN 中。当找到类型时,你就可以读取相关 MSDN 子主题来认识以该类型为基础的对象的属性和方法,例如出现在 Windows PowerShell 中的对象。<o:p></o:p>
若要找出特定对象的所有属性值,请使用管道运算符 (|) 将 "get" 命令的结果传送到 Format-List 或是 Format-Table 命令。请配合所有 (*) 的值来使用这些 Format cmdlet 的 Property 参数。例如,若要找出系统中 Schedule 服务的所有属性,请输入:<o:p></o:p>
get-service schedule | format-list -property<o:p></o:p>
下面内容显示结果范例。<o:p></o:p>
Name : Schedule<o:p></o:p>
CanPauseAndContinue : True<o:p></o:p>
CanShutdown : True<o:p></o:p>
CanStop : True<o:p></o:p>
DisplayName : Task Scheduler<o:p></o:p>
DependentServices : {}<o:p></o:p>
MachineName : .<o:p></o:p>
ServiceName : Schedule<o:p></o:p>
ServicesDependedOn : {RpcSs}<o:p></o:p>
ServiceHandle : SafeServiceHandle<o:p></o:p>
Status : Running<o:p></o:p>
ServiceType : Win32ShareProcess<o:p></o:p>
Site :<o:p></o:p>
Container :<o:p></o:p>
如果是第一次接触 Windows PowerShell,你还不需要熟知对象的每个细节,但是要对这个概念略有印象,因为你很快就能够应用这类对象来发挥其最大效益。
<o:p></o:p>
对象管道<o:p></o:p>
使用对象的最大优点就是可以让命令更容易通过管道进行传递,也就是将某个命令的输出传递为另一个命令的输入。这种通信经常必须通过字符串操作将某种格式的输出转换成另一种格式,以及移除标题和栏标题。<o:p></o:p>
Windows PowerShell 会提供以对象为基础 (而非以文本) 的全新互动模式,负责接收对象的 cmdlet,可以直接处理对象的属性和方法,而不需要进行任何转换或操作。用户可以依据名称引用对象的属性和方法,而不是计算数据在输出中的位置。<o:p></o:p>
在下面的范例中,IpConfig 命令的结果会传递给 Findstr 命令。管道运算符 (|) 会将位于此命令左边的结果传递到命令的右边。在 Microsoft® Windows® PowerShell 中,你并不需要操作字符串或计算数据位移。<o:p></o:p>
PS> ipconfig | findstr "Address"<o:p></o:p>
IP Address. . . . . . . . . . . . : 172.28.21.5<o:p></o:p>
IP Address. . . . . . . . . . . . : 172.30.160.225
严禁抄袭和谢绝任何形式的私自转载,如需转载,请与本人联系,谢谢!<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>
更多详细信息: http://www.china-pub.com/36237
<o:p></o:p>
分享到:
相关推荐
1. **PowerShell基础知识**: PowerShell是一种面向对象的外壳,它取代了传统的CMD命令行,提供了更丰富的功能和更强大的脚本编写能力。它支持命令行操作,同时拥有一个强大的脚本语言——PowerShell Scripting ...
最新超全的渗透测试学习基础教程集合,新手、大佬都可以阅读: 01.入门笔记之看雪Web安全学习及异或解密示例; 02.Chrome浏览器保留密码功能渗透解析及登录加密入门笔记; 03.Burp Suite工具安装配置、Proxy基础用法...
在Windows系统中,批处理与PowerShell等更现代的脚本语言相结合,可以实现更为复杂和强大的自动化任务。 总之,批处理是一种简单而实用的工具,通过编写批处理脚本,用户可以自动化完成许多日常计算机操作,减轻...
作为赞助人的实验室资源,这个压缩包很可能包含一系列的示例脚本、教程文档以及练习,帮助用户从基础到高级逐步掌握PowerShell。 1. **基础概念**: - PowerShell的工作原理:了解PowerShell的核心组件,包括运行...
除了图形界面,Windows还提供了命令行工具——命令提示符和PowerShell。学习基本的命令行操作可以提高系统管理效率,解决某些图形界面无法处理的问题。 9. **故障排查与修复** 掌握如何使用事件查看器、系统日志...
本资源包聚焦于两大主流操作系统——Linux和Windows,为用户提供了丰富的学习和实践材料。 Linux是一种开源、免费的操作系统,它的内核由林纳斯·托瓦兹开发,其设计理念强调稳定性和安全性。Linux有许多发行版,如...
这篇教程将指导你如何在两种主要的操作系统——Windows和Linux上快速开始使用.NET Core进行开发。 首先,我们来了解.NET Core的基础知识。.NET Core包含了运行时环境、框架和编译器,使得开发者可以使用C#、F#或VB...
本文档提供了两个具体的脚本实例——清单1和服务信息脚本,清单2和操作系统信息脚本,这两个脚本展示了如何使用WMI和VBScript来获取系统的相关信息。 ##### 清单1:服务信息脚本 ```vb strComputer="." Set ...
1. **云服务模型**:Azure支持三种主要的云服务模型——基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。IaaS允许用户租用计算资源,如虚拟机;PaaS提供了一个平台来构建、运行和管理应用程序;...
《Active Directory 循序渐进系列指南》是一个深入学习和理解Windows操作系统中核心组件——Active Directory(活动目录)的综合教程。本指南旨在帮助IT专业人员逐步掌握如何规划、部署、管理和维护Active Directory...
随着Windows的出现和发展,DOS逐渐被更先进的图形化操作系统所取代,但其基础知识仍然是计算机教育和理解操作系统原理的基础。 在提供的"中国IT认证实验室学习下载频道.txt"文件中,可能包含的是有关IT学习资源的...
标题中的“记事本_自动化”表明我们讨论的主题是关于使用自动化技术来操作或扩展Windows系统内置的简单文本编辑器——记事本。记事本虽然功能基础,但通过自动化工具,我们可以实现一些高效和复杂的任务,比如批量...
总的来说,DOS虽然在现代计算机环境中已不再主流,但它的核心思想——命令行操作和脚本自动化,依然在各种高级操作系统(如Linux和Windows PowerShell)中得到延续和发展。因此,学习DOS不仅可以了解计算机历史,还...
用户可以通过命令行工具(如cmd或PowerShell)运行`w32tm /config /manualpeerlist:服务器地址 /syncfromflags:manual /reliable:yes /update`命令来设置时间服务器,并使用`w32tm /resync`命令强制立即同步。...
首先,我们需要了解Java开发环境的基础——Java Development Kit (JDK)。JDK是Java程序员必备的工具,它包含了Java编译器、Java虚拟机(JVM)和其他开发工具。确保下载并安装最新版本的JDK到你的计算机上。 接下来...
操作系统命令技巧指南——深入探索LOLBAS与系统开源 在当今的数字时代,对操作系统有深入理解至关重要,尤其是对于IT专业人员来说。Cooolis.github.io是一个致力于分享操作系统命令技巧的指南,它提供了丰富的资源...
然后,打开命令行工具,这可以是Windows系统中的命令提示符(cmd)或PowerShell,也可以是Unix/Linux系统中的终端。 在命令行输入: ``` python -m django --version ``` 这条命令利用了Python的模块执行功能,它...