欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > Windows PowerShell是啥?看完本文你就懂它了

Windows PowerShell是啥?看完本文你就懂它了

熱門標簽:電話智能外呼系統誠信合作 真人和電話機器人對話 金融電銷公司怎么辦理外呼系統 雷霆電話機器人電話 信陽話務外呼系統怎么收費 使用電話機器人電銷是否違法 湖州電銷防封卡 安徽400電話辦理 什么渠道可以找外呼系統客戶

引子

一直很羨慕Linux的命令提示符(當然他們叫Shell)。正則表達式,管道,各種神奇的命令,組合起來就能高效完成很多復雜的任務。效率實在是高。流了n年的哈喇子以后,終于有幸用上了Win7,邂逅了cmd的升級版:Windows PowerShell。從此暗爽無比,原來Windows下也有這樣的利器呀~
看看下面的Windows腳本,不到15行有效代碼。在Win7下只要右擊腳本文件,選擇Run with PowerShell,就會自動找到最占內存的10個進程,然后將它們占用的內存畫成一個三維餅圖,如下圖所示。

復制代碼 代碼如下:

# create new excel instance
 $objExcel = New-Object -comobject Excel.Application
 $objExcel.Visible = $True
 $objWorkbook = $objExcel.Workbooks.Add()
 $objWorksheet = $objWorkbook.Worksheets.Item(1)

 # write information to the excel file
$i = 0
$first10 = (ps | sort ws -Descending | select -first 10)
$first10 | foreach -Process {$i++; $objWorksheet.Cells.Item($i,1) = $_.name; $objWorksheet.Cells.Item($i,2) = $_.ws}
$otherMem = (ps | measure ws -s).Sum - ($first10 | measure ws -s).Sum
$objWorksheet.Cells.Item(11,1) = "Others"; $objWorksheet.Cells.Item(11,2) = $otherMem

# draw the pie chart
$objCharts = $objWorksheet.ChartObjects()
$objChart = $objCharts.Add(0, 0, 500, 300)
$objChart.Chart.SetSourceData($objWorksheet.range("A1:B11"), 2)
$objChart.Chart.ChartType = 70
$objChart.Chart.ApplyDataLabels(5)

(1. 這個腳本調用了Excel的COM庫。 2. 當然從命令耦合的角度來看,輸出成文本格式更有利,但這個例子主要想說明PowerShell的強大以及微軟產品優異的復用性。 3. 要手動啟動PowerShell,可以在開始菜單的搜索框中直接鍵入PowerShell回車即可)
簡單領略PowerShell的強大之后,下文就從幾個方面介紹一下PowerShell相對于以往版本的命令提示符甚至Linux Shell的優勢。

Cmdlet + Regex + Pipeline + ...

以往cmd相對于Shell有很多不足,比如命令偏少,部分命令功能偏弱,對正則表達式不支持等等。但現在PowerShell一下趕上來不少。2.0 RTM版內建支持414個命令(術語稱為cmdlet),支持正則表達式,強大的管道應用(其實管道本身的功能和以前差不多,關鍵是冒出來一堆能用管道的命令,比如more, sort, foreach等等),和系統的聯系也比以前緊密了很多。

舉幾個例子來說明:

dir registry::HKEY_CURRENT_USER可以直接顯示注冊表相應位置的內容,可以看到dir的功能改進了不少。

ps | sort ws -Descending | select -first 10可以顯示占用內存最大的10個進程,可以看到管道的靈活應用。

dir -Name | ? {$_ -match "(?num>.).*(\knum>)"}可以顯示出當前目錄下文件名有重復字符的文件。比如abcda.efg,而abcd.efg則不會顯示出來。可以看到PowerShell對正則表達式的支持相當強大。(確切的說嚴格的正則表達式 已經無法實現這樣的效果,需要上下文無關文法 才能夠支持。)
以前為了演示Linux Shell的強大,Stephenjy發了一個自己的截圖,在遇見PowerShell前覺得好神奇,所幸現在也可以實現了。:-)

(為了節約顯示空間,PowerShell的部分顯示結果被刪除,但這個Prompt效果可以用以下腳本驗證: function prompt {"($env:username)-($env:computername)-(`$?: $?)-(jobs: $((get-job | measure).Count))-($(get-location))`n(! $(((history)[-1]).ID + 1))->"})

大殺器 - 面向對象

