没有回忆就去创造回忆,没有道路就去开辟道路。 收藏本站
登陆 / 注册 搜索

阅读: 4.6K   回复: 5

[# 系统基础] PowerShell入门(二):PowerShell是Cmd命令行的加强版吗?(转)

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

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

本帖最后由 soarcloud 于 2016-8-2 21:20 编辑
, ?+ b: r1 j8 X- U6 j; U  `  X" a
3 L1 p* _& \, B) w7 O2 j  PowerShell是命令行的加强版吗?PowerShell能执行命令行的所有命令吗?PowerShell要替代命令行?这三个问题的答案足以让我们了解PowerShell与Cmd命令行之间的关系。让我们慢慢道来。。。
. w3 S$ W- I% ^: o, C, o) @6 `
$ L+ [7 l: `7 N2 }+ ], U! VPowerShell中的命令
& C6 k+ y' y3 ~7 M& \4 r  启动PowerShell,在其中输入几个常用的Cmd命令/ O# {# Y+ a8 u2 }  C" m. D+ T/ L

  k) T$ N. Z* SPS D:\Projects\Practise\PowerShell> dir
# o# v. D" c4 m: h4 k    Directory: D:\Projects\Practise\PowerShell 6 x! f- @# ?2 Y) o2 ]$ Q9 x
Mode                LastWriteTime     Length Name
$ n6 e0 j% q: ~  F----                -------------     ------ ----
0 \, e$ E7 [  {& V* L) d7 h. z1 X: Od----         1/23/2013  12:35 PM            d1
+ W! s5 x, a0 t' f' ^d----         1/23/2013  12:35 PM            d2
0 b+ o  s; @. a1 H) H1 c! [-a---         1/21/2013   8:38 PM      36314 alias.txt 0 E/ s. o/ s( Q+ e' S
-a---         1/21/2013   8:32 PM     241530 cmdlets.txt
0 J6 b& O& S) a7 q' t  ~, L- I1 Z, j! G$ _5 V( [9 r2 |: b4 I* {2 G
或者/ K% O2 x. a; V) F7 w9 Y. p) y0 g
+ ^7 y3 E- r' b# V
PS D:\Projects\Practise\PowerShell> cd ..
1 w3 G1 y% V9 P. \/ ?  W9 ePS D:\Projects\Practise>4 i/ V3 \! x5 E7 S8 |: I- P$ k

& S# \3 K/ A, g  结果跟我们的预期是差不多。不过,我们是否就能据此说PowerShell就是PowerShell是命令行的加强版吗?再试试下面这个命令:0 S- p! }! a. G; d
' W) w* r; i- r5 ~2 n5 q, `
PS D:\Projects\Practise\PowerShell> dir /ad ( G) k) Z8 u) o! ]% ~, `
dir : Cannot find path 'D:\ad' because it does not exist.2 s2 l( b& q, [# ]

3 d6 x1 V$ x! r8 ^, R7 k- B& {4 n3 t8 U
+ y& K, o& u" h9 Z( Y+ f7 E
3 I4 w: e2 l5 J  n* b  这个跟我们的期望相去甚远。在Cmd中,它应该输出当前位置的子文件夹的信息,但是这里,它似乎理解不了我们的参数。下面这个命令也是一样:; x# l( C7 e/ I- a" M& @0 c

0 {1 T2 @* Q; y' G5 \PS D:\Projects\Practise\PowerShell> fc .\alias.txt .\cmdlets.txt ) M% B. t6 l4 s
Format-Custom : A positional parameter cannot be found that accepts argument '.\cmdlets.txt'.
- f1 c7 @4 d4 G  W( X( n0 J: E* ^, _# N5 u% s
# m' k  T$ K* N5 q
! W8 W* `; _+ C, F  l5 |5 n
  我本来想要调用比较两个文件的fc命令,结果它却理解成了Format-Custom,牛头不对马嘴。这是怎么回事儿呢?到这里我们就可以回答前两个问题了:PowerShell不能执行Cmd命令行的所有命令,确切地说,PowerShell不能执行任何Cmd命令,至少不能直接执行。这是因为,PowerShell不是Cmd的新版本或者加强版什么的,只是它的有些命令从长相到功能都跟Cmd命令很相似而已。
" Q. r3 N: L3 x. @; j/ A. M! x# M# W: L' S) s8 Z/ \
PowerShell与Cmd命令行的关系6 s. Y4 @) P" M+ v4 a0 K
  PowerShell可以做为一个应用程序在Cmd中运行,其运行方式有点像在Cmd中运行SQLCmd或者Nslookup,在没有明确exit退出之前,一直是应用程序的运行环境,一切的输入,包括命令和数据,都由应用程序来接受和处理。8 r' _; @+ U& v7 `  I: N% q- K

  d! _- _) u3 }/ i2 @D:\Projects\Practise\PowerShell>powershell % L9 c% B7 h$ c8 y
