我们都在命运之湖上荡舟划桨,波浪起伏着而我们无法逃脱孤航。但是假使我们迷失了方向,波浪将指引我们穿越另一天的曙光。 收藏本站
登陆 / 注册 搜索

阅读: 5.3K   回复: 3

[# 系统基础] PowerShell入门(一):PowerShell能干什么?(转)

soarcloud 「龙战于野」 2016-7-28 11:04 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

本帖最后由 soarcloud 于 2016-7-28 11:07 编辑
$ U+ G" ^5 n. d" t) r5 l0 L) P- w# P+ o0 l: h. W
  PowerShell能干什么呢?就像序言中提到的那样,PowerShell首先是个Shell,定义好了一堆命令与操作系统,特别是与文件系统交互,能够启动应用程序,甚至操纵应用程序;第二,PowerShell允许将几个命令组合起来放到文件里执行,实现文件级的重用,也就是说有脚本的性质;第三,PowerShell能够能够充分利用.Net类型和COM对象,来简单地与各种系统交互,完成各种复杂的、自动化的操作。
7 Y& x+ ~+ K2 C* ~3 `, r' f1 b2 H1 B2 y

7 q+ m6 k+ R- H' f* W! n* C8 a  一、与文件系统交互、运行应用程序. m# W# F. c. [/ \: D: V2 _

8 S0 r, ^5 [: {% e7 o/ T
* i0 d0 U$ a* n+ S  \# U
  就像在Dos中一样,在PowerShell的交互界面上键入"dir"并回车,会显示当前文件夹下的子文件夹和文件信息。
* t0 E* B5 W( @( O* X+ ~8 S& I4 z5 s) V6 o! W2 P; Q( C* {  b
9 }! N5 M! l) v$ W8 e7 [. v
PS D:\Projects\Practise\PowerShell> dir
6 O# v- c2 q5 @9 [1 a3 Z    Directory: D:\Projects\Practise\PowerShell+ ?' |  Z. M) f6 Y& l# o. y
) R9 a4 S" N" \' a% {. e
Mode                LastWriteTime     Length Name
# \$ P' q  y! o----                -------------     ------ ----
6 y* v5 q- K$ f- yd----         1/23/2013  12:35 PM            d1
2 r$ y$ U  l0 F, p/ Md----         1/23/2013  12:35 PM            d2  N/ _- T; b! W% y& H" @4 n" r( _
-a---         1/21/2013   8:38 PM      36314 alias.tx
* _* R; Z) ], @( ^; [-a---         1/21/2013   8:32 PM     241530 cmdlets.
4 ~  h2 T0 g4 v# c* y) S6 q; O# `/ S3 J-a---         1/18/2013  10:18 AM        888 errors.t
/ ]. {3 J8 m0 s! C# C   像这样的命令很多,比如echo "Hello", cd ..等等。从这里看来它就是一个命令行,实现了原来命令行的功能。但PowerShell是命令行的加强版吗,是命令行的超集吗?这个真不是,以后会专门说这个问题。
$ `1 @3 ]: v  k) I9 S* @3 m6 @8 A. a& A: H
7 r) ]2 G! R* U7 k
  就像在命令行里运行应用程序一样,可以在PowerShell的交互窗口中运行应用程序,如下:
: e$ P- \' b" c5 b! ^2 O5 ?  |0 w* P# T5 E' _4 z2 z

# A5 z, t, |% u* w) R1 MPS C:\Users\v-lukez> notepad
& r4 m+ J& r/ t9 N0 B( C3 [PS C:\Users\v-lukez>! p( _" Y5 n( T1 a5 l
如果想更好地控制应用程序,可以使用start命令,如下:
5 J9 M) C8 a( E( ?
" u/ S# g9 a  f7 }$ K
- ^+ C) l( m& k% Y: B( Z
PS C:\Users\v-lukez> start notepad -WindowStyle Maximized
2 S0 R6 ]0 `1 x7 ?+ J: @8 ]PS C:\Users\v-lukez># l/ L. Y* t5 d7 S5 @% S
以上结果可以实现Notepad窗口的最大化。其实类似的命令还有很多,而且更多的参数意味着更精细地控制。& ^# H6 `# R, Y