Linux的設計思想決定所有的輸入和輸出都盡可能是文本格式,這樣可以方便各進程間的合作。同樣這也要求各個程序提供一定強度的文本解析能力。但Windows的思想與此不同,PowerShell中很多輸入輸出都不是普通的文本(plain text),而是一個個對象(objects)。因此與其說PowerShell是一種交互環境,不如說它是一種強大語言的Runtime,而這種語言甚至是面向對象的。

比如當鍵入get-process查看當前進程列表時,系統返回的是這樣的列表:

復制代碼 代碼如下:

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    318       8    12948       3872    84            1728 AppleMobileD
    115       5    13816      13328    38            6920 audiodg
   1315      21    11732      10988   108            2544 CcmExec
... ...

雖然看似一般的格式化文本,但其實這是一個數組,而每個數組元素又是Process類型的對象。同.NET一脈相承,PowerShell中的所有的類都繼承自Object,且支持GetType()函數。因此我們可以執行(get-process).GetType()來看看它的類型:

復制代碼 代碼如下:

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array

而數組中每個元素的類型可以用(get-process)[0].GetType()查看:
復制代碼 代碼如下:

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     False    Process                                  System.ComponentM...

其中面向思想的思想非常明顯,類成員,方法,繼承都出現了。個人感覺這樣的好處并不是指望能用PowerShell寫什么大型軟件,而是體現在另外兩個方面:首先,這樣讓內置的cmdlet及其數據結構組織清晰,符合直覺,寫代碼時速度快不容易出錯。第二,對面向對象的內建支持也為后面無縫接合.NET和COM接口提供了基礎。

站在巨人的肩膀上 - 無縫調用.NET/COM

.NET Framework中包含了一個異常強大的庫,而微軟為了保證二進制層面上跨語言的兼容性,很多庫都是用COM封裝的。PowerShell的一大特色就是可以直接調用這些庫。比如前面的示例用$objExcel = New-Object -comobject Excel.Application創建了一個Excel對象。而wikipedia上的一個腳本更示范了這種無縫調用的強大。下面這個3句話的腳本的作用是顯示一個RSS源最近的8篇文章的標題。注意其中網絡連接,內容下載,XML解析等工作全部由.NET庫完成,正因為站在巨人的肩膀上,PowerShell在實際使用中往往左右逢源,簡潔高效。

復制代碼 代碼如下:

$rssUrl = "http://blogs.msdn.com/powershell/rss.aspx"
$blog = [xml](new-object System.Net.WebClient).DownloadString($rssUrl)
$blog.rss.channel.item | select title -first 8

編輯,運行,調試 - IDE

Windows程序開發,尤其是基于微軟技術的開發很爽的一點就是有強大的IDE和專業的文檔作支持。不論是Windows下的Visual Studio還是Linux下的Mono Develop,甚至連PowerShell這樣的語言都有集編輯與調試為一體的IDE:Windows PowerShell ISE。有了自動完成,即時腳本交互,調試甚至遠程調試,PowerShell腳本寫起來“甚爽甚強巨”。當然文檔也是一般的強大,MSDN中關于PowerShell的部分依舊專業浩瀚。

蛋疼的偽裝 - Profile

有了PowerShell以后,很少就去cmd了。不過作為一個蛋疼的裝B男,把PowerShell偽裝成cmd也是挺有樂趣的一件事。不難發現PowerShell和cmd僅僅在圖標,標題,背景色,提示符,以及剛啟動時的顯示文字五個方面不同。圖標和背景色在快捷方式屬性中可以很方便的修改。而標題和提示符的修改就要用到Profile了。所謂Profile就是在每次啟動PowerShell時都首先自動運行的一段腳本。這個腳本的路徑在$profile變量中有設定。只要設定$host.UI.RawUI.WindowTitle為C:\windows\system32\cmd.exe就能將標題偽裝為cmd。而自定義提示符為當前路徑在PowerShell中自然萬分簡單。至于啟動時的顯示文字,只要通過/nologo參數隱藏原有的版本信息,再打印一行cmd中的文字就好了。最終效果如圖:(關于Profile,可以參見這個鏈接)

另:進程級工作調度 – 并行支持?

