Windows Power Shell 入门系列.docx

上传人:b****5 文档编号:6208858 上传时间:2023-01-04 格式:DOCX 页数:19 大小:74.71KB
下载 相关 举报
Windows Power Shell 入门系列.docx_第1页
第1页 / 共19页
Windows Power Shell 入门系列.docx_第2页
第2页 / 共19页
Windows Power Shell 入门系列.docx_第3页
第3页 / 共19页
Windows Power Shell 入门系列.docx_第4页
第4页 / 共19页
Windows Power Shell 入门系列.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

Windows Power Shell 入门系列.docx

《Windows Power Shell 入门系列.docx》由会员分享,可在线阅读,更多相关《Windows Power Shell 入门系列.docx(19页珍藏版)》请在冰豆网上搜索。

Windows Power Shell 入门系列.docx

WindowsPowerShell入门系列

1.WindowsPowerShell入门系列之一:

开始 

原文链接:

几年前,脚本孩子得到了驾照,同一天,脚本爸爸带儿子去完成他的首次驾驶。

就像你们可能想象到的一样,脚本孩子十分兴奋,甚至无法等待他的爸爸将车开到预定的地点。

他们停好车后,脚本爸爸和脚本孩子交换了他们的座位。

脚本孩子启动了汽车,认真地调整好了镜子的角度,松开了手刹,并将变速箱调整到了行进档位。

接着,他停止了所有的动作。

为什么停止?

就这么简单:

想开车是一回事,而真的开车是完全不同的另一件事。

你不能责备脚本孩子的犹豫,毕竟,他一直以来都只会骑自行车,他能骑自行车到达许多他想去的地方。

既然如此,那又有什么理由改变呢?

为什么要放弃一个实践证明可行的交通方式,而采用另一种新的,你未必喜欢的,况且对于你来说或许太难的方式呢?

诚然,汽车相比自行车有些优势,但是代价是什么呢?

同样的事情,正发生在在为WINDOWS系统管理工作而设计的新技术上。

现在你们大家都可能听说过WindowsPowerShell,微软的新命令行CONSOLE和脚本语言,或许你们很多人都下载并安装了PowerShell。

(如果你还没有这么做,那么请到下载WindowsPowerShell去查看更多信息)然而,就像脚本孩子一样,也许你也到此为止了。

毕竟,想用新的命令行CONSOLE和脚本语言是一回事,而实际使用这个命令行CONSOLE和脚本语言,是完全不同的另一件事。

你已经使用了几年的GUI,cmd.exe,以及VBScript,你本来就可以实现几乎所有你想实现的系统管理工作。

为什么还要改变呢?

为什么要放弃一个实践证明可行的系统管理方式,而采用另一种新的,你未必喜欢的,况且对于你来说或许太难的方式呢?

这些都是很好的问题和正常的疑虑。

坦率地讲,我们也不能解释这些问题。

但是,我们要说的是:

拿到了驾照,不是说你就再也不能骑自行车了。

交通方式不是唯一的:

拿到小轿车的驾照不等于你就不能骑自行车、开公交车,或者骑摩托车(甚至喘着气步行)。

你宁愿骑自行车?

没问题!

想骑自行车的时候,你就骑自行车,想开汽车的时候,你就开汽车。

如果你发现骑自行车给你带来更多乐趣,那么,你就骑自行车,只在真正需要的时候才开车。

WindowsPowerShell也是一样。

如果你学了PowerShell,难道就意味着你不能再继续使用GUI,并且抛弃你所有的VBScript吗?

当然不是!

许多人都认为:

PowerShell是VBScript和其他管理技术的替代品。

这不正确。

准确地说,PowerShell是VBScript和其他管理技术的补充。

也许经过一段时间的使用,有人会觉得“喔!

我喜欢PowerShell,我想我会把PowerShell用在所有任务”,没问题!

祝你开心,把你的问题告诉脚本专家,让我们看看有什么能帮你的。

另外一些人会觉得:

“我不太肯定,我喜欢PowerShell提供的一些功能,但我已经在VBScript上面花了很多时间。

我宁愿继续使用VBScript。

”,那么会怎么样?

同样没问题!

就像俗话所说的一样:

如果东西没坏,就不要去改变什么。

如果VBScript工作得没有问题,那么就继续使用它。

那么为什么还要考虑WindowsPowerShell?

有几条理由:

