无论你在哪里,就算我看不见你,我也会一直注视着你 收藏本站
登陆 / 注册 搜索

阅读: 4.5K   回复: 5

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

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

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

本帖最后由 soarcloud 于 2016-8-2 21:20 编辑 8 f4 p% h- j7 C0 l1 W
  `( [2 g- m, c
  PowerShell是命令行的加强版吗?PowerShell能执行命令行的所有命令吗?PowerShell要替代命令行?这三个问题的答案足以让我们了解PowerShell与Cmd命令行之间的关系。让我们慢慢道来。。。# w. b8 l: F5 P' B3 k/ c

1 c# t% L& `" D* g! Z* {# O6 RPowerShell中的命令
3 m5 Q" v/ h: J1 }0 n3 U# B  启动PowerShell,在其中输入几个常用的Cmd命令" c% c! t* L) k; K9 R# \

  s0 J1 t8 p" x7 t( qPS D:\Projects\Practise\PowerShell> dir
$ G) a5 Y' s9 T7 U( |/ i- A: D    Directory: D:\Projects\Practise\PowerShell
. D( w+ J* f$ i5 O; [Mode                LastWriteTime     Length Name
& l6 A0 p$ W3 N& o) ?% o----                -------------     ------ ---- % y3 a' k' X! |; N8 n4 Y, b" K& D# `
d----         1/23/2013  12:35 PM            d1
& Q1 V) E5 q2 M0 Z! J8 f8 i$ od----         1/23/2013  12:35 PM            d2 ) ?1 }, ^; l! e
-a---         1/21/2013   8:38 PM      36314 alias.txt 2 m% `- j; `( P$ G" I  f
-a---         1/21/2013   8:32 PM     241530 cmdlets.txt
, G% Z& G  [2 M9 p2 T4 h$ Q9 b; A( y" `, y/ z
或者
. e% V1 E6 A$ f; L
/ X- x4 O0 g/ I- w/ z7 jPS D:\Projects\Practise\PowerShell> cd ..
! }/ G  F8 [; C  X! iPS D:\Projects\Practise>
+ X  g& A: |4 s* O0 h. m% O0 a" X, }8 i9 N
  结果跟我们的预期是差不多。不过,我们是否就能据此说PowerShell就是PowerShell是命令行的加强版吗?再试试下面这个命令:$ `: O2 @8 n2 u
- T. s) \% h/ O4 I3 V3 c
PS D:\Projects\Practise\PowerShell> dir /ad
) w, [7 C! w, Wdir : Cannot find path 'D:\ad' because it does not exist.* h1 U" |% v7 i6 y% y$ `

' W7 Q3 I/ B: ^# _/ m! {% y( e0 R+ n  j* o, C( q' c  R6 l1 g9 K
8 O$ z  i; A1 i3 o% y3 M( [- @4 c- f
  这个跟我们的期望相去甚远。在Cmd中,它应该输出当前位置的子文件夹的信息,但是这里,它似乎理解不了我们的参数。下面这个命令也是一样:
- ]0 A3 u" ?5 a/ }
! H, G+ ?7 H, `. {# q  PPS D:\Projects\Practise\PowerShell> fc .\alias.txt .\cmdlets.txt ; {6 `: S, b3 R: e: D2 \
Format-Custom : A positional parameter cannot be found that accepts argument '.\cmdlets.txt'./ z% x- m+ x& v! F0 N5 R) c3 ?
5 e5 B5 N% U0 ?& B# Z, Y; I8 c

+ j3 P# Y% r0 y9 G0 p# G: D
: o2 B) l# C* a  我本来想要调用比较两个文件的fc命令,结果它却理解成了Format-Custom,牛头不对马嘴。这是怎么回事儿呢?到这里我们就可以回答前两个问题了:PowerShell不能执行Cmd命令行的所有命令,确切地说,PowerShell不能执行任何Cmd命令,至少不能直接执行。这是因为,PowerShell不是Cmd的新版本或者加强版什么的,只是它的有些命令从长相到功能都跟Cmd命令很相似而已。9 k. ^7 R. k: P* `& D0 v
6 u( _/ p5 S8 c- @" I
PowerShell与Cmd命令行的关系/ w( ]$ t5 S2 S! `5 U% f3 V: M' \
  PowerShell可以做为一个应用程序在Cmd中运行,其运行方式有点像在Cmd中运行SQLCmd或者Nslookup,在没有明确exit退出之前,一直是应用程序的运行环境,一切的输入,包括命令和数据,都由应用程序来接受和处理。" `  I. C  Z5 ?( C6 B2 K6 C; m* f
% o) ]% h1 Q. i# V% k) v
D:\Projects\Practise\PowerShell>powershell
8 R# K# x9 ^( P- \8 K! F5 V/ PWindows PowerShell 2 O( j4 y* i7 e7 F) `
Copyright (C) 2012 Microsoft Corporation. All rights reserved.
" B/ b7 z: a" G4 z& m0 S& N6 A
7 v2 Y& Q8 r+ w2 d* ?PS D:\Projects\Practise\PowerShell> get-help
  z5 m6 ~/ a8 d
' V1 p* ~/ h: {: f5 f% x: n7 zTOPIC
& r6 p; _. H; W; R    Windows PowerShell Help System- k/ K" H, C% @; [4 w3 D
6 t* r, O: H: W4 K( D) [/ _% K3 _
: b. ?9 F8 d) r6 a
% x; D; l2 C0 X, k( r, B, B# Q7 L3 t
Cmd也可以在PowerShell中作为应用程序运行,其运行方式与在Cmd中运行PowerShell相似:
8 j* G4 {, x# X
4 |, N' |; j% x( c; W7 ?7 v! _PS D:\Projects\Practise\PowerShell> cmd % y5 a& e' b; X0 A3 n7 J- [
Microsoft Windows [Version 6.2.9200] ( _! ^/ K2 }! b0 N: M5 c+ x3 b
(c) 2012 Microsoft Corporation. All rights reserved.
5 b9 b% Q  w+ I+ P# {, i, }7 i/ h+ U$ s: ^- m6 U
D:\Projects\Practise\PowerShell>dir /ad 9 p$ c0 E( D" ?- z  z' p
Volume in drive D is Doc
2 d4 P% k8 ^/ k  D& w; mVolume Serial Number is A6C5-E7CE
6 @8 h" x3 Z" p9 \6 c- l) i
' ?, z, _+ p" W4 UDirectory of D:\Projects\Practise\PowerShell$ f- W: p9 i4 L, U8 F" Y% W

4 B  Q& F4 `4 {  C: d$ f/ ~01/30/2013  04:54 PM    <DIR>          . / b$ A9 c/ i" }) E
01/30/2013  04:54 PM    <DIR>          ..
* v" Q* ^5 Y( C+ y1 S+ G01/23/2013  12:35 PM    <DIR>          d1 * z# b3 `! A, q" v
01/23/2013  12:35 PM    <DIR>          d2
8 q* N' D5 X" W: d2 t& ~. W8 A
5 V% f" m, i7 B% i% ~8 l0 y" r7 }, k& b7 s

  u% x: l8 {1 W8 F' t' N7 K  PowerShell通过Alias这个特性,可以让使用者以Cmd风格来使用PowerShell命令。这样做的好处是让用户在刚接触PowerShell的时候,就像在使用Cmd一样亲切、熟悉。坏处是,让人容易把PowerShell和Cmd搞混了。不过当你了解了Alias的概念和Get-Alias命令以后,这个问题将迎刃而解:
% c( a# W1 r4 Z& C- Z0 c2 x: T; D, S# H2 `! z4 M& \
PS D:\Projects\Practise\PowerShell> get-alias dir, echo, type
' v9 E9 ~" g. d+ T9 \9 {: i+ V' j
6 [% i3 u2 `3 b2 O7 u7 cCommandType     Name                                               ModuleName
+ u- m8 Q5 s8 K5 S-----------     ----                                               ----------
. g! v3 f, @8 OAlias           dir -> Get-ChildItem
3 o2 y$ s" Z- e  |4 z1 k3 Z
3 ^6 |7 O7 K- A, L& CAlias           cd -> Set-Location
  @. V' ?. B7 n6 q/ @Alias           echo -> Write-Output6 S3 ]! G6 g7 I$ ~0 P2 k5 C

9 Q4 L) q$ B  q9 l3 x6 ]* W  就是说dir实际上是PowerShell的Get-ChildItem命令的一个别名,cd是Set-Location的别名。。。到这里PowerShell和Cmd的关系问题算是解决了。
' P! I. m% W* [% V9 l; y( P7 g7 u# M% e. h6 h3 q7 K1 n' K
Cmd命令行会被PowerShell替代吗?
" P5 Z" m% K; p; E1 _+ z6 r  我其实一直以来都很讨厌类似“谁不如谁好”、“谁要代替谁”的问题,放到这里也一样,新的东西必然有它的优越性,旧的东西也有一票粉丝。从现在PowerShell被接受的程度来看,短时间内Cmd不会被PowerShell替代。长远来看呢,谁知道呢。我只知道,多一份选择就多一份自由,多一种可能性{:4_114:}
8 N* Z% y) z/ p" ?* R" g: ?6 ], V3 c8 t; c9 u


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

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

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

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

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

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

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

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

我可以把我的眉毛摘下来,) t+ y' t; s$ Q+ L9 [3 M
   (・ิω・)ノิิ摘下,+ j7 h* Z0 |' J. ^  B# t4 @
   (・ิω・ิ)安上,
9 E" b- ^+ [. m   (・ิω・)ノิิ摘下,
7 p& j) F7 r5 N; V
" I/ n6 r- G/ A' N   (・ิω・ิ)安上,
4 {! J" H* s* A& Q" I8 b3 c9 B  ╰ิิ(・ω・)ノิิ两边都摘下,$ q! ^& C6 o4 `5 @5 ?0 M8 |8 y
   (・ิω・ิ)安上。。。- x7 e4 \2 S3 s+ C
  ╰ิิ(・ω・)ノิิ两边都摘下,# q/ `% T! `8 t
        (・ω・)卧槽。安不回来了。。。 4 B4 a6 J% S7 S. q" U
楼主你以为我看不出来你是在骗回复吗?我在卖萌而已...#y396:
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

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

GMT+8, 2020-10-30 08:52 , Processed in 0.041385 second(s), 21 queries , Redis On.

© 2015-2020 GuHei.Net

Powered by Discuz! X3.4

快速回复 返回列表