佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > PowerShell入門(mén)教程之Cmd命令與PowerShell命令相互調(diào)用的方法

PowerShell入門(mén)教程之Cmd命令與PowerShell命令相互調(diào)用的方法

熱門(mén)標(biāo)簽:鐵路電話系統(tǒng) 網(wǎng)站排名優(yōu)化 服務(wù)外包 呼叫中心市場(chǎng)需求 百度競(jìng)價(jià)排名 地方門(mén)戶網(wǎng)站 AI電銷(xiāo) Linux服務(wù)器

     單獨(dú)使用一種腳本來(lái)完成一項(xiàng)任務(wù)是理想的狀態(tài),而現(xiàn)實(shí)的情況往往是,因?yàn)闅v史原因、或者團(tuán)隊(duì)組成,你不得不將多種腳本或者程序組合在一起,來(lái)完成某項(xiàng)任務(wù)。本文的討論范圍是Cmd命令與PowerShell命令之間的組合與調(diào)用。

     毋庸置疑,Cmd命令與PowerShell命令之間的調(diào)用有兩個(gè)方向。即在Cmd命令中調(diào)用PowerShell的命令,以及在PowerShell腳本中調(diào)用Cmd命令。需要說(shuō)明的是,這里的調(diào)用分兩個(gè)層次:一、簡(jiǎn)單的在其中一個(gè)的環(huán)境中執(zhí)行另外一個(gè)命令,完成部分工作;二、在其中一個(gè)的執(zhí)行上下文中調(diào)用另一個(gè)的命令,并根據(jù)返回結(jié)果來(lái)選擇后面的邏輯。

在Cmd命令中調(diào)用PowerShell命令

如果只是在Cmd命令中調(diào)用PowerShell的命令,而不需要記錄PowerShell的返回結(jié)果,是非常簡(jiǎn)單的??梢灾苯釉贑md命令或者腳本中執(zhí)行類似一下命令:

復(fù)制代碼 代碼如下:

powershell echo "Hello"

執(zhí)行上述命令的時(shí)候,Cmd是把PowerShell當(dāng)成一個(gè)應(yīng)用程序來(lái)執(zhí)行的。      

在Cmd命令中調(diào)用PowerShell的命令并獲得返回值的可行方法并不多。這是因?yàn)椋珻md命令對(duì)于結(jié)果的處理往往需要借助于文件讀寫(xiě),很少有機(jī)會(huì)在各個(gè)命令之間傳遞數(shù)據(jù),并保存中間結(jié)果的。For命令是其中最好的一個(gè)方法,它的指向方法如下:

復(fù)制代碼 代碼如下:

for /f  %i in ('powershell echo "Hello"') do (set a=%i)

以上命令的執(zhí)行結(jié)果是%a%被賦值為Hello。當(dāng)然,如果只是簡(jiǎn)單賦值,就沒(méi)有必要這樣大費(fèi)周折。調(diào)用PowerShell的命令,肯定是看中了它強(qiáng)大的編程能力,比如自定義的排序等等。

  我遇到的一個(gè)實(shí)際的例子是這樣的:文件服務(wù)器上有一個(gè)目錄,里邊放著一些按年月命名的目錄。因?yàn)檫@個(gè)目錄結(jié)構(gòu)已經(jīng)確定下來(lái)了,而且很多組都在使用,不能隨便改動(dòng)。我們有一個(gè)任務(wù)就是每天定時(shí)去最新的年月目錄里拷貝build。麻煩的是,第一、文件夾時(shí)按照12.1、12.2。。。12.10、12.11、12.12、13.1。。。這樣命名的;第二、從時(shí)間上沒(méi)法找,因?yàn)樽钚碌哪夸洸皇窃谠碌?,而是在月中的某一天生成的。以Cmd命令有限的編程能力,肯定是不好解決這個(gè)問(wèn)題的。我最終寫(xiě)了一個(gè)PowerShell的腳本文件,在Cmd的腳本中調(diào)用,終于解決了這個(gè)問(wèn)題。

在PowerShell命令中調(diào)用Cmd命令

       由于PowerShell強(qiáng)大的管道功能,在PowerShell命令或者腳本中調(diào)用Cmd命令并獲得返回結(jié)果是件很容易的事情,是否獲得結(jié)果對(duì)于調(diào)用Cmd命令的方式也沒(méi)有影響。請(qǐng)看如下示例:

復(fù)制代碼 代碼如下:

cmd /c dir
$a = (cmd /c dir)
$a

以上示例中,第1行的執(zhí)行結(jié)果,和后兩行的執(zhí)行結(jié)果是一樣的。不同點(diǎn)是,后者的執(zhí)行結(jié)果被保存了下來(lái),前者只是將結(jié)果打印在屏幕上。

  為什么需要在PowerShell中調(diào)用Cmd命令呢(既然PowerShell有如此強(qiáng)大的Shell以及編程特性)?其實(shí)原因也很簡(jiǎn)單。在PowerShell之前我們有很多很好用的Cmd命令、工具和控制臺(tái)程序,如果完全丟棄他們并使用PowerShell重寫(xiě)的話,那絕對(duì)是浪費(fèi)。要知道,能夠利用最小的改變來(lái)高效地完成任務(wù),才是我們的目標(biāo)。

結(jié)語(yǔ)

  一個(gè)新的語(yǔ)言,如果不能與已有的資源兼容和溝通,那么它注定不能成為大眾的選擇(也許可能在小眾中流行),最終將被遺棄和忘記。PowerShell與現(xiàn)有系統(tǒng)良好溝通性有目共睹,從它與Cmd命令的關(guān)系可見(jiàn)一斑。

您可能感興趣的文章:
  • PowerShell中運(yùn)行CMD命令的技巧總結(jié)(解決名稱沖突和特殊字符等問(wèn)題)
  • PowerShell中使用Get-Alias命令獲取cmdlet別名例子
  • Windows Powershell 命令集 cmdlets
  • PowerShell入門(mén)教程之PowerShell和Cmd命令行的關(guān)系?
  • 在cmd中直接運(yùn)行PowerShell腳本文件的方法
  • 淺談CMD和win powershell的區(qū)別

標(biāo)簽:湘潭 衡水 黃山 蘭州 崇左 湖南 銅川 仙桃

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PowerShell入門(mén)教程之Cmd命令與PowerShell命令相互調(diào)用的方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    玉树县| 西青区| 玛沁县| 淮安市| 通辽市| 沁水县| 历史| 五台县| 错那县| 神农架林区| 灌阳县| 上蔡县| 凤山市| 渝中区| 万宁市| 呼图壁县| 仙桃市| 西吉县| 闽清县| 平塘县| 台中市| 神农架林区| 松桃| 盐山县| 将乐县| 漳浦县| 化德县| 两当县| 浪卡子县| 张家口市| 青神县| 华安县| 永新县| 密云县| 万山特区| 株洲市| 左权县| 海门市| 梁山县| 周至县| 怀安县|