梦想是否无聊并不是别人来决定的,不管是什么样的梦想,自己拼命努力去追寻才是最重要的。 收藏本站
登陆 / 注册 搜索

阅读: 5.6K   回复: 5

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

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

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

本帖最后由 soarcloud 于 2016-8-2 21:20 编辑
- \. d% Z2 o/ N7 e# E+ U9 l$ g6 B5 ~; j# A4 W4 w
  PowerShell是命令行的加强版吗?PowerShell能执行命令行的所有命令吗?PowerShell要替代命令行?这三个问题的答案足以让我们了解PowerShell与Cmd命令行之间的关系。让我们慢慢道来。。。
) S$ E2 T' A) P9 R1 k' o2 u, G( S4 H
PowerShell中的命令
1 P2 }% b9 x( ?$ {( W& N  启动PowerShell,在其中输入几个常用的Cmd命令! t' }1 e/ W9 E5 \, H
. f% q, a- V# _- R% D$ q% h, \/ |2 M  J
PS D:\Projects\Practise\PowerShell> dir ' z6 _# u$ {6 r) r9 _
    Directory: D:\Projects\Practise\PowerShell ) u$ Z! I6 J# K5 [. J
Mode                LastWriteTime     Length Name
) z" h8 r: N) x, ?/ L----                -------------     ------ ----
# {" }2 O7 d* E/ F& t2 H$ G# m* Vd----         1/23/2013  12:35 PM            d1 5 k- I! T" m0 c2 i
d----         1/23/2013  12:35 PM            d2
) c4 d. s  M4 }2 \-a---         1/21/2013   8:38 PM      36314 alias.txt ! F! r2 h1 m3 G
-a---         1/21/2013   8:32 PM     241530 cmdlets.txt+ v; K( M! Z+ }7 A+ i6 K5 k3 k6 G

8 a# A4 ]& y* ?  s% Z  K$ \或者6 q0 e3 d$ g" }1 X7 p7 o$ ^9 u& G3 P6 A

6 |% `2 q* |8 HPS D:\Projects\Practise\PowerShell> cd .. 5 `( k' Q8 L) M! D9 O. ]8 h/ z
PS D:\Projects\Practise>7 d( Z3 }4 l! g& ~0 D1 u" B: T
4 C$ H0 o" ]& U% I9 V0 O! T4 J- Q
  结果跟我们的预期是差不多。不过,我们是否就能据此说PowerShell就是PowerShell是命令行的加强版吗?再试试下面这个命令:
  r" [* y1 S! ^6 m' o' a5 }1 b* [% J( X8 a
PS D:\Projects\Practise\PowerShell> dir /ad # Y0 L) p- V+ n7 ]  I
dir : Cannot find path 'D:\ad' because it does not exist.! z) A- @) u; P
9 S; S# k  N+ D: G