==========================================================
隨著多核處理器的迅速發展,從.NET Framework 4.0開始,并行計算被一再強調。從System.Threading中新增加的并行工具類到F#這種非常適合并行化的函數式語言,微軟適時對線程級并行提供了強大的支持。但是對于進程級的工作調度,Windows似乎還相當原始。舉個最簡單的例子來說,如果我們同時向一個移動硬盤啟動5個拷貝會話的話,Windows會同時開始所有的拷貝操作。這樣磁頭會在不同的目標位置間反復進行無意義的移動(尋道),于是在硬盤燈的狂閃中,大量時間就被浪費了。同樣當我們同時啟動數個計算量大的進程時,Windows也會試圖讓這些進程“齊頭并進”。然而為了避免某個進程被餓死,系統又不得不頻繁切換進程,于是大量的時間又被浪費在了保存現場,進程切換,恢復現場上。這樣來看,進程級的并行做的反而不夠好。

所幸PowerShell中加入了任務調度管理功能。通過簡單的實驗,我們可以發現PowerShell對jobs的調度和Windows默認的大不相同,它一般維持和CPU核心數相同的進程高速運轉,而其它進程僅僅占用小部分CPU時間。直到前面的進程結束工作后,后面才有新的進程遞補進入高速運轉的狀態。==========================================================
后來更仔細地做了實驗以后發現,原來Windows內置的進程調度方案就是小部分高速運轉(在我的雙核處理器上是兩個進程占用50%CPU),大部分低速跟進(其他所有進程分享剩下的50%CPU)。這樣PowerShell的工作調度并沒有改善系統原有的現狀。同時由于PowerShell的調度系統需要占用不小的內存,初始化也需要時間。在實測中甚至比默認調度慢了50%。這個實驗結果比較囧。不曉得為什么PowerShell中為什么要加入Job這個東西,難道僅僅為了異步調用嗎?

您可能感興趣的文章:
  • 25個常用PowerShell命令總結
  • Windows Powershell 介紹和安裝
  • Powershell實現編寫和運行腳本
  • 淺談CMD和win powershell的區別
  • PowerShell讀取文件內容、替換文件內容、讀取限定行的例子
  • PowerShell中使用Get-Date獲取日期時間并格式化輸出的例子
  • PowerShell 入門基礎教程
  • Win8系統中使用PowerShell安裝APPX應用命令介紹
  • 使用 powershell 創建虛擬機

標簽:湛江 六盤水 岳陽 山南 德州 鶴崗 運城 濟南