第一,它就像是一个驾驶执照,你可能永远用不着它,但最好还是能有一个。

确实,目前看来,PowerShell可能还没有什么大不了的。

PowerShell能做到的大多数系统管理任务,VBScript早就能够做到了。

但另一方面,也有一些例外:

比如,如果你想实现自动化管理微软ExchangeServer2007,你就必须使用PowerShell。

随着时间的推移,这些“例外”可能会演变为规则:

因为PowerShell会被连续地改进、加强(PowerShell2.0正在开发),而VBScript却不会。

不得不承认,你可能现在还不需要PowerShell,但很快,也许就会发生改变。

因此为什么不乘现在你有时间,并且可以根据自己的时间安排进度,提前先开始学习呢?

这个,就是这篇WindowsPowerShellManual手册的初衷:

本文希望用温和且轻松的方式介绍WindowsPowerShell。

就像很多其他手册,我们告诉你怎么踩油门,怎么“驾驶”你的新命令行CONSOLE和新的脚本语言。

其后,我们也要告诉你怎么维护你的新命令行CONSOLE以及脚本语言。

并且请不必担心,除了标准内容,我们也会介绍一下一些附件和自定义的项目。

我们知道你们其中一些人已经安装了WindowsPowerShell,并且从那时起,就坐在一旁想:

“好了,现在该干什么了?

”。

如果你也是这样,好,你可以停止烦恼了,你已经来到了正确的地方。

2.WindowsPowerShell入门系列之二:

启动

原文链接:

当你安装WindowsPowerShell时,安装程序已经为你安装好了一个快捷方式。

对于WindowsXP和Windows2003,快捷方式应该在“开始-所有程序-WindowsPowerShell1.0-WindowsPowerShell”。

没找到快捷方式?

那么PowerShell的默认安装路径在%windir%\System32\WindowsPowerShell\v1.0(例如:

C:

\Windows\System32\WindowsPowerShell\v1.0)。

打开文件夹,双击PowerShell.exe。

当你启动WindowsPowerShell后,会看见类似下图的一个窗口:

如果你在想“咦,这个看上去就像MS-DOS命令行窗口“,对了!

PowerShell正是利用了MS-DOS的命令行SHELL。

这样做至少有一个好处:

因为你可能已经使用了无数次旧的命令行窗口,那么你对如何使用PowerShell已经有了一个很好的基本概念:

键入命令然后按下ENTER键。

例如,你知道你的IP地址吗?

键入ipconfig然后按下ENTER键。

PSC:

\Scripts>ipconfig

WindowsIPConfiguration

EthernetadapterLocalAreaConnection:

       MediaState...........:

Mediadisconnected

EthernetadapterWirelessNetworkConnection:

       Connection-specificDNSSuffix .:

       IPAddress............:

192.168.120.17

       SubnetMask...........:

255.255.255.0

       DefaultGateway.........:

192.168.120.1

正如上面的例子所暗示的一样,你可以在PowerShell中运行所有的命令行可执行命令。

你甚至可以在PowerShell窗口中运行你的VBScript和批处理文件。

你想在WindowsPowerShell窗口中运行C:

\Scripts\Test.vbs吗?

没问题:

PSC:

\Scripts>test.vbs

Microsoft(R)WindowsScriptHostVersion5.6

Copyright(C)MicrosoftCorporation1996-2001.Allrightsreserved.

 

ThismessagewasgeneratedbyTest.vbs.

另外,在WindowsPowerShell中你可以找到许多你喜欢的终端命令,比如cd和cls,甚至UNIX命令如ls。

虽然也有些不重要的小小例外,但这些命令几乎会完全按照你期望的方式运行。

你想把当前目录从C:

\Script改变到C:

\Windows吗?

只需要使用一条cd命令:

PSC:

\scripts>cdc:

\windows

PSC:

\WINDOWS> 

 

Or,ifyouprefer:

 

PSC:

\scripts>chdirc:

\windows

PSC:

\WINDOWS>

一般情况下,这些终端命令都是WindowsPowerShellcmdlets的“别名“。

如果你愿意看一下完整的别名列表,只需要输入下面的命令,并且按下ENTER:

Get-Alias

PowerShell是大小写不敏感的,你也可以这样输入这个命令:

get-alias

甚至这样:

geT-ALIaS

3.WindowsPowerShell入门系列之三:

