打印

[分享] POWERSHELL的应用的学习笔记(原著:BRUCE PAYETTE)

本主题被作者加入到个人文集中

POWERSHELL的应用的学习笔记(原著:BRUCE PAYETTE)

感谢大家.感谢在技术领域有着神奇色彩的作者./ F0 ^! o- y# P9 g: W
让我们来见证微软下一代的命令行工具-POWERSHELL的应用。
9 h! q5 z; r+ b4 j电子书下载地址:http://www.sharecenter.net/thread-147181-1-1.html C" A) i9 E+ A
WELL,现在开始
% q5 i. s5 | \0 q前言:0 ?& s% z) s. ^% G$ p4 p2 G
powershell有着宽广领域,有多种语言的影子。你可以用它完成有价值,
4 ?5 f( w- T" L2 q& T繁杂的脚本来管理你的生产服务。再深入一点,你可以自己写.NET程序来访问可敬的.NET frameworks.
; o4 C) p% P' O& R; f开发powershell时。本来考虑使用人机交互的shell(笔记:壳的术语被描述为一块缓冲操作系统核心函数的一块软件,详细描述在第九楼)或者脚本" \* ^3 A9 J2 H$ P% c9 ~% C
语言而避免使用.NET,因为C#和VB.NET很难包括在里面。现在,powellshell已经融合了近30年里每种系% h4 b4 C( J0 M
统,也许,第一次使用powershell,也会找到熟悉的感觉。
/ |2 O" D4 ]% w/ t* I 也许,我们能作得更好,为加强powershell的影响力,我们建立了一个社会机制,为我们的顾客提供+ P- e' D8 o5 Y Z2 m' s# X- z4 W
了简单的解决方案:. ^) ^) r- o& \/ I |; P; v
●初学者能飞快的成为资深用户,加强他们职业生涯和薪水的潜质。
& n4 h2 K4 s$ Z' d ●让资深用户用轻便的,特殊的方法来完成简单的问题;用自得而针对产品的方法来完成复杂的问题
: F! v) M: }+ I- i: x ●为初学者和资深用用建立大型的交流平台,共享经验,应用和存在的脚本。笔记:我知道一个
& Z7 \8 W: P; A: R0 G1 i(www.microsoft.com/powershell)
' i2 ?. P; W6 F1 m l ●建立一个吸引猎头公司或增加雇员受雇机会的生态系统。" ?; a8 G& E6 \! c$ ^* X6 }3 z) Z8 R
powershell是能设计还是工具的解决方案,我们为此进行着争论。也许他能同时实现两者。我们很难
% o j0 a7 S4 K' y1 t进行选择,但我们的任务是必须进行选择,因此我们的版本停止下来。这时Bruce Payette参加了进来,& u2 j# B; M' U$ ^6 z. j1 s
他是powershel TEAM的奠基人,也是开发队伍的领导者。Bruce Payette和Jim Truher是很好的搭档,Jim
) o' Z5 q, ]7 u m( j& ]Truher是项目经理也是开发团队另外的奠基人。作为项目经理,Jim倾听有远见的用户的声音并贯彻实行.' n+ v! S5 e j' W; w# W
Bruce是一个行走的百科全书。每一个好的坏的正统和古怪的语言特征都实验了近十次。发现问题时,+ S0 \9 b# |: Q8 ~
Bruce解释不同的语言特征间类似的地方,在哪里,我们作得好和作的坏的地方。Bruce为我们解决了很. ?5 O8 n1 _9 b9 J
多问题。他的影响力激励着我们完成了野心勃勃的目标% j/ r& o* C! M6 }: Q
powershell是新的产品。我认为你将不得不花费时间来学习它。我们增加了新的概念,语法,技能。( ^- f+ G/ T# A8 c0 W
我确信你可以在任何地方重用你的元素。学习减少工作量并把所有工作价值发挥到最大。
/ f, P' d U1 b6 ]" V7 j2 ^5 p) X 有一个流行的笑话:两个好朋友在树林里吵醒了一头熊,那熊想将他们当午餐。两个好朋友就跑啊跑6 [0 `: W8 z7 `8 U2 R) q
啊。其中一个人突然停下来换起了跑鞋。前面的一个朋友就说了。熊可以跑出每小时30英里,我们没可9 Y) {* ]3 i+ J; m" E
能生还的。换鞋的朋友说我没考虑过跑过熊,只想过跑过你
1 P5 [) R5 ~! l 看到读到的很多事,也许很难理解。除非你理解了并为之产生兴趣。我喜欢Bruce的书其中一个原因2 C9 J& Z6 ?/ ~/ X
在于。他为powershell增加了许多参考。这些参考提供了很多简洁的描述来让你得到深层次的思考。这, V% A8 D9 i( k. I( J9 d1 S
样的书,只有Bruce才能写出来。3 Q, ]) b" n% L, o% l

; J/ t% w. [' V' l2 S
' A0 r( k# _* M, b8 l3 cJEFFREY SNOVER
* y; m, J/ f' e5 C6 KWindows PowerShell Architect
( h$ F; ]: i4 C# D, w. E
7 e' R1 r& A5 c5 n; x) V1 J内部研究资料,请勿转载
. W D' C) U2 l( K$ l
% W! y# D3 w1 J8 T. g[ 本帖最后由 kenknigh 于 2008-6-4 17:10 编辑 ]
云烟缈缈几层间,万水千山显世间,梅兰竹菊朦胧伴,英才陪书与昼夜。
欢迎骚扰:kenknigh@hotmail.com                

TOP

关于本书:
7 e @) }, B2 Q* f5 E5 z8 sWindows PowerShell 是微软下一代的壳和脚本环境。在powershell里,确实修复了windows命令得和解决方
7 C4 i# H; Z* c4 L4 {' W( t
# A- D0 U' [) k: w案中存在的弱点。它是为windows自动化管理员解决问题而开发的。windows本来和一些已知的有竞争性的; D b/ k! v: U8 q
$ u1 R5 D Z; @/ `+ T5 Z5 |
系统对抗中缺少一些特殊的功能。powershell全面的融合了.NET,现在,它在系统管理空间中具有广泛的! T- D1 |& b- i* A
- r. u; Q6 k5 e$ K$ r
潜力。powershell现在可以运行在文本处理,生成脚本,建立部门的管理,建立测试框架和许多方面。
0 j1 I+ ^4 S5 P3 u7 x" s
6 V! ?7 h, m; f这本书是powershell的一位重要的负责人所写,书中用了很多例子,来举例说明语言的特征,这个环境告
# N, L K1 `5 Q2 W
& I: T8 s9 w' R" s' B诉你如何利用这些特征来飞快有效的编写解决方案。
; k4 [) K% m N. p4 t5 Z- s3 Q$ dpowershell有宽广的焦点。这本书也有宽广的焦点。这书并没有设计成像食谱一样例子的格局,像管理AD
# L: q3 ^ P ~- v* G0 x7 g: G5 D6 J+ k7 @% p3 W
,EXCHANGE。相反,本书采取了实时跟踪powershell为核心,并且用powershell自己的方法来编写解决方/ M8 ~3 O9 l5 K# Z

) _9 F' }; n8 g9 N. i% Q案。2 r) {$ j! ]9 A9 {
阅读完本书后,你可以用Visual Basic或者C#等其它的语言重写书中的例子,在powershell下完成解决方( [( h9 z3 I0 O0 b