( a% B, G9 o* Q" t8 D- k; l3 y% q& l6 Q
- I! R2 e' t) i  这个跟我们的期望相去甚远。在Cmd中,它应该输出当前位置的子文件夹的信息,但是这里,它似乎理解不了我们的参数。下面这个命令也是一样:
7 v7 i' d& [8 R0 ~
- D4 D# l) v3 Z& x6 Q3 lPS D:\Projects\Practise\PowerShell> fc .\alias.txt .\cmdlets.txt
4 ^+ v6 q' R5 G, [. x( m: MFormat-Custom : A positional parameter cannot be found that accepts argument '.\cmdlets.txt'.$ d6 F9 e9 A* c- m3 y$ P* ~" K

3 _9 U; f6 c3 g/ K: H2 W4 e6 d1 `! }3 o

6 s, p  v0 ]- S; L' N9 W  我本来想要调用比较两个文件的fc命令,结果它却理解成了Format-Custom,牛头不对马嘴。这是怎么回事儿呢?到这里我们就可以回答前两个问题了:PowerShell不能执行Cmd命令行的所有命令,确切地说,PowerShell不能执行任何Cmd命令,至少不能直接执行。这是因为,PowerShell不是Cmd的新版本或者加强版什么的,只是它的有些命令从长相到功能都跟Cmd命令很相似而已。6 O0 Q/ ?1 T) }; o! F

1 n) K& J: [+ @- d. A1 A: z: l& MPowerShell与Cmd命令行的关系
/ l4 R3 [0 D, x6 ?  PowerShell可以做为一个应用程序在Cmd中运行,其运行方式有点像在Cmd中运行SQLCmd或者Nslookup,在没有明确exit退出之前,一直是应用程序的运行环境,一切的输入,包括命令和数据,都由应用程序来接受和处理。# V( N  ?- \$ S& {4 h& y
: b" Y7 F! \% ^- g" l" e# c& T
D:\Projects\Practise\PowerShell>powershell 6 X% Z  C+ `" A7 V, y5 J
Windows PowerShell 8 B( d; c1 y0 W
Copyright (C) 2012 Microsoft Corporation. All rights reserved.3 C' E! W7 m9 r7 m
4 [- S( O7 D+ o! k/ S
PS D:\Projects\Practise\PowerShell> get-help
6 w5 N' ?% N9 d
! [6 S4 [8 u$ C) lTOPIC / X4 f# o; K% M# B5 s; ?2 [( C
    Windows PowerShell Help System
( O' f4 U& g% s6 |
1 l% ]& g$ M' P' h4 [
8 f* a- a& X0 i" n4 z  {- Z9 O- w" K6 _" @
Cmd也可以在PowerShell中作为应用程序运行,其运行方式与在Cmd中运行PowerShell相似:% d5 t1 [0 M9 Y0 r* \$ j/ o5 E( N: b

# W& U; C) |8 I, ]2 a0 c- O1 a+ |PS D:\Projects\Practise\PowerShell> cmd
* L; `- k: {1 m% J! bMicrosoft Windows [Version 6.2.9200] 0 }$ V. g+ ^9 G) T% G( W
(c) 2012 Microsoft Corporation. All rights reserved.
* ^6 P) o* ?5 @5 M
4 d. K! \" Q% p: [D:\Projects\Practise\PowerShell>dir /ad
) x; G, l* Y/ y  }  k2 aVolume in drive D is Doc
7 f  {; J* d- {+ r: ~6 qVolume Serial Number is A6C5-E7CE
0 |1 ^3 K) Q/ \9 U1 m- I
* a- u9 ~9 M  j3 {5 Y7 XDirectory of D:\Projects\Practise\PowerShell5 x0 L# \5 G- X* K
1 M/ L' j% U) U- o% g" v
01/30/2013  04:54 PM    <DIR>          . 2 S& e/ j. x: G# q4 j  C% o# ~3 S5 D
01/30/2013  04:54 PM    <DIR>          .. # k4 S9 J( U6 ]2 Q6 n; A; ?
01/23/2013  12:35 PM    <DIR>          d1
( _2 a( |: g2 K2 C5 d5 @01/23/2013  12:35 PM    <DIR>          d2
) S: \1 q2 h2 _2 z/ t
8 l' c( G/ r" [, r% [4 c/ L4 e9 F0 l  j0 u6 b7 K$ p

) F* S. W9 u; ?& O  PowerShell通过Alias这个特性,可以让使用者以Cmd风格来使用PowerShell命令。这样做的好处是让用户在刚接触PowerShell的时候,就像在使用Cmd一样亲切、熟悉。坏处是,让人容易把PowerShell和Cmd搞混了。不过当你了解了Alias的概念和Get-Alias命令以后,这个问题将迎刃而解:
  [4 F& b: l. X% U' X/ ?" e; o1 g0 Y1 O% V0 d9 l
PS D:\Projects\Practise\PowerShell> get-alias dir, echo, type' ]; b+ X* H/ U4 E- m1 L
$ a( u0 H9 d- J1 `6 \# v$ E( P, o
CommandType     Name                                               ModuleName 6 C% w, V$ S. g) W4 j0 q
-----------     ----                                               ---------- ' [  S* P: ?' Y, W$ k$ q. L
Alias           dir -> Get-ChildItem
" W. W. c! |" Z1 a/ w" b" v' b% v- W& ^4 r, v  k* k
Alias           cd -> Set-Location
7 F5 f( t( N; }7 {Alias           echo -> Write-Output
+ `- i7 r8 B8 K% A$ O! L5 v: E0 @$ o7 d+ V: l0 Z0 M
  就是说dir实际上是PowerShell的Get-ChildItem命令的一个别名,cd是Set-Location的别名。。。到这里PowerShell和Cmd的关系问题算是解决了。9 E2 s  d* \5 X* q, q
, v. D) j: [$ C1 O. r) f6 B
Cmd命令行会被PowerShell替代吗?
9 R" |. m( {1 g7 |3 x5 z  我其实一直以来都很讨厌类似“谁不如谁好”、“谁要代替谁”的问题,放到这里也一样,新的东西必然有它的优越性,旧的东西也有一票粉丝。从现在PowerShell被接受的程度来看,短时间内Cmd不会被PowerShell替代。长远来看呢,谁知道呢。我只知道,多一份选择就多一份自由,多一种可能性{:4_114:}* k% t! W3 H- G/ [  B
1 B* k1 M5 f2 F. H6 D5 r
上一篇
下一篇
soarcloud在论坛瞎逛,捡到 2 个 金币.


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

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

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

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

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

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

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

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

我可以把我的眉毛摘下来,
' A# Q' ~% f; J/ a/ u   (・ิω・)ノิิ摘下,  k! w" k2 s# t8 R, }
   (・ิω・ิ)安上,
5 f3 x* r5 s9 W! U   (・ิω・)ノิิ摘下,9 T3 Q2 A& E1 L

+ [9 `% j/ }3 k; E   (・ิω・ิ)安上,
& C/ U5 f3 I4 c3 I0 w  ╰ิิ(・ω・)ノิิ两边都摘下," N( p" ~  P0 B8 ]8 u
   (・ิω・ิ)安上。。。
8 ?# x2 ]/ e6 ]3 B6 }+ l  ╰ิิ(・ω・)ノิิ两边都摘下,# G) G( J9 V/ E2 ^) U
        (・ω・)卧槽。安不回来了。。。 ! I( j- s: H; q5 W9 \8 `9 t5 [
楼主你以为我看不出来你是在骗回复吗?我在卖萌而已...#y396:
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

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

GMT+8, 2021-10-27 16:55 , Processed in 0.031578 second(s), 21 queries , Redis On.

© 2015-2021 GuHei.Net

Powered by Discuz! X3.4

快速回复 返回列表