停、停,等等,什么是Cmdlets?

 原文链接:

哦,对了,问得好。

Cmdlets是WindowsPowerShell的命令,它们有些类似命令行工具。

(然而,Cmdlets只能在PowerShell里使用,没有运行PowerShell时,你是不能单独运行PowerShell的Cmdlets的)。

如果没有命令行工具,Cmd.exe也不会有太大作为的,即使它有那么几个内置命令(例如cd和cls)。

许多“高级“的(以及大多数有用的)任务,都是通过命令行工具完成的,比如ipconfig.exe和ping.exe。

WindowsPowerShell也以相似的方式工作:

虽然PowerShell已经有了一些内置的命令,但大多数高级的工作,还是必须通过Cmdlets来完成。

实际上,PowerShell的命令(比如cd)没有更多的含义,它们都只是Cmdlets的别名而已,它们只是Cmdlets的“昵称“。

在这个例子中,cd命令只是一个调用Set-Location这个Cmdlet的另外一种方法。

想切换当前目录到C:

\Windows?

你可以直接使用Set-Location替代cd命令:

PSC:

\scripts>Set-LocationC:

\Windows

PSC:

\WINDOWS>

当然,WindowsPowerShell中包含的Cmdlets功能远远比切换目录强大得多。

举个例子来说:

输入下面的命令,然后看看会发现什么:

PSC:

\WINDOWS>Get-Process

你会得到下列类似的返回结果,所有正在你计算机上运行的进程信息!

Handles NPM(K)   PM(K)     WS(K)VM(M)  CPU(s)    IdProcessName

------- ------   -----     ----------  ------    -------------

   103      5    1296      3676   32    0.05  2964alg

   264      7    4872     10244   70    0.84   920asghost

   101      4    3080      4692   38    1.77  2124atiptaxx

   168      7    5584      6968   54    0.30  2896BTStackServer

   143      5    3712      6640   52    0.30  2776BTTray

   752     13   11048     20256   77    2.81   452CcmExec

   672      7    2796      6864   68   18.80  1184csrss

   139      6    1204      4544   38    0.70  2760ctfmon

很灵活吧?

或许你还想列出C:

\Scripts目录下的所有文件,包括所有子文件夹中的文件,你只需要输入:

Get-ChildItemC:

\Scripts-recurse

我们所做的,只是调用了Get-ChildItem这个Cmdlet。

你也许注意到了我们传递给Get-ChildItem一对参数:

C:

\Scripts和-recurse。

正如你猜到的一样,C:

\Scripts是我们希望列举文件的目录路径名。

你也许还注意到,我们没有把目录路径名称用双引号括起来。

在PowerShell中,有一条规则几乎总是成立:

没有必要把参数名用引号包围起来,除非……你的参数中包含空格。

比如:

假设你要列举在C:

\DocumentsandSettings\KenMyer目录下的所有文件。

由于这个路径中含有空格,因此需要将路径名用双引号包围起来:

Get-ChildItem"C:

\DocumentsandSettings\KenMyer"

我们最初那个命令的第二个参数,-recurse,告诉Get-ChildItem递归地获取目录文件信息。

这是告诉Get-ChildItem获取所有C:

\Scripts的子目录信息(以及子目录的子目录)。

WindowsPowerShell1.0有129个Cmdlet,这些Cmdlets包括文件、文件夹管理,文本文件读写,事件日志管理,甚至可以创建COM和.NET框架的对象。

现在,一切都进行得很好,但是在坐到方向盘后面开始驾驶之前,脚本孩子并没有真正学过开车。

阅读并不能替代实践。

WindowsPowerShell没有什么不同,你也可以阅读有关Cmdlet的相关资料,但是仅仅通过阅读,你不会得到对cmdlets的全面感受,以及它们能做什么,直到你真正坐到方向盘后面开始实际地使用WindowsPowerShell。

当脚本专家无法做到副驾驶位置并给予你指导时(就像“减速!

看路边!

不要这么猛地踩刹车!

”),我们可以做第二好的选择:

我们提供每一个步骤的指引,带领你使用WindowsPowerShell完成一些典型的系统管理场景。

如果你觉得这很有趣(为什么不呢?

),你可以去我们的PowerShell虚拟实验室看一下WindowsPowerShellvirtual。

提示:

这里有一个可以节约时间的小提示。