! ]+ H! O) [/ H* \案。(本书附录A中,用了很多篇幅来解释他们的不同。)
\0 F* G" E( k" X. a" \# o" F 还有个问题,本书中不包括powershell SDK.PowerShell既是个hostable(这意味着,powershell可以9 I8 |- K4 z& A7 A
2 {# E' M2 `2 d3 J+ l) `
植入其它的应用) 也是个可扩展的环境。这本书并不讨论这个话题,取而代之的是,本书专注于讨论shell
; q5 `3 \! b5 _1 f9 ]+ h: p# [' D/ J) }/ H& a4 B2 J
用户和脚本小子。在第11篇,我们还用一个powershell 脚本解释了怎样载入和使用.NET汇编.- w/ C: u6 @, j) B. |9 B# R
2 ?) C- z, I7 s/ n( H
这本书的适用人群:
$ [0 k$ Z/ j7 t: v" {* c% k本书适合用于想学习和使用powershell的人群,与其说本书是个菜谱,不如说本书为读者提供了! B1 P! [# j& h; Q# Z3 u

! Z4 O# b) W2 t' Z# N* C0 [powershell如何工作和实现的深层次的知识。所有的powershell用户都将发现本书是有益并且有用的。
8 K! ]" L% }2 U+ u6 T$ a, q如果你是位系统管理员,这本书适合你。如果你是位急着把事作好的开发者,如果你是.NET爱好者,或者# b- A% Y) T4 l- d; e- u
; ]* P" Y) i1 r5 ^" X+ `$ ^- Y
想体会计算机?-----powershell适合你,而且这本书就是为你所写。
云烟缈缈几层间,万水千山显世间,梅兰竹菊朦胧伴,英才陪书与昼夜。
欢迎骚扰:kenknigh@hotmail.com                

TOP

代码约定; l0 c5 F j# g( G- L
powershell作为人机交互式环境出现之后,我们可以看到很多用户输入的能作为例子的命令,然后后面跟
1 n) e# J7 s9 h0 Q" X) u
5 U2 [- g. `& Q: N6 c' g. _了系统生成响应。在命令文本之前,我们可以看到PS C:\>这样的提示字符。而真正的命令将要用粗体显" b) _2 @( K0 }6 q
, a3 y( [: O3 m0 \0 [0 }: G2 h2 g T' M0 z
示在其后。(笔记:其实一开始可能是这样PS C:\Documents and Settings\Administrator>,可以用
: y- `+ J" e( h/ M+ \
& h0 A @ X6 `, B* u- Zset-location命令改变位置。比如set-location -path c:/;set-location -path ..; set-location可以
3 L& h- D- r# G: U0 K: _
) Z; p$ b& i" K: ~0 D$ E: ^缩写成sl)同时,一些命令将要跨越多重行,接下来的命令将会显示在>>之前(笔记:第一
& K2 h( ~ {3 c5 D3 j
) ^9 J9 k) s2 x8 k5 f5 F8 U行命令之后加|符号可引发换行。如果未尾是(,可以用exit终止) f5 q+ C( ~" c0 _: Y
这本书的全部代码可在网站处下载www.manning.com/payette3 g* w9 C6 w0 [( ?/ U# U! [
你需要先下载安装powershell,powershell可以运行在xp,2003,vista上,安装powershell时也需要安装.net framework2.09 V5 ?. P8 ~ D/ D$ k
powershell' M' f! H9 F/ D! j( j9 g0 H
http://www.microsoft.com/windows ... shell/download.mspx
' f* S# Y6 b7 {
$ `8 O/ W8 z9 f.net framework2.0. w* N- e6 W# S! a: x
http://download.microsoft.com/do ... 38565a/dotnetfx.exe* G% \' m3 t( Z

* J$ J* J8 h$ F/ N" H7 l[ 本帖最后由 kenknigh 于 2007-5-13 23:10 编辑 ]
附件: 您所在的用户组无法下载或查看附件
云烟缈缈几层间,万水千山显世间,梅兰竹菊朦胧伴,英才陪书与昼夜。
欢迎骚扰:kenknigh@hotmail.com                

TOP

引用:
原帖由 qkl12345 于 2007-5-12 20:45 发表 1 M+ q) ?- H% e2 C% ?# G
好象我有过 不过后部分的英文看不太懂
% E2 w5 f# H/ p4 A" ?脚本是很重要的。英文书很多人不习惯。
3 ]: R. L3 w' D: p" P4 X4 @" V我看这电子书时跳过很多,也只看到了第二篇。并且,只是看实例的部分,因此,我在作这个笔记时,比较吃力的。4 v3 k) I5 d+ O# Q1 Y
+ R- E# d* `3 W1 N3 e: J
也许,我们可以共同来研究这本电子书,我的能力,也只是让程序爱好者们在不喜欢看英文书时,. Q+ |, J8 Q- n: c# {4 K4 G* n% K8 E o
大致了解一下作者的思想。这样,人们的智慧之光可以让我们这个"脚本天堂",特别是powershell的大门,最为耀眼。
云烟缈缈几层间,万水千山显世间,梅兰竹菊朦胧伴,英才陪书与昼夜。
欢迎骚扰:kenknigh@hotmail.com                

TOP

作者在线3 k' T3 L, ^" B8 H8 s s
构买此书后你将得到访问Mannigh出版社运营的网站的访问权(笔记,我不知道怎么回事,也许值得一看0 }; q4 _4 t$ c; B5 b, |* I
" y/ c9 Y# J V5 G o8 @4 U
,虽说是外国人,也是有激情热情富有幽默感的民族,不是吗。也许,能揭开另一个人的性格,当然,7 r- t$ G3 q8 N0 v) ^) o+ m3 C

! {/ T! ^2 W- f0 S( u) b. a, f我是很有参与性和领悟力的,哈哈),在那里,你可以提出意见,提出技术问题来得到作者和其它用户的
: P t( D$ w4 ?3 W; u6 L" V) K3 a) J0 L9 l& w+ j8 R
帮助。出版社禁止我们为个别读者提供可能发生的电话交流。我们建议你询问一些有挑战性或有争议的6 t6 [. h3 b- r
. N: \# X( q9 ?0 `( {
问题,否则作者可能没什么兴趣来回答。在书本在印刷时,为本书提供支援的讨论点就会开通。网址:( I, V( _9 |7 Q- H3 H, a8 x

: U1 w* w. B2 ^3 p+ ]0 ?$ Gwww.manning.com/payette。这个页面告诉了你在第一次注册时怎样进入论坛,得到什么样的帮助,和. _' P! G6 R7 z! }3 l* s, b
$ O C& v4 M0 T3 Z( I$ {; o6 j
论坛礼仪。; U/ b1 f5 f- V: a$ T1 f
, K8 [4 P' M: A) S+ \5 Y2 k$ n
关于作者& w( ^+ }2 l e9 O
Bruce是windows powershell team的奠基者,和Jim Truher一起合作设计了PowerShell 语言.也是语言方面: O, Q5 d% s: L

/ m, K+ z2 q7 D% q, z; W$ ]重要的作家。2001年加入微软,开始在Interix项目工作,不久就帮助建立了powershell项目。在微软工
, l8 [8 t+ {; o8 I4 X7 b
8 o5 e9 Y8 r$ |2 W作期间和很多员工部门合作过。包括Softway(建立了Interix),MKS来建立windows上的UNIX工具。& |5 H+ A. E* z9 k* T
Bruce在华盛顿,贝尔维尤市,和他的妻子,许多的计算机,三只非常溺爱的猫生活在一起。
云烟缈缈几层间,万水千山显世间,梅兰竹菊朦胧伴,英才陪书与昼夜。
欢迎骚扰:kenknigh@hotmail.com                

TOP

这本书被编写为两部分。第一部分提供一个深层次的浏览和运行时间,它的目标是为新的powershell用户" f/ X6 W& h9 D5 f8 d
" e3 Y1 L" i8 N. X7 c z0 h' H1 k
介绍powershell,为有经验的powershell用户提供洞察事情怎样和为什么这样的。第二部分为大的应用提
9 P2 a6 W. Z. E6 v
' |/ q" \$ j9 s; o2 W; _9 L6 a供长的例子和短故事。 S) \" Y. T4 G& h' E# [& J* Z
在第一部分我们将要看powershell所有的方面,包括语法和输入系统。在这个过程中,我们用最近的例子
* ?* [9 O+ k) y7 s$ }) M: {& b8 c( n
来展示每个工作的特性。在专注于第个特性时,在一个交互会话中,我们输入的大部分例子都是相当短小
5 w0 ]0 P9 S% k7 y& Q. w& b" z2 @$ ]- Q. y
的。
' B) v$ d" q, `2 ]. A第一部分有九篇,介绍了powershell的每一个元素。在第一篇中我们从powershell建立时的小故事和基本
4 _7 d; G% s( B+ ^- v2 u
$ `9 c& `' z, P* U6 |& J. s原理开始。然后得到环境的各种特性。第二篇介绍了基本概念。第三篇是dos的基本命令。第四五篇是操
1 W. q+ }; o, {1 u
# ]9 G9 H' Q5 d作符和表达式。第六篇介绍了语言结构像流控制语句。第七篇介绍了函数和脚本。第八篇介绍了高级语言
: Q9 o7 s6 Q( `' ?7 X* F3 w7 [, a0 r# }3 Q" r1 _
技能和结构对象。第九篇介绍了语言的错误处理特性和脚本调试。
( W8 n- [# [; F5 r2 N
# |/ n% \/ b5 ^" v, Q[ 本帖最后由 kenknigh 于 2007-5-14 08:08 编辑 ]
云烟缈缈几层间,万水千山显世间,梅兰竹菊朦胧伴,英才陪书与昼夜。
欢迎骚扰:kenknigh@hotmail.com                

TOP

第一篇4 O9 F; K- O: x
"hello world"6 ^0 ]2 x5 j8 m4 J
不要恐慌,hello world是他本身,下面的有点复杂' {1 E. _6 V4 q! y9 S
dir $env:windir\*.log | select-string -List error | # p( V1 u2 F/ z- c2 M
format-table path,linenumber -auto
8 t+ S$ j8 t) ^/ F, i# F6 T
这个命令可以显示文件所在的路径,行号。
7 M' O. c; A B如果只在提示符后输入dir $env:windir, ^! `/ s; Q9 r! Z
无法显示路径和行号。更长的命令如下
, ]+ p4 y% D( }# w* P F; i) b/ @& r5 OPS D:\> ([xml](new-object net.webclient).DownloadString("http://blogs.msdn.com/p3 X' b: P) [5 x3 a& B
owershell/rss.aspx")).rss.channel.item | format-table title,link
8 b [6 O/ t5 D" S" s. Z
# Y* Z% J8 S8 C: o3 |
这个命令用RSS方法抓取power team blog,显示每个blog入口的标题和连接。6 P9 Z1 R p" k
这是最后一个例子:
* p+ e% i2 I; {( }& a[void][reflection.assembly]::LoadWithPartialName(
6 L% l4 d0 s( p! D+ N "System.Windows.Forms"). D- e o8 c2 u, @6 n
$form = new-object Windows.Forms.Form - S$ `4 d7 i# v5 ^7 E J1 u& h5 S
$form.Text = "My First Form"& q( D I4 b/ [6 O W
$button = new-object Windows.Forms.Button
+ H8 a( C! h2 [& t, w) M( f# I$button.text="Push Me!"
$ J3 x) U5 v5 C- S4 F$button.Dock="fill". |% B- h9 Q1 ~+ L" v( @. Q2 J
$button.add_click({$form.close()})' d/ X+ o" e G
$form.controls.add($button)
) y* q1 c9 B+ {4 B$form.Add_Shown({$form.Activate()})4 t" {# \& H& N0 x$ X
$form.ShowDialog()
3 s- a7 j8 ]$ d' G' a$ z' x+ E& X6 v3 g
这个脚本使用windows表单库来建立图形用户接口。最终显示一个简单的按扭,上面有push me的文本。( T4 `' ^5 F3 n$ P
点击这个按钮时,按钮自动关闭,脚本自动退出。
: b) T% F) o: d4 I! f4 Q现在让我们回到现实,第一篇的意图是建立一个阶段来让你理解powershell。它是什么,它不是什么,最
+ d2 i' J! V; p, N i) j A+ V" ]4 e* w8 m2 x) L8 |
重要的是什么---为什么我们在设计powershell时作了很多讨论?第一篇里的项目覆盖了很多问题我们试& f. D4 Y& \" z% |/ R

9 }$ F. j1 M4 @) c0 f图去解决这些目标。在这一篇的未尾你将对如何使用powershell解决真正的难题有了粗略的了解。当然,& P `% x. }) P! L

$ b! g$ D2 `4 _如果只是理论而不去实践是令人反感的,所以我们建立了很多小例子来让你感觉powershell。开始,说些8 B$ n+ v0 t( p! P9 s: W2 H
a0 O- L" ], _4 h p5 H
题外话:正在建设时,项目的代码被称为单胞体。单胞体这个词来源于Gottfried Wilhelm Leibniz写的单! \% r( m; w! Q% y: a1 @- O, [
. I- f v# U+ `, y/ q3 [
胞学说,他是算法的一位发明者.他认为,单胞体,只是个简单的物质,来组成混合物。"simple"意思是: X) R7 s+ t! ?2 f7 r, [
( z7 v( A) t) N ~7 S) u
,不要分块.在单胞学说中,Leibniz描述了世界来编写事物不可缺少的组件,这里抓住了项目的精髓:/ i9 |, d( l- b2 B8 u3 U
建立一个包括简单块的工具包来组成复杂的应用。( t" e, D: e: ~, j, B) h
(未完)
附件: 您所在的用户组无法下载或查看附件
云烟缈缈几层间,万水千山显世间,梅兰竹菊朦胧伴,英才陪书与昼夜。
欢迎骚扰:kenknigh@hotmail.com                

TOP

1.1 PowerShell是什么?5 j5 y6 a4 D* N8 a* Y& Q
PowerShell为什么建立起来和它究竟是什么呢?我们曾经说过,PowerShell是微软新一代的命令行和脚本工
5 X, v, x0 O# S0 d$ D B& D5 D; {% q, [: L* `" V5 v, S
具.这个项目的最终目标是建立起微软windows所能提供的最好的壳脚本.这个语言分为两部分,两部分同等
: Z. S1 e0 `# t/ J8 z
3 B8 p0 h9 }$ R7 p重要,目标是既建立起一个普通的壳环境,也建立起一个经过特殊设计的windows环境.用了很大功夫收集现! k0 |6 V7 b }' @% G

; U7 j4 M m+ Y在有的命令行壳和脚本语言,PowerShell语言和运行机制融合了他们被设计成现代windows操作系统中最6 ]% }- F7 i; x: z( i
5 q9 a- B }: {5 `% i
理想的环境.
0 N" ~; s5 H* P: l- R: t: M作为历史,windows命令行已经过时了.最主要的原因在于,命令行服务的焦点是面向中等用户的,既不是特殊6 M5 O& U4 g: p2 y/ h

, P* @1 @! S" J/ ^3 M的技术人员也不是特殊的计算机爱好者.他的发展历程中最重要的意义与其说为面向非技术人员配置进图% Q# z' Q+ x/ I1 L8 _ U1 R
k; u! R5 x0 {% ~ h% ]1 p
形环境对图形环境进行了加强,不如说是为计算机专业人员建立的环境.尽管它是windows商业化的一个重8 k$ u. P& X" R
6 q) l) e: _% G6 i1 p% f+ w
要阶段,它只剩下不被提供服务的交流片断了.
0 a1 @/ x! i- v1 f/ l- E在下一章节,我们将要改变一下其它建立Powershell的的环境,也就是需要被满足的不同商业压力和实际需4 h8 C$ A+ n& t9 b! r2 P

, A) ]0 T: q' E, i8 S求.但在一开始,我们需要精讲一下什么是壳和脚本语言.$ H. F( g' K% P# T0 V4 S. Z3 P
1.1.1
8 }$ l7 d, g3 E, }6 c5 Q壳,命令行,脚本语言
# g- ]+ F/ `* r- z7 ?0 d前面的章节中,我们把PowerShell称为命令行壳.你也许会问,什么是壳?壳和命令行接口有什么区别?脚本语
( Z; B2 b+ h7 A. [; z( @3 K) }6 t0 M& U
言是什么?如果你能用壳语言来编写脚本,它是脚本语言吗?在回答这些问题中,我们开始了解shell.9 U' B8 ]$ T# `0 L+ [+ ^
壳的定义可能很滑头,特别在微软方面.微软把自已的很多东西都称为壳! r% s) Q5 ?9 B' W
浏览器是壳.XBOX也是壳.历史上,壳的术语被描述为一块缓冲操作系统核心函数的一块软件.核心函数被称
' v. B& c5 c3 I8 _: u
' u v) {; }! h% a; a& g* P为系统内核(现在你明白壳和内核的区别了吧).壳为你提供访问系统核心函数的通道.浏览器因为能访问系
' ~' Q5 [7 q7 s/ F0 H: B; |. y1 f. W3 j2 T
统核心函数被称为壳(笔记,IE这个东西在windows系统中是不能被剥离的,然而,他也是免费的,微软总裁确
$ z# v' u3 s' i% i+ T# |: h5 W8 P6 s! t) e3 G& X
认windows用户可以免费使用IE,因此,微软不打算在IE上得到任何利润.现在看起来,这个决定是多么英明.打
+ L5 c1 g/ k1 b( S& G. A+ V
# F$ @/ q$ G. o* o' e! x& J$ ~& p败了当时还收费的网景,如果你用linux终端,可能需另外下载命令行的浏览器.)
3 E& a1 n, z+ `% B _我们对基于文本界面的环境更有兴趣,在这里人们输入命令和收到响应.换句话说,壳可以被认为命令行接口,二个术语可以互换." x Y; u5 _0 q5 |4 ^: ^
如果这是个案例.什么是脚本,为什么脚本语言不是壳呢?在许多程度上,两者并没有真的不同之处.许多的脚本语言有一个模式,用户执行一个命令然后显示出命令的结果,这种操作模式被称为Read-Evaluate-Print loop或者REP loop(阅读-评价-打印 循环).并不是所有的脚本语言都有人机交互的循环,相当多的脚本语言还是有的.为什么会导致脚本语言用REP loop而不是壳呢?主要原因是因为用户经验造成的.一个完善的命令行壳也是个完善的用户接口.因此,命令行的特性们也提供了许多的愉快和自定义的用户经验.用户可以使用别名和通配符来避免输入全名,不用把函数中所有内容输入就可以呼叫函数来运行程序.最后,命令行脚本提供了审查,编辑.重新执行预先输入命令的机构.这个机构被称为命令历史.2 `1 k; t$ @! X, P( r) z0 y

& h$ h) N+ t( M9 x* Y) w1 R脚本语言可以作shells(太不适应了.以后改用shell了^_^),shells能作脚本语言吗?答案是,对!在每一代里.UNIX SHELL 语言成长的越来越强大.通过现代shell语言完全能写出有价值的应用,就像bash和zsh.# U$ D& W6 h0 D9 u
脚本语言有个比shell 语言先进的特征.就是在开发大的脚本时,可以用一个机构把脚本打乱成小的组件和模型.脚本语言通常能为你提供一个复杂的特性来调试脚本.脚本语言的运行机制为他们的代码运行更有效果提供了工具,所以脚本语言运行时比对应的shell脚本要快.最后,脚本语言的语法在交互式的命令和应用中更针对应用.7 L; q& r" C! {3 W+ ]

! W$ {9 p$ ?. U$ p. g( K+ ]最后,不难和很快区别了shell 语言和脚本语言.脚本语言有很多特性,同时shell语言的用户经验不够导致脚本语言要优与shell语言.相反,shell语言可以为脚本提供接口.PowerShell的目标是成为一个好的脚本语言也是个好的交互性的shell,平衡用户经验和脚本写作,并在他们之间作交换就是我们主要的语言设计挑战.
云烟缈缈几层间,万水千山显世间,梅兰竹菊朦胧伴,英才陪书与昼夜。
欢迎骚扰:kenknigh@hotmail.com                

TOP

学windows脚本管理,不可避免要接触到WMI技术噢,有没有相关WMI的学习资料!
风往哪吹 一路向北

TOP

引用:
原帖由 plugins 于 2007-5-14 15:29 发表
: t' F- U! P9 j* K学windows脚本管理,不可避免要接触到WMI技术噢,有没有相关WMI的学习资料!
& n4 f* a4 g" _, C, Z
附件: 您所在的用户组无法下载或查看附件
云烟缈缈几层间,万水千山显世间,梅兰竹菊朦胧伴,英才陪书与昼夜。
欢迎骚扰:kenknigh@hotmail.com                

TOP

引用:
原帖由 oceanleaves 于 2007-5-15 09:42 发表
+ Z c/ k7 Z" s+ ~# W7 _/ W楼主辛苦了
8 }( ^( f6 T8 Y4 _5 w
欢迎.我会努力的
云烟缈缈几层间,万水千山显世间,梅兰竹菊朦胧伴,英才陪书与昼夜。
欢迎骚扰:kenknigh@hotmail.com                

TOP

我也在看 看到了type conversion , 不过前面一些不懂的都跳过了 希望可以一起研究

TOP

引用:
原帖由 oceanleaves 于 2007-5-15 11:50 发表
0 K' s4 c/ u* f. q4 P我也在看 看到了type conversion , 不过前面一些不懂的都跳过了 希望可以一起研究
2 v7 O6 e/ R9 C4 l. \# ^0 A, `
我会每天都在线
云烟缈缈几层间,万水千山显世间,梅兰竹菊朦胧伴,英才陪书与昼夜。
欢迎骚扰:kenknigh@hotmail.com                

TOP

在这十年里的早些部分里,微软被委托来研究识别在哪里提高他们在服务空间的价值。) U3 Z; ]6 n/ M. i' u
服务管理,特别的命令行管理和windows系统,都是用来提升的区域。当人们在揭示为
8 Z% Y2 h0 g ^0 F" F/ I, P4 b什么水是湿的时,人们总是去关注问题里重要的一点。当比较windows系统和UNIX系统; ^2 D6 t: ?( [4 @' R
的命令行管理性时,windows被认为比较有限,这是用户真正的痛苦。
& C" M. J: f: A历史上有很多的原因造成windows command line疲软.第一点,首先要注意的是,7 J6 h1 H* I! }/ G: O
command line被设计成很难提升它的成就,当普通的桌面用户不再关心命令行时,, \' j* v: E7 C% Q( }
command line将不再重要。第二,在写图形化用户接口时,你要去访问所有的3 Y) L x6 m9 w/ L9 i! u- N: m
程序样式接口Application Porgrammer INterfaces(APIs).APIs 几乎全由二进制组成,& l7 \0 ~9 ]* P* S: i
(特别在windows系统中),二进制接口对命令行不太友善。2 l0 v* l' Q2 \. Y9 Q9 o
还有一个现实是,当windows获得了越来越多的子系统和特性,还有你必须考虑的管理子0 m' c) V: v# z9 L# N8 w6 v9 `" B
系统时突然增加的问题数量。处理这些增长变得复杂,易处理的对象被封装进结构数据对2 g8 V+ x! v* C. M4 \! z4 m
象里。这些管理对象被收集,作为了微软内部的数据对象接口。当所有复杂的7 _& G j8 c+ x* N
factoring addressed在图形接口里作得很好,在基于文本shell环境中工作变得更加困难。
1 o( U. ? l, G最后,随着强力的PC机增长,windows开始转移桌面用户到企业的数据中心,在企业的数据中+ L7 V0 {( `6 e/ g
心中,有很多的服务器要管理,指向再单击的图形化管理只是入门,在未成规模的单台机器
# ~: D7 N; b+ ?. D; r& d! U上工作良好。所有的这些元素联合起来时,事实更清楚了,微软再也不能忽视命令行。 n- ~ @6 P5 F, E( c. {$ |
1.2 新语言的精神
1 a# ]7 j1 C8 A# Z/ c/ L5 W- X这一章节配合于Tracey Kidder's 新机器的精神,这是Tracey Kidder写的最好的非专业的
4 v. S9 }4 C- l0 h- z技能书.Kidder的书描述了普通的数据是怎样在32位小型机上发展的,关于Eclipse,在一7 c; ^. I4 B8 F$ j
年里。在那时,最小的32位小型机并不只是新的计算机,也代表了计算机中新的类。它是大胆5 H9 z# A* U/ \; l) y0 H
而又有野心的工程,很多主意都是疯狂的。
8 j6 B; J" {7 O7 ] ^- KPowerShell不程不仅是建立了一个新的shell语言,我们设计了新的基于类对象的shell语言。
5 y1 ]# O) l9 W+ q这一节里,我们将要覆盖许多制定了powershell发展的技术力量.许多的用户要求微软作为领导者把.NET
3 N8 M- }8 j5 ]! N6 r) ywave of tools实现串联,从而产生变革。
云烟缈缈几层间,万水千山显世间,梅兰竹菊朦胧伴,英才陪书与昼夜。
欢迎骚扰:kenknigh@hotmail.com                

TOP

1.2.1 学习PowerShell的历史2 A& L/ I: Q8 i v0 z
在1.1.2章中。我们描述了为什么微软需要改良命令行。这章我们谈论我们是怎样改良他的。- f4 |$ p2 r2 A
我们详细的谈论为什么创立了新的语言。这是一个人们对PowerShell问的最普通的问题。(后面“你是个有% M1 B: h1 N" \1 X0 L) }- ?* u

- ~* J, c) |" ~9 y4 Z# K新奇想法的伙子吗”).人们问道,为什么不用已有的UNIX SHELL之一呢,或者为什么不扩展已有的命令行
$ o$ C% U- f3 M. V
7 B. \% G* o& m+ r呢。8 d& G. V% ~2 z, v* A( f
在操作中,我们一开始确实用了已存在的SHELL语言。开始,我们用了POSIX标准shell作为shell的语法。+ T4 Z% L/ m( `7 {* C
POSIX是一个成熟的命令行也存在于巨大的多样性的平台.这些平台里包括windows.它基于UNIX Korn shell c% Q$ V( R% ~* p) t3 ^! @ ~

1 h i* [ C4 b的子集,它自己也是最初的Bourne shell的超集。我们用POSIX作为建设的标准,然后考虑怎样去适应2 q' ` v5 z) R2 g+ _4 S5 u" T
1 A8 F# |) t' L+ @
windows环境继承时需要适应的不同点。我们要学习UNIX环境优化的方法,优化WINDOWS环境来得到
0 }$ z7 y) K# q! J9 \& i v1 c6 P" l a6 S- F5 g4 v% P6 _; l$ v
一个优化的SHELL。开始时,经典的SHELL只能处理字符串,甚至,数字操作符起到了把字符串转变成数) z* r T# X8 L7 s, s# R" n- ?
- |* e' j% {* J
字的工作,在表演操作中,数字又被转变成了字符串。PowerShell的核心目标是保护windows数据的类& H) z" O9 r* C8 s1 ?; q9 m# O

& S+ d6 |6 P2 {9 i型, 我们不能简单的用POSIX shell来作这个.这个因素比其它的因素嵌入了更多的语言设计。然后,我们
6 P3 Z6 ^+ H& u& i3 Y. d, V& p# y6 x6 Q" o( T m; V7 N6 i2 |8 e
想支持更多的语言脚本经验,比如,你平常用的那些脚本语言,像VBScript,Perl,或Python.用一个比较自4 |! o, O6 q) G: X0 A* v6 t; r) X
, d8 B8 H+ u% `( g
然的表达式语法,你可以使windows管理对象工作更加容易。现在我们只要开始考虑如何在shell中让这5 x$ K: T) k4 w: V2 F C8 V; o

0 B* h" ]! j& @$ i% G9 g/ y% h1 _些对象成为可能。
- i9 O+ V- b' t2 N( I* e1.2.2学习.NET
. B& n) c3 d% u/ b+ M1 }* l2 Z r& B8 P开发任何计算机语言中最大的挑战是决定如何表现那种语言中的数据。对于PowerShell,关键要考虑调
9 G# y; m4 N* u$ P7 s4 T! {) s! {) ~
% ^9 _9 P. Q$ z整.NET对象模式。.NET作为一个统一的对象表达式,跨越了微软所有组织。它是一个巨大的有野心的对 y e2 l/ u2 R" o6 B( Y
& n2 s! T, J; ^5 i/ V. @8 H7 j8 h
象花费了很多年来达到这种成就。在使用这种公共的日志模型时,windows所有的组件可以共享并且被
2 {" Q9 A1 i2 e4 G6 t2 ^4 a0 [$ z
每个其它的数据理解。1 X& F- R7 s0 t7 U
一个.NET最有趣的的特性是PowerShell是一种自描述的.NET对象模型.这,意味着,对象它自己包含了对2 d4 _2 _3 C `

. p- Y# A& m& x! z象它自己结构的描述信息,这在一个交互式环境中很重要.当你需要有能力处理一个对象时并了解它可以作
9 \* G5 M2 T! C5 V A1 P4 |5 H2 x. y1 c3 ?! R
什么时,需要用到它。举个例子,当PowerShell从系统日志中收到一个日志对象时,用户可以在事件生5 i1 C g8 G* t/ g" B& [# u& f

y1 A6 B0 b8 T成时简单的检阅对象来看它的数据戳。1 e1 m/ r( a+ l
传统的基于文本的shell很容易识别,因为所有的东西都是文本的。文本很棒,你得到什么就能看到什么4 ]1 @2 m9 @ [: t

9 v$ w6 } f8 w7 `' P5 y。不幸的是,你只能看到所有你得到的东西。用文本你不能识别很多机智的诡计直到你把目标转向别的 W9 P- y, M% U$ c' g
% b, O4 j1 Z6 {# i/ w! N1 E
其它的东西。举个例子,如果你想要看一个文件的总体大小,你可以得到一个路径列表,也许格式像下面1 o. \5 j" o1 T% K$ b
1 {( I9 M4 c9 i; a
的东西:
* o% A5 D _7 T& M" u02/26/2004 10:58 PM 45,452 Q810833.log
4 `, V5 w4 I. G02/26/2004 10:59 PM 47,808 Q811493.log1 {3 \8 q0 d5 _9 G
02/26/2004 10:59 PM 48,256 Q811630.log3 R+ I: A" }4 o; o0 Y9 r) [
02/26/2004 11:00 PM 50,681 Q814033.log/ F$ \# O/ \, E% K, Z
在这段文本里,你能够看到文件大小,但是它并没有什么用.你可以选择一个排序的片断从32行开始,39
: t( M% Z4 _' p9 P% ~% r: @. g( S( l7 H
行结束,把逗号删除,然后把这些字符转变成数字。甚至删除逗号也需要机智,因为上千个分隔符可以' b- q% x0 F; G6 t( Y! t
: N2 ~1 g% P: C3 i. M) J
改变计算机设置的依赖关系。别的方面,也许它不是一个逗号,而是一个句号。或者根本什么都不是。
% ?1 v& P' h" Q/ |0 T* b
: d4 [6 [4 B7 V( _# B9 O; V8 F s& j如果你只是想看第一个位置的文件大小,应该比较容易。这就是.NET给PowerShell带来的:自描述的数
& P1 G, o' @+ T% F" V' j1 i* q0 G% P: ]8 B( r
据有利于理解并操作,除非有必要不需要转变为文本。选择了.NET对象模型也带来了附加的好
9 L4 A4 E7 u+ m. C) ?
: u3 L# j7 p9 L) C, [+ y% K) K2 h处,PowerShell允许直接使用.NET框架中的扩展库.它带给Powershell新的语言稀有的宽广的范围.这是一个
" d' E; v. ~; P: i) f$ s: ~3 z% i9 E7 w; P( h4 A$ X
简单的例子,显示.NET带给环境的好处。比如:我们想要看1974年12月13号是一周里的哪天。
( @0 O. M5 c. X$ u: G1 G! O+ w我们可以看到PowerShell是这样显示的:
) |5 Q4 b% `4 ^6 O C& {: Z; MPS (1) > (get-date "12/13/1974").DayOfWeek) x, G' n+ F' o4 b% r
Friday
0 Q8 B# H+ k! N. e在这个例子里,get-date命令返回了.NET DateTime对象,那是个计算日期对应的day of week的属性。
2 {: a( I! j2 H) H5 O3 @4 k( {, o+ @2 W8 d* U& x% X
PowerShell队伍不需要建立一个日期和时间的库来操作PowerShell例程----在前面我们使用免费的.NET同2 D1 ~( e8 n+ U( e5 b4 j

6 H; K+ Z7 x( l* c" j0 o- V. R样的时间日期对象在系统中运行着。举个例子,比如我们想要判断两个文件哪个创立的比较早些。在基) M6 F5 t% f7 G5 L: t6 u- Q$ R
" m9 m5 ]' L4 e# w* L( U* u
于文本的shell中,我们必须得到一个包括文件被修改时间的字符串,用某种方法把那些字符串转换成数% V6 h* U0 Z. B O

: [1 F- p: \0 l: M8 O( y字,然后比较他们。在PowerShell中,很简单:
' n ^- c' V* @$ ZPS (6) > (dir data.txt).lastwritetime -gt
) Q J. n! X' a- n% K6 C>> (dir hello.ps1).lastwritetime) o3 [, n* I1 G+ b0 w$ ?4 K( v
>>1 r5 m/ t, D8 M) q4 E
True
/ |, Z5 y% {8 k! J9 K4 g我们用dir命令来获得文件信息对象简单的比较每个文件的写入时间。没必要进行字符串分析.' ]6 F0 j: { R- e% z
下一章讨论面向对象程序的基础。
云烟缈缈几层间,万水千山显世间,梅兰竹菊朦胧伴,英才陪书与昼夜。
欢迎骚扰:kenknigh@hotmail.com                

TOP

1.4.2命令编辑器
' Z" x6 i/ b5 I. s' v$ }$ x1 SPowerShell命令行编辑器和cmd.exe一样好。在表中列出了现有的编辑器属性和击键! d, W, ~+ O( d3 N
$ w* d- r& z/ X6 g
Left/Right键 编辑器指针向左或右移动到新的命令行0 c8 Z9 F& X0 |3 l/ g2 D
Ctrl-Left/Ctrl-right键 向左或右一次移动一个单词, P, W9 b( l$ C0 I7 v
Home 移动到编辑器指针到当前命令行开始& l5 b1 f6 u* J$ s% t
END 移动到编辑器指针到当前命令行结束
, g2 q6 p7 Z3 w$ IUp/Down键 从命令行历史中向上向下移动
% f# @$ W/ a" E& BInsert Key 切换字符插入和字符改写模式
' x2 p0 i( J# L; l( ]Delete Key 删除指针上的字符
, o/ j6 `5 E% H5 Q9 jBackspace Key 删除指针后面的字符
% |* j( N3 [ VF7 弹出windows控制台中的命令历史用上下键来选择命令,: ~/ k* N& @) `0 t
回车来执行命令" q9 |" g" {7 d6 W2 `$ I( t
Tab 命令行补全
2 O* [" v% L; N2 Z4 N这些击键顺序让你能有效的在命令行里建立和编辑命令。事实上,它根本不是PowerShell的一部分。
( Y1 E! x& T2 N7 l这些命令行编辑特征是windows 控制子系统的一部分,所以它同样也覆盖了所有的控制台应用。有一! ^8 `' u. `8 V+ I9 U, T
个编辑属性,他和PowerShell有一个重要的不同点.命令补全或者叫作tab-补全.在cmd.exe有了tab-补全
, `. T3 ]0 F" b5 B5 f+ e时,PowerShell的实施比PowerShell更重要.我们接下来会讨论这个特征。
附件: 您所在的用户组无法下载或查看附件
云烟缈缈几层间,万水千山显世间,梅兰竹菊朦胧伴,英才陪书与昼夜。
欢迎骚扰:kenknigh@hotmail.com                

TOP

命令补完* T. @$ a1 J+ M; Q6 \
tab-补完是命令行的一个重要的特征。它充许你输入命令的一部分,然后输入TAB让PowerShell用近似的命令来补完。一般的,PowerShell用tab-补完来和系统比较。所以你输入部分文件名然后按tab,系统比较你的输入和真正路径中的文件,然后返回比较中最合适的文件。下次按tab,将进行下一次比较,接着按,接着继续.PowerShell也在智能卡中提供了强力的tab-补完命令。(第四篇中提供了PowerShell智能卡的信息)
# d* N; q; Y, M6 n迄今为止,这并不比cmd.exe(笔记:在左下脚开始-运行-输入cmd-回车-会看到)提供的,有趣多少,有一个重要的不同,PowerShell可以对参数名补完.如果你在输入一个命令时,输入部分的参数名然后按tab,这个命令将要对所有可能的参数作单步调试。
: R& e/ ~% k5 e* uPowerShell也可以对变量进行tab-补完。如果你输入部分的变量名然后按tab,PowerShell将自己完成变量名。
& O, |5 j- Z+ o, x! T最后,PowerShell完成了变量的特性。如果你用了Microsoft Visual Studio 的编程环境,可以在其中发现很多智能的特征。补完属性是种命令行下受限制的智能能力。例如像下面的一些例子:6 Z6 u/ q0 J$ h
PS (1) > $a="abcde"
, G# d9 j" e. G; P) SPS (2) > $a.len<tab>
% \- g8 S/ B! v: J4 p系统可以扩展属性名:
7 g/ s) r: L5 q# jPS (2) > $a.Length
4 {' o, ]3 C; H% f6 Y( Q2 n另一个例子,第一个tab返回比较中的第一个属性或方法。如果比较的是方法,一个开放的括号也被显示出来:
0 d, ^ C! N6 b1 jPS (3) > $a.sub<tab>
4 o+ ?8 f% `. O: D9 G* Q" ]# X$ B7 n, S' ?( Y/ Z/ Y
PS (3) > $a.Substring(
8 M B; q+ D9 q
# {+ N" x. Z2 `
! X3 B, j' ?; ~7 x% t7 F$ @3 u1 r" |- |记下方法和特征名是怎样被定义,这是系统真正的资本。他并不真的影响事情是怎样运行的。Powershell在比较事物时反应很迟钝。(操作数的计算也是迟钝的,这在第三篇讨论)( b- [- x9 j6 \
1.4.4 基础表达式的评估. g2 C& J9 `. `5 C: Q
增加了运行命令,PowerShell也许能够评估表达式。结果,它的操作成了一种表达式。让我们来评估一种简单的表达式:
( k' |# n# r1 F9 @3 MPS (4) > 2+2
: \) c8 v2 [! E* y# e; s Q; d4& G" y+ j+ k7 E+ i4 ^3 q* h
注意,当你输入表达式时,结果被计算和显示出来。打印时没有必要用打印语句来显示。当评估时,应该注意到,表达式的结果输出了,而不被丢弃.我们将在后来的章节时探究它的含义.
) m+ F% K" b G5 y这里有一些例子:
8 g: T* v+ L: n( T2 ?* x HPS (5) > (2+2)*31 G7 `2 C9 s9 l1 | `* S E
12
0 G* X3 K& |- _! D% Z" L! K+ tPS (6) > (2+2)*6/2! F+ r3 J. E, ]! _; P; h$ ~; N, D
125 [* ^& k4 h# a5 I, K
PS (7) > 22/7# l* I, e5 e/ q2 f$ L: c. c
3.14285714285714/ u" `1 B, B- A3 t1 a `+ e
你可以期待PowerShell支持更多的基本数字操作数,包括浮点
云烟缈缈几层间,万水千山显世间,梅兰竹菊朦胧伴,英才陪书与昼夜。
欢迎骚扰:kenknigh@hotmail.com                

TOP

PowerShell支持单精度和双精度的浮点,连同.NET的十进制类型,详细内容可以看第三篇.! Z2 M$ _, F' o! p
我们可以用重定向符保持输出结果,这是结果。$ s$ l+ n; i1 B
PS (8) > (2+2)*3/7& b9 [2 G H) Y \6 \
1.71428571428571
- Z. ?, m& K& UPS (9) > (2+2)*3/7 > c:\foo.txt
! Y: S$ @! z. e# iPS (10) > type c:\foo.txt! S; x* }1 Y" g- H
1.71428571428571, b: d2 k% m3 l- D& ^5 m @3 {' x
把表达式保存在文件里是有用的,把他们保存在变量里也是有用的。
5 g$ n3 {: ?' z9 T) cPS (11) > $n = (2+2)*3
, x' e+ C- P5 kPS (12) > $n
" r3 C: s6 X4 x12
' }9 x S7 k/ R) P0 N% HPS (13) > $n / 7
0 {4 K; f$ E& r4 w+ A& ^4 X1.71428571428571* b) Q$ w v9 a; g$ B3 Z
变量也可以储存命令输出。如图。
6 M0 H6 _5 d2 X6 e( T" }# b. z在第四个命令里,我们展示了响应dir命令时收集到的文件信息对象。7 C( f8 D1 g2 f9 z/ E
作者的笔记:PowerShell从0开始,不是从1开始。这是我们从.NET 公共语言实行规范中继承的一个特性." X. V, F* T& Y6 G# X {
这就是为什么 $files[1]展示了第二个元素,而不是第一个。
附件: 您所在的用户组无法下载或查看附件