打印

简介Windows PowerShell

powershell和传统*NIX的shell有什么不同?官方文档中摘录了一点

UNIX Shell甚至Windows的cmd.exe的运作方式是:在一个新的进程中执行外部命令,结果作为文本输出,反馈给用户。许多文本处理工具如sed, awk, Perl应运而生,增强这一交互过程。同时,这些shell都包含一些内置命令,如ksh的typeset, cmd.exe的dir,它们则是运行在shell的进程中,但因为内置命令毕竟有限,所以,外部命令才被不断创造出来

PowerShell非常不同

    PowerShell不是处理文本的,而是处理基于.net平台的对象。[/list:u]
      PowerShell自带大量的内置命令,保证界面的一致性。[/list:u]
        所有命令使用同一个命令解析器,而不是不同命令使用不同解析器,易于学习上手。[/list:u]

        最为重要的是,你以前熟悉的工具也不必放弃,传统windows命令行工具,如Net, Reg等,仍然可以在PowerShell中使用。

TOP

PowerShell的重要部件——cmdlets

一个cmdlet(读作: command let),分辨一个cmdlet是一目了然的,动词加横杠加名词,比如Get-Command。一个cmdlet是一个单一特性的命令,用来操作PowerShell中的对象。在传统shell如cmd.exe中,一个命令的复杂程度非常不同,简单如attrib.exe,复杂的则像netsh.exe。

在PowerShell中,大多数cmdlet是很简洁的,它们就是被设计为与其它cmdlet组合完成复杂的任务。

比如说`get' cmdlet获取数据,`set' cmdlet连接或改变数据,`format' cmdlet格式化数据,`out' cmdlet将输出导向特定目的地。

每一个cmdlet都有帮助文件,可以通过

[code:1]get-help <cmdlet-name> -detailed[/code:1]

访问

加上`-detailed'参数可获取详细的帮助,包括对cmdlet本身的描述,语法,参数的介绍,和具体的实例。

TOP

PowerShell是一门新的脚本语言

PowerShell使用自己新创的语言,而不是重复利用已有语言,理由如下:

  • PowerShell需要一能够管理.NET对象的语言[/list:u]
    • 需要提供一个持续一致的环境以使用cmdlet[/list:u]
      • 需要支持复杂任务,而不是是简单任务复杂化[/list:u]
        • 需要与.NET编程的高级语言如C#保持一致[/list:u]

TOP

传统的Windows命令和工具

在PowerShell中你也可使用传统的Windows命令行工具,启动图形界面程序。

在PowerShell中,你可以捕获传统Windows命令输出的文本,并加利用,这一点和cmd.exe并没什么差别。

TOP

处理对象

开始你也许并没有意识到,当你工作于PowerShell中,你实际上是在于.NET对象打交道。你的经验越丰富,对象处理体

现的威力就越明显,你会发现你使用对象,并以对象的方式思考。

技术层面说,一个.NET对象,是一个由数据和相关联操作组成.NET类的实例。你可以把一个对象想象成一个具有属性的

数据实体,比如特征,方法(你可以对它施加的动作)

比如说,当你在PowerShell中获取一个服务,你实际上得到的是代表这个服务的一个对象。你查看该服务的信息,也就

是查看该对象的属性,你启动这个服务,你实际是将该服务状态属性改变为"started",你使用了服务对象的一个方法。

多有同一类型的对象,具有相同的属性和方法,但每个对象的不同实例,其属性具有不同的值。比如说,每个服务对象

都有Name和Status属性,但每个服务的名称各不相同,状态也不一样。

要查明cmdlet得到是哪个类型的对象,使用管道符(|),把"get"命令的结果发送给"Get-Member"命令,比如下面的命令把

Get-Serice命令得到的结果发送个Get-Member]

[code:1]get-service | get-member[/code:1]

Get-Member显示service对象的,包括对象类的名称,它属性和方法的列表

   [code:1]TypeName: System.ServiceProcess.ServiceController

Name                      MemberType    Definition
----                      ----------    ----------
Name                      AliasProperty Name = ServiceName
add_Disposed              Method        System.Void add_Disposed(EventHandler value)
Close                     Method        System.Void Close()
Continue                  Method        System.Void Continue()
...
[/code:1]
关于对象类的信息,复制类型名称,如System.ServiceProcess.ServiceController,在MSDN查找,在MSDN,你可以了解基于该类的对象的属性。方法等详细信息。

要查明某特定对象所有属性的值,用管道符(|),将"get"命令的结果送至Format-List或Format-Table命令,用format命令的Property参数加上代表所有的(*),比如要查明Schedule服务的所有属性的值,输入:

[code:1]Get-Service schedule | Format-List -Property *[/code:1]

结果如下:

[code:1]Name                : Schedule
CanPauseAndContinue : True
CanShutdown         : True
CanStop             : True
DisplayName         : Task Scheduler
DependentServices   : {}
MachineName         : .
ServiceName         : Schedule
ServicesDependedOn  : {RpcSs}
ServiceHandle       :
Status              : Running
ServiceType         : Win32ShareProcess
Site                :
Container           :[/code:1]

当最初学习PowerShell的时候,你并不需要理解关于对象的任何事,但请始终把对象的概念记在脑中,不久你就能使用对象,并发挥其最大效能。

TOP

刚出来时就被黑客发现漏洞,所以在后几个vista里被删除了吧

TOP

不明白微软的用意。

TOP

基于对象的管道行


使用对象的一大优点在于,使得管道行更为方便,管道即将一个命令的输出,作为另一个命令的输入。传统上,这一通信过程需要通过字符串处理将输出从一个格式转换为另一个,移除列表的标题头等。

