PowerShell入門(二):PowerShell與Cmd命令行
PowerShell中的命令
Windows PowerShell 是一種命令行外殼程序和腳本環(huán)境,使命令行用戶和腳本編寫者可以利用 .NET Framework 的強大功能。它引入了許多非常有用的新概念,從而進一步擴展了您在 Windows 命令提示符和 Windows Script Host 環(huán)境中獲得的知識和創(chuàng)建的腳本
啟動PowerShell,在其中輸入幾個常用的Cmd命令
PS D:\Projects\Practise\PowerShell> dir Directory: D:\Projects\Practise\PowerShell Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 1/23/2013 12:35 PM d1 d---- 1/23/2013 12:35 PM d2 -a--- 1/21/2013 8:38 PM 36314 alias.txt -a--- 1/21/2013 8:32 PM 241530 cmdlets.txt
或者
PS D:\Projects\Practise\PowerShell> cd .. PS D:\Projects\Practise>
結(jié)果跟我們的預期是差不多。不過,我們是否就能據(jù)此說PowerShell就是PowerShell是命令行的加強版嗎?再試試下面這個命令:
PS D:\Projects\Practise\PowerShell> dir /ad dir : Cannot find path 'D:\ad' because it does not exist.…
這個跟我們的期望相去甚遠。在Cmd中,它應該輸出當前位置的子文件夾的信息,但是這里,它似乎理解不了我們的參數(shù)。下面這個命令也是一樣:
PS D:\Projects\Practise\PowerShell> fc .\alias.txt .\cmdlets.txt Format-Custom : A positional parameter cannot be found that accepts argument '.\cmdlets.txt'.…
我本來想要調(diào)用比較兩個文件的fc命令,結(jié)果它卻理解成了Format- Custom,牛頭不對馬嘴。這是怎么回事兒呢?到這里我們就可以回答前兩個問題了:PowerShell不能執(zhí)行Cmd命令行的所有命令,確切地說,PowerShell不能執(zhí)行任何Cmd命令,至少不能直接執(zhí)行。這是因為,PowerShell不是Cmd的新版本或者加強版什么的,只是它的有些命令從長相到功能都跟Cmd命令很相似而已。#p#
PowerShell與Cmd命令行的關(guān)系
PowerShell可以做為一個應用程序在Cmd中運行,其運行方式有點像在Cmd中運行SQLCmd或者Nslookup,在沒有明確exit退出之前,一直是應用程序的運行環(huán)境,一切的輸入,包括命令和數(shù)據(jù),都由應用程序來接受和處理。
D:\Projects\Practise\PowerShell>powershell Windows PowerShell Copyright (C) 2012 Microsoft Corporation. All rights reserved.PS D:\Projects\Practise\PowerShell> get-helpTOPIC Windows PowerShell Help System…
Cmd也可以在PowerShell中作為應用程序運行,其運行方式與在Cmd中運行PowerShell相似:
PS D:\Projects\Practise\PowerShell> cmd Microsoft Windows [Version 6.2.9200] (c) 2012 Microsoft Corporation. All rights reserved.D:\Projects\Practise\PowerShell>dir /ad Volume in drive D is Doc Volume Serial Number is A6C5-E7CE
Directory of D:\Projects\Practise\PowerShell 01/30/2013 04:54 PM <DIR> . 01/30/2013 04:54 PM <DIR> .. 01/23/2013 12:35 PM <DIR> d1 01/23/2013 12:35 PM <DIR> d2
…
PowerShell通過Alias這個特性,可以讓使用者以Cmd風格來使用PowerShell命令。這樣做的好處是讓用戶在剛接觸PowerShell的時候,就像在使用Cmd一樣親切、熟悉。壞處是,讓人容易把 PowerShell和Cmd搞混了。不過當你了解了Alias的概念和Get-Alias命令以后,這個問題將迎刃而解:
PS D:\Projects\Practise\PowerShell> get-alias dir, echo, type
CommandType Name ModuleName ----------- ---- ---------- Alias dir -> Get-ChildItem Alias cd -> Set-Location Alias echo -> Write-Output
就是說dir實際上是PowerShell的Get-ChildItem命令的一個別名,cd是Set-Location的別名。。。到這里PowerShell和Cmd的關(guān)系問題算是解決了。
Cmd命令行會被PowerShell替代嗎?
我其實一直以來都很討厭類似“誰不如誰好”、“誰要代替誰”的問題,放到這里也一樣,新的東西必然有它的優(yōu)越性,舊的東西也有一票粉絲。從現(xiàn)在PowerShell被接受的程度來看,短時間內(nèi)Cmd不會被PowerShell替代。長遠來看呢,誰知道呢。我只知道,多一份選擇就多一份自由,多一種可能性