9 |" G0 a6 l% t# ^/ i- i) S9 k- ~
' u# k% a. Z8 U+ O" L
  二、创建脚本
7 s/ E2 [* W3 R4 e4 M
' }: ^! R& a3 `. b" Y, z8 u9 E

1 ^% Y' v1 ~4 T- L% [  任务的自动化是以程序文件或者可执行脚本文件为基础的,PowerShell也支持将命令列表做成脚本文件来执行。以下是Hello.ps1脚本文件的内容:
2 N) F- ?2 N) q( b6 F1 v
; n5 G8 Q- b  C2 w8 y/ m
6 h) ^9 J% w' ]% u2 L, A' Z9 N
$a = "Hello"
" ]& G1 G; v& Q6 X4 r$a: _% W, N* d0 E3 n5 b
echo $a > a.txt
4 R6 G$ z* h' N% w* Wdir a.txt! \! [- }# W5 c
Hello.ps1脚本文件的执行情况结果如下:
- l- F. n1 w6 u' w" y5 I3 X& n
* B8 f2 E9 w7 E! |

  C2 c( {3 J5 ?) lPS E:\> D:\Projects\Practise\PowerShell\Hello.ps1, U$ [" G( j* K
Hello% j5 G% i: @* z! @5 z
    Directory: E:\
# Z$ t" T+ [3 z8 h+ \Mode                LastWriteTime     Length   Name                                                                     
' ~$ E* g/ N* n! m7 F/ }----                -------------     ------ ----                                                                      2 S2 Y& ]! y& _# m& d
-a---         1/30/2013   4:56 PM         16 a.txt                                                                    : p* r  B0 e, Q" U. ?: I6 ~
你可能发现了,PowerShell脚本文件是以.PS1为扩展名的。以上这个脚本非常简单:先定义了一个变量,然后输出这个变量的结果,再将这个变量的值写入文件a.txt,最后输出这个文件的属性信息。仅从这一点看,PowerShell脚本很像Batch文件。但是实际上,PowerShell可以做得更多。- |; Y. y4 n7 f0 t/ u* t

% a) P1 m" h$ V( k4 z, r
3 w6 E) n% V% D. J0 t" K, y# V
  PowerShell脚本支持自定义函数,就像我们在编程语言中做得那样。funcDemo.ps1给出了一个在PowerShell脚本中编写函数的示例:8 L8 O) E5 x9 z( y5 A

! [" A  L) t8 h  e. H! ~- L

% |0 m) D, w9 B5 d7 `#funcDemo.ps1" n( A! [3 n. M. G" \
function SayHello ($name)0 \$ I3 v: Q4 n
{
( c- P1 t* M. |0 ~2 n    echo "hello $name"" F" `; v+ M7 |2 O
}
3 L" G: z- \4 p" Y 6 t; ^; \- w- M9 ?9 F
SayHello "Luke"7 o0 Y( J% q+ C
脚本的运行结果是“Hello Luke”。; k* |/ G3 U% e$ m' V; s

3 d7 ~0 W# N4 P; S

. J2 i1 Z6 i: y3 U9 t此外,关于PowerShell脚本内部语句的运行顺序,这里要做个简单说明:除了函数定义,脚本中的命令或者函数调用(其实也相当于执行命令)会顺序执行;函数中的语句只有在函数被调用的时候才会被执行。
* m/ t& C8 V2 R2 U% e6 w, x$ [( X# v8 t* e) K
0 B( @8 G3 f: P9 S
  三、利用.Net类型和COM对象
4 {9 D) _4 T  y# _0 J  J( K5 |' w6 w5 T
" f0 \- Z  g6 ]" U, Y& k
  能够利用.Net类型和COM对象是PowerShell的最大特点,这让PowerShell能够最大限度的利用现有资源,并且很容易把.Net和COM程序员招徕到自己麾下。
+ ]7 m' s- W6 I# \2 s
/ t# ~- [# p! x- o+ l+ a. G

  `# d& C- ~3 l  简单类型:" S  Y/ K9 N$ @) |

0 E" }1 C: m5 p- f8 _$ d1 t: j7 d4 t
7 h$ q9 v3 X5 F% R
[int]$a = 108 O9 v$ Z) F- k$ o3 m
[String]$b = 10' q0 z( K( z; S9 J) J/ K
  .Net类型/ s) m6 s  [& B# z6 i- W5 h
; o- z/ R" ?: k& d. E

0 `4 J4 e, N, A9 t0 p$Message = new-object Net.Mail.MailMessage("[email protected]","[email protected]", "Subject", <br>  "Here is some email")
9 G  T* G3 T1 d: Z( s   COM对象/ r+ r3 b; O  t% R1 I  K

' _- n4 l2 W& X3 x, H5 \  Y+ z$ F

* _; a9 W. @& m. G$ f. W' ~$myWord = new-object -comobject Word.Application
9 H4 H) ~  i/ ^# s  创建了.Net或者COM的对象以后,就可以利用这些对象的属性和方法,来完成更加复杂的操作。
& R; D7 L( V$ W" h, t3 ?( _- p9 J! ?& y1 y7 g7 K

8 Y; N$ e: x) {3 |  作为本篇结束,用一句话总结,PowerShell吃得很少,干活很多,是Windows管理员日常必备的工具之一。走过路过,千万不要错过啊。。。
+ U% X' v) i6 r" {. e5 e8 S  L
上一篇
下一篇


暮色里的白雪檐 「出类拔萃」 2018-5-5 23:00 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

回帖的永远有28种人
/ n  }. m4 Y) Q  y1个说前排围观的,
, P3 P+ m0 l6 h$ e3 g) i2 C) W( a* @1个路过打酱油的,
8 t8 b6 }( \5 g8 L/ E1个留名的,
9 K0 U' ~6 m0 O% I0 b; ^1个上来直接骂LZ去死LZSB的,% l2 b7 Z2 [! r* n; F- l. P
1个整天抢2楼的,
" i% F0 u/ G- T1个说自己SB的4 d4 \( K2 m0 l8 n8 \2 N
1个tm就知道呵呵的,
1 V# }# |5 G/ h1个进来P都不放按顶走人的,1 Q, m( I8 I2 M% Q% R7 j: j: {
1个涂鸦的,; j4 r! \9 u: p* Z3 A* g" Z
1个发广告的,: Z2 G, I7 s+ M5 P! E) n
1个成天装内涵的,1 t; z. V! z2 ~0 x
1个表情帝,
( Z3 V) u1 D( |3 l( R1个没事就撸撸睡觉的,9 @# h; F- M# e4 b
1个要摸楼下狗头的,
$ H& A" I; x0 i& |* l6 Z1个总是@ 别人的; t) \0 F2 C* W+ p& [' I
1个整天拜膜的,9 W% I! }$ c$ H0 y$ l. S: P. t
1个吹NB的,. u- r" X, Y) G3 k
1个只会说“哦”的,2 G" z, g7 W, \2 A; Y- p
1个宣扬春哥的,
- o+ n0 p) r1 F' Z1个灌水的,
- ?; c. Y$ X: @& V2 W+ S1个爪机马克的,' [% m: s+ w/ N) p5 Y4 A# `
1个蛋疼的,
$ c! Y0 A( O1 x2 q, N. S/ T) @1个TM的说挽尊的,
7 |/ h$ g9 f- P! w/ e7 Z1个TM的说亲哦有木有的,* |: U- T* S8 H, L' J
1个说内容太长没看的,
5 ]% {2 G; N2 ^1个废话连篇的,. k  ?9 ]( n& W" g/ u% c
1个留邮箱的,
) V' r. W' C4 X0 j: y最后就是1个像我这样复制粘贴混经验的#y421:
浅笑歌 「出类拔萃」 2018-5-16 22:10 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

为保住菊花,这个一定得回复!
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

关于本站|大事记|小黑屋|古黑论 网站统计

GMT+8, 2021-7-24 00:52 , Processed in 0.025082 second(s), 18 queries , Redis On.

© 2015-2021 GuHei.Net

Powered by Discuz! X3.4

快速回复 返回列表