当cmdlet和参数一起使用时,你可以只输入恰好可以唯一识别这个参数的字符数量。

这是什么意思?

比如,Get-ChildItem只有一个参数(recurse),这个参数以字符r开头。

这意味着我们可以使用下面的命令格式表示-recurse参数:

Get-ChildItemC:

\Scripts-r

如果Get-ChildItem还有一个参数以字母r开头,我们假设它叫-readonly。

在这个例子中,我们可以这样指定-recurse参数:

Get-ChildItemC:

\Scripts-rec

为什么需要输入-rec?

很简单:

我们必须键入足够的字母(3位),才能让cmdlet区分出-recurse和readonly:

-recurse

-readonly

还是觉得打字太多了?

那好,如果你用gci这个别名(不用说,gci就是Get-ChildItem的别名),你可以用下面的简短命令递归地获取C:

\Scripts目录的内容:

gciC:

\Scripts-r

酷吧!

4.WindowsPowerShell入门系列之四:

我有几个问题要问你们

 原文链接:

 

是的,我们知道:

你想了解另外还有哪些cmdlets,你还想了解这些cmdlets都有什么用。

真实情况是:

我们无法在这篇文章里解答这些问题。

然而,我们可以给出一个容易接受的资源,你可以自己回答这些问题。

首先,WindowsPowerShell是一个非常容易交流而且开放的技术:

你只需要提出问题进行询问,PowerShell会非常高兴地告诉你所有关于它的一切,还记得Get-Alias这个cmdlet吗?

它返回一个所有别名的列表。

与此类似的,还有一条cmdlet:

Get-Command,它返回一个所有cmdlets的列表。

下面是部分Get-Command的返回信息:

PSC:

\scripts>Get-Command

 

CommandType    Name                                               Definition

-----------    ----                                              ----------

Cmdlet         Add-Content                                        Add-Content[-Path][-Value]

Cmdlet         Add-History                                        Add-History[[-InputObject]][-Pass...

Cmdlet         Add-Member                                         Add-Member[-MemberType][-Name]...

Cmdlet         Add-PSSnapin                                       Add-PSSnapin[-Name][-PassThru][-Ve...

Cmdlet         Clear-Content                                      Clear-Content[-Path][-Filter

Cmdlet         Clear-Item                                         Clear-Item[-Path][-Force][-Filter...

Cmdlet         Clear-ItemProperty                                 Clear-ItemProperty[-Path][-Name]

捷径:

每行最后的三个点(…)表示什么意思?

它们表示还有些信息没有完全显示出来。

有没有办法让所有信息都显示出来呢?

有!

只需要使用List视图显示信息:

PSC:

\scripts>Get-Command|Format-List

这样,你就能按顺序获得所有cmdlets的完整信息了:

Name            :

Add-Content

CommandType     :

Cmdlet

Definition      :

Add-Content[-Path][-Value][-PassThru][-Filter][-Include

                  ]>][-Exclude][-Force][-Credential][-Verbose][-Debug][-ErrorAction

                  ctionPreference>][-ErrorVariable][-OutVariable][-OutBuffer][-WhatIf][

                  -Confirm][-Encoding]

                  Add-Content[-LiteralPath][-Value][-PassThru][-Filter][-Include<

                  String[]>][-Exclude][-Force][-Credential][-Verbose][-Debug][-ErrorAc

                  tion][-ErrorVariable][-OutVariable][-OutBuffer][-Wh

                  atIf][-Confirm][-Encoding]

 

Path            :

AssemblyInfo    :

DLL            :

C:

\WINDOWS\assembly\GAC_MSIL\Microsoft.PowerShell.Commands.Management\1.0.0.0__31bf3856ad364e35\Micr

                  osoft.PowerShell.Commands.Management.dll

HelpFile        :

Microsoft.PowerShell.Commands.Management.dll-Help.xml

ParameterSets   :

{Path,LiteralPath}

ImplementingType:

Microsoft.PowerShell.Commands.AddContentCommand

Verb            :

Add

Noun            :

Content

我们怎么做到这个的呢?

当查询返回时,Format-List是一个cmdlet,它接收信息并把它们按照listview的格式输出(listview表示每行显示一种信息,而不是把信息以列的形式显示在一个表中)。

但是这个奇怪的符号“|”表示什么呢?

其实,这个符号是一个管道符号,它表示

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 解决方案

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1