Windows PowerShell提供了全新的基于对象而不是文本的交互模式,接受对象的cmdlet可以直接对其属性和方法进行操作,无须任何转换。用户可以以名字引用对象的属性和方法,而不用计算输出中数据所在的确切位置。

TOP

交互环境

和其它Shell类似,PowerShell支持完整的交互环境,当你在提示符下输入命令,处理后的输出回显于shell窗口。你也可以将命令的输出送至文件、打印机,或用管道符送至另一个命令。

TOP

脚本支持

如果你经常重复运行一系列特定顺序的命令,或需要使用一系列命令完成一个复杂任务,你或想要把这系列命令存储在文件中并执行,而不是在提示符下重复输入。这样包含命令的文件叫作脚本。

除交互界面外,Windows PowerShell完全支持脚本。PowerShell的脚本文件扩展名为.ps1。要运行脚本,在提示符下输入脚本名,扩展名是可忽略的。

[code:1]C:\test\testscript.ps1[/code:1]



[code:1]C:\test\testscript[/code:1]

你必须指明脚本文件的完整路径,即使脚本在当前目录下。要表明当前目录,用(.)表示,比如:

[code:1].\testscript.ps1[/code:1]

虽然脚本非常有用,甚至在企业环境中很关键,但它们可被用于传播恶意代码。因此,PowerShell的安全策略(名为执行策略),让你决定脚本是否可以执行,是否必须包含数字签名。为了消除隐患,PowerShell的任何执行策略都不允许你直接点击脚本图标来执行。更详细的信息,请输入

[code:1]get-help about_signing[/code:1]

Windows PowerShell包含了丰富的脚本语言,让你开发从最简单直到非常复杂的脚本,它支持语言结构,如循环、条件、流程控制、变量赋值等等。

TOP

这么牛 X 啊,那还要图形界面干啥哦

何不跟我的 Linux 服务器一样,启动起来后,直接到 SHELL 界面    


       高举马列主义毛泽东思想 !!!

TOP

你能不能不要来说风凉话了,我辛辛苦苦的帖子,不要水了,有的是帖子给你水。

TOP

跟"又卖矛又卖盾"的商人,一样的哦    


       高举马列主义毛泽东思想 !!!

TOP

获得帮助

Get-Help cmdlet是学习PowerShell非常有用的工具。通过阅读cmdlets的描述,学习概念,探索语言话题,你可以获得PowerShell的入门之道。

第一个有趣的话题也许就是帮助系统本身,输入

[code:1]get-help[/code:1]

获取PowerShell的帮助系统信息。

接下来,你可能有意学习几个基本的cmdlets,如Get-Help, Get-Command, Get-Process, Get-Serivices, Get-Eventlog等。

要显示这些命令的简要帮助,只需要输入`get-help'后加cmdlet名即可,比如,获取Get-Command的简要帮助,输入:

[code:1]get-help get-command[/code:1]

如果帮助文件没有正确格式化,开头显示了XMLNS标签,那么你系统PowerShell的执行策略可能阻止载入格式化帮助文档的配置文件,请输入:

[code:1]get-help about_signing[/code:1]

要获得详细的cmdlet帮助,包括参数的详细描述,范例等,可加上Get-Help的Detailed参数,如

[code:1]get-help get-command -detaild[/code:1]

要进一步显示cmdlet的所有可用帮助,包括技术细节,使用Full参数,如:

[code:1]get-help get-command -full[/code:1]

还可以选择只显示帮助文件的一部份,比如只阅读示例部分,用Example参数:

[code:1]get-help get-command -example[/code:1]

只阅读参数描述,使用Get-Help的Parameter参数,可选择制定参数名,或用通配符(*)代表所有参数,比如,显示Get-Command的TotalCount参数的帮助:

[code:1]get-help get-command -parameter totalcount[/code:1]

显示所有Get-Command参数的描述:

[code:1]get-help get-command -parameter *[/code:1]

你还可使用调用Get-Help的函数来显示帮助,其中Help函数,一次完整显示帮助文件;而Man函数则类似Unix的Man,可分屏显示。

[code:1]help get-command[/code:1]

[code:1]man get-command[/code:1]

当你请求特定帮助话题,Get-Help显示此话题内容,但当你用通配符请求不止一个话题的时候,Get-Help显示话题的列表。比如,显示所有"Get" cmdlets的帮助话题列表,输入:

[code:1]get-help get-*[/code:1]

输出:

[code:1]Name                                    Category
----                                    --------
Get-Command                             Cmdlet
Get-Help                                Cmdlet
Get-History                             Cmdlet
Get-PSSnapin                            Cmdlet
Get-EventLog                            Cmdlet
Get-ChildItem                           Cmdlet
Get-Content                             Cmdlet
…[/code:1]

有关PowerShell概念的帮助以"about_"开头,要显示某个PowerShell的概念,输入"get-help"后跟概念名称,比如获得通配符这一概念的帮助,输入:

[code:1]get-help about_wildcard[/code:1]

显示所有PowerShell中概念的帮助话题列表,输入:

[code:1]get-help about_*[/code:1]

阅读帮助话题,尝试其中的例子,你可以逐步理解PowerShell是如何工作的,如何在你工作中使用它。

TOP

加个精吧,因为我看不懂,也不知道这么强大的东西有什么用。
省级正规期刊《科技经济市场》现开始面向全国征集2007年学术论文,杂志出刊周期短,录用快,欢迎投稿。
有意者PM

TOP