巨人網絡通訊聲明:本文標題《Windows PowerShell是啥?看完本文你就懂它了》,本文關鍵詞  Windows,PowerShell,是啥,看完,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Windows PowerShell是啥?看完本文你就懂它了》相關的同類信息!
  • 本頁收集關于Windows PowerShell是啥?看完本文你就懂它了的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    国产一二三av| 国产欧美一区二区精品仙草咪| 亚洲欧美怡红院| 国产精品中文字幕一区二区三区| 亚洲欧美日韩色| 欧美午夜精品久久久久久超碰| 中文字幕在线一区| 丁香婷婷综合五月| 色偷偷www8888| 中文字幕久久午夜不卡| 国产精品1区2区| 国产91在线播放九色| 久久新电视剧免费观看| 狠狠色综合播放一区二区| 亚洲女优在线观看| 久久午夜免费电影| 国产一区在线不卡| 国产精品69久久久久孕妇欧美| 久久精品一区四区| 国产福利一区二区三区视频在线 | 91高清在线观看| 中文字幕在线免费不卡| 99国内精品久久| 欧美视频一区二区三区四区| 亚洲线精品一区二区三区| 中文字幕无人区二| 91精品国产综合久久香蕉麻豆| 日韩av一区二| 欧美黄色一级生活片| 久久网站最新地址| 国产精品91一区二区| 一本大道久久精品懂色aⅴ| 亚洲另类在线制服丝袜| 欧美丰满熟妇bbb久久久| 欧美一区二区三区四区在线观看| 免费av网站大全久久| 麻豆视频免费在线播放| 国产精品国产自产拍高清av| 91在线观看污| 欧美一卡二卡在线观看| 韩国av一区二区| 色综合久久中文字幕| 亚洲一区二区四区蜜桃| 三级黄色片网站| 日本一区二区三区电影| 91亚洲国产成人精品一区二区三 | 国产传媒日韩欧美成人| 色婷婷精品大在线视频| 婷婷综合另类小说色区| 69xxx免费| 亚洲精品成人少妇| 国产精品jizz| 国产精品久久久久国产精品日日| 香蕉视频1024| 久久综合九色综合久久久精品综合| 国产成人自拍网| 欧美日韩一级大片网址| 捆绑调教美女网站视频一区| 亚洲国产美女视频| 亚洲成人免费av| 老司机精品免费视频| 一区二区三区欧美在线观看| 最新中文字幕视频| 亚洲欧洲在线观看av| 国产激情视频网站| 国产精品乱码久久久久久| 久久久久久婷婷| 国产日韩精品一区二区浪潮av| 91色.com| 久久精品一级爱片| 绯色av蜜臀vs少妇| 国产日韩成人精品| 香蕉视频污视频| 国产精品卡一卡二卡三| 97香蕉碰碰人妻国产欧美| 国产精品久久免费看| 朝桐光av一区二区三区| 国产精品久久久久久久久搜平片| 呦呦视频在线观看| 中文字幕日韩av资源站| 免费观看av网站| 一级特黄大欧美久久久| 久久精品色妇熟妇丰满人妻| 婷婷亚洲久悠悠色悠在线播放| 极品色av影院| 麻豆91免费看| 欧美日韩亚洲丝袜制服| 高清beeg欧美| 精品国产免费视频| 日本wwww色| 国产精品理伦片| 久久久视频6r| 午夜精品一区在线观看| 色综合一个色综合亚洲| 国内国产精品久久| 日韩一卡二卡三卡| 精品人妻一区二区乱码| 日本一区二区久久| 无码人妻精品一区二区中文| 午夜久久电影网| 在线免费观看视频一区| 国产福利不卡视频| 久久久噜噜噜久噜久久综合| 97人妻精品一区二区三区免| 一区二区三区在线免费视频| 糖心vlog免费在线观看| 狠狠色丁香久久婷婷综合_中| 4hu四虎永久在线影院成人| 95精品视频在线| 国产精品麻豆久久久| 毛片aaaaaa| 久久国产人妖系列| 日韩三级电影网址| 国产xxxx视频| 亚洲成av人片一区二区三区| 欧美四级电影网| 北岛玲一区二区三区四区| 欧美韩国日本不卡| 中文字幕人妻一区二区三区在线视频| 视频在线观看91| 在线不卡的av| 性活交片大全免费看| 亚洲自拍偷拍av| 精品视频在线免费看| 91小视频免费看| 亚洲激情一二三区| 欧美在线观看视频一区二区三区 | 福利一区在线观看| 国产精品私人影院| 暗呦丨小u女国产精品| 从欧美一区二区三区| 国产精品萝li| 国产88在线观看入口| av中文字幕亚洲| 亚洲美女偷拍久久| 欧美主播一区二区三区| jvid福利写真一区二区三区| 亚洲欧洲日韩女同| 91激情在线视频| 国产成人精品一区二区三区在线观看| 亚洲一区在线电影| 欧美日韩aaaaa| 日韩片在线观看| 精品午夜久久福利影院| 久久精品免费在线观看| 日韩激情小视频| 99久久er热在这里只有精品15| 亚洲色图一区二区| 欧美色图一区二区三区| 午夜av免费看| 国产一区二区福利视频| 国产精品超碰97尤物18| 欧美丝袜第三区| 无套内谢大学处破女www小说| 九九视频精品免费| 欧美激情一区在线观看| 色婷婷综合在线| 国产艳妇疯狂做爰视频 | 首页综合国产亚洲丝袜| 精品久久人人做人人爽| 日韩黄色中文字幕| 成人91在线观看| 午夜精品一区二区三区电影天堂| 日韩精品一区二区三区在线播放| 国产7777777| av电影在线不卡| 丝袜美腿亚洲色图| 久久午夜羞羞影院免费观看| 色婷婷久久综合| 熟妇高潮精品一区二区三区| 国产一区二三区| 尤物在线观看一区| 日韩天堂在线观看| 日本在线观看网址| 无码人妻一区二区三区在线视频| 天堂资源在线中文精品| 国产日韩av一区二区| 欧美亚洲动漫精品| 亚洲久久久久久久| 99在线精品一区二区三区| 日韩在线一区二区| 中文字幕不卡在线| 欧美日本在线看| 最新中文字幕av| 91麻豆自制传媒国产之光| 日本va欧美va精品发布| 国产精品久久久久桃色tv| 正在播放一区二区| www.97视频| 91av在线免费| 99久久免费视频.com| 蜜桃视频一区二区三区在线观看 | 在线观看国产精品一区| 9i在线看片成人免费| 免费观看30秒视频久久| 亚洲欧美视频一区| 精品99久久久久久| 欧美日韩黄色一区二区| 国产精品久久久免费看| 久久人人爽人人人人片|