Windows PowerShell 5 B* {% ?' V7 N" T
Copyright (C) 2012 Microsoft Corporation. All rights reserved.
) \8 y# p- }4 d9 ]' L4 A( C6 |% e. Z6 e( P2 S/ |6 I: m
PS D:\Projects\Practise\PowerShell> get-help6 p: C0 x2 {6 s& E

7 `; r( e0 b9 D" K: h' VTOPIC * x) ^8 o0 q! A) o" N
    Windows PowerShell Help System1 I( B  g$ R+ i5 S# j" h: y* t

0 ?1 h5 ~& X+ w7 |
( s% Y; b* g+ x1 j. a! s; _
. D0 _9 U7 v0 y9 Q+ @2 j7 ~Cmd也可以在PowerShell中作为应用程序运行,其运行方式与在Cmd中运行PowerShell相似:
5 @3 a5 Y$ E+ E
$ T8 Y! S1 \. S* l- Y% E# rPS D:\Projects\Practise\PowerShell> cmd 6 c7 g2 u- W3 l* r# B0 `: m
Microsoft Windows [Version 6.2.9200] 7 H! Y" a. x3 ^8 a. H
(c) 2012 Microsoft Corporation. All rights reserved.
: X# j+ t  F1 M# q1 u4 w
4 e7 l( f- {+ K: X" G- ]- e. ]D:\Projects\Practise\PowerShell>dir /ad   j" b3 s1 ^. i; q( ~) e/ c( x
Volume in drive D is Doc 2 W7 m- m. l% d" g3 }. P: j! e7 k3 \
Volume Serial Number is A6C5-E7CE1 G8 x+ m! |; ?, g
1 K! ?. U  F: M) o. _1 ~
Directory of D:\Projects\Practise\PowerShell
) M; s; z- G" Q$ d) [$ z
" s; w8 e: x, y: ~  p5 H' m* x5 A01/30/2013  04:54 PM    <DIR>          . % Y" B! ^, x- r% k
01/30/2013  04:54 PM    <DIR>          ..
# B3 K8 g5 j+ B3 O. n01/23/2013  12:35 PM    <DIR>          d1 ) o" ?4 ]) D1 [1 w% x4 n
01/23/2013  12:35 PM    <DIR>          d2+ N8 q0 P6 c* |" a' L8 e1 D
& V' W3 Y, p( ]

* @, D' b4 ]" M! n( w6 q. \' }: s& ]: L7 }# r1 m" ^! P! e2 h* ~
  PowerShell通过Alias这个特性,可以让使用者以Cmd风格来使用PowerShell命令。这样做的好处是让用户在刚接触PowerShell的时候,就像在使用Cmd一样亲切、熟悉。坏处是,让人容易把PowerShell和Cmd搞混了。不过当你了解了Alias的概念和Get-Alias命令以后,这个问题将迎刃而解:
  a9 k* k: I) w" i; u. M8 e2 F: K4 a, K9 n% F2 T
PS D:\Projects\Practise\PowerShell> get-alias dir, echo, type
, j& p+ t9 p5 j, D. P8 W2 ]1 [) T( c
CommandType     Name                                               ModuleName
8 B9 C* o! g( ~8 G-----------     ----                                               ---------- / D2 H  Y6 c& M8 U9 N" e
Alias           dir -> Get-ChildItem 6 G+ I9 y" o1 `# Q4 C

! ~. R8 H/ r! hAlias           cd -> Set-Location
- `8 o3 h7 b7 z; W. o2 ZAlias           echo -> Write-Output2 O# e# w3 s+ S' |8 |
3 a: C+ t+ z, Z* Q
  就是说dir实际上是PowerShell的Get-ChildItem命令的一个别名,cd是Set-Location的别名。。。到这里PowerShell和Cmd的关系问题算是解决了。
& y# a( L! s" ~) C$ i
. N9 h6 Z% p8 G* fCmd命令行会被PowerShell替代吗?1 C! K8 F0 I0 h; B9 j) ]6 }
  我其实一直以来都很讨厌类似“谁不如谁好”、“谁要代替谁”的问题,放到这里也一样,新的东西必然有它的优越性,旧的东西也有一票粉丝。从现在PowerShell被接受的程度来看,短时间内Cmd不会被PowerShell替代。长远来看呢,谁知道呢。我只知道,多一份选择就多一份自由,多一种可能性{:4_114:}
. w; j9 E4 k( L# x9 ?+ |) C: R$ }9 U
上一篇
下一篇


深蓝 炉火纯青 2016-7-28 12:31 来自手机 |显示全部楼层

一个男人没有丰富的面部表情,不代表他没有丰富的内心世界。

赞助会员
然而我不会ಠ~ಠ 来自: Android客户端
清风霁月 「出类拔萃」 2017-9-9 10:52 |显示全部楼层

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

佩服佩服!#j325:
渡年 「出类拔萃」 2018-5-1 11:55 |显示全部楼层

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

高手云集 果断围观#j327:
锁上的光 「出类拔萃」 2018-5-3 17:39 来自手机 |显示全部楼层

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

我可以把我的眉毛摘下来,
/ y& E% C0 v3 y" y) g   (・ิω・)ノิิ摘下,
/ v1 O& {: e6 ^0 A2 C   (・ิω・ิ)安上,& T/ ]5 I9 S; m4 j  y+ y; L7 A1 s
   (・ิω・)ノิิ摘下,- J) Q) e! F% c" l$ @
& K5 u' H0 ~1 x; t2 T
   (・ิω・ิ)安上,
! d' v0 D) l' q' |, A  ╰ิิ(・ω・)ノิิ两边都摘下,( j- V6 l0 j# P/ @5 v
   (・ิω・ิ)安上。。。3 g' H& X1 |) |8 G
  ╰ิิ(・ω・)ノิิ两边都摘下," |, t) H7 ?, r) e' \
        (・ω・)卧槽。安不回来了。。。 ; g, z$ g& X) r9 b6 f! I2 ~  s
楼主你以为我看不出来你是在骗回复吗?我在卖萌而已...#y396:
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

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

GMT+8, 2021-3-2 18:00 , Processed in 0.027180 second(s), 19 queries , Redis On.

© 2015-2020 GuHei.Net

Powered by Discuz! X3.4

快速回复 返回列表