powershell和cmd區別


本文給大家簡單描述了一下POWERSHELL和CMD的區別,簡單的說,Powershell是cmd的超集,換句話說,cmd能做的事情,Powershell都能做,但是Powershell還能額外做許多cmd不能做的活。

cmd是和powershell都可以做命令行交互,批處理和powershell腳本功能也相當。

我不知道你怎么理解cmd,但下面是powershell是基於.net的,只要你足夠了解.net,你可以使用她做任何你想做的事情。

Windows PowerShell 是專為系統管理員設計的新 Windows 命令行 shell。Windows PowerShell 包括交互式提示和腳本環境,兩者既可以獨立使用也可以組合使用。

與接受和返回文本的大多數 shell 不同,Windows PowerShell 是在 .NET Framework 公共語言運行時 (CLR) 和 .NET Framework 的基礎上構建的,它接受和返回 .NET Framework 對象。環境中的這一根本更改帶來了管理和配置 Windows 的全新工具和方法。

Windows PowerShell 引入了 cmdlet(讀作“command-let”)的概念,這是內置到 shell 中的一個簡單的單一功能命令行工具。可以分別使用每個 cmdlet,但是組合使用這些簡單的工具執行復雜任務時才發揮其作用。Windows PowerShell 包括一百多個基本的核心 cmdlet,您可以編寫自己的 cmdlet 並與其他用戶共享它們。

與許多 shell 一樣,Windows PowerShell 為您提供了對計算機上文件系統的訪問。此外,使用 Windows PowerShell 提供程序還可以訪問其他數據存儲,如注冊表和數字簽名證書存儲,就像訪問文件系統一樣容易。

簡單的說,Powershell是cmd的超集,換句話說,cmd能做的事情,Powershell都能做,但是Powershell還能額外做許多cmd不能做的活。

主要是系統管理功能、腳本語言和在線幫助更強大,你確實可以只把它當成cmd來用,也可以學和用得更深

powershell的優點

沒有做不到,只有想不到。用 PowerShell 甚至可以 Load C/C++ 寫的 dll,然后執行里面的代碼,COM 就不說了。跑題了,題主問不同,竊以為 PowerShell 和 cmd 最大的不同,並且也是和其它 *nix Shell 最大的不同在於 PowerShell 的 pipe 傳遞的是 .net object,而不是 raw 字符串,於是這就打開了一扇神奇的大門,因為 PowerShell 的一切組件都可以和諧地共存,彼此不用互相猜忌,不用猜你喂給我的數據合不合法,也不用擔心我喂給你的參數格式對不對。大家共享一個 CLR,擁有豐富的 metadata,自由自在地在 .net 的世界里徜徉和探索。順帶宣傳一下 https://chocolatey.org/ ,Windows 的 apt-get,基於 PowerShell

PowerShell為什么強大

微軟是一個很”低調”的公司,取名為微軟,感覺有“微微軟下去”的意思,這是個玩笑了。windows 操作系統 和office辦公軟件,如此之優秀,微軟也沒敢命名為PowerOS 和 PowerOffice,但是在Monad(PowerShell的前身)發布后的第二年(2006年),微軟就直接就發布了Windows PowerShell 1.0,並且”大言不慚“地命名為PowerShell,這也有點太不淡定了。

今天我根據自己的體驗來稍微總結一下為什么PowerShell如此之強大。

破天荒的方便

諸如存儲計算中GB,MB,KB單位等;數組聲明中的1..n和下標為-1的處理;還有所見即所得,通俗易懂的動詞+名詞結構Cmdlet。

面向對象

與面向過程相比,面向對象更方便更容易描述現實世界,也算趕上了時髦。

綁上.NET這棵大樹

正所謂大樹下面好乘涼,PowerShell綁上.NET這個大款了,借助.NET Framework平台強大的類庫,幾乎讓一切都成為可能。

強大的兼容性

完全兼容windows 平台上其它調用,如可執行文件(exe),批處理bat和vb script等。

基於平台的可擴展性

微軟有個優點,與應用相比,它更喜歡做平台。PowerShell早已變成一個平台,在PowerShell 剛發布的第二年,微軟的System Center Operations Manager 和 SharePoint就提供了針對該平台的組件,后來的活動目錄,Hyper-V,Windows Azure,Office 365就更不用說了。除了微軟,亞馬遜的雲平台管理,Dell的out-of-hand 管理,也都提供了基於PowerShell的管理組件。PowerShell 儼然變成了一個標准,變成了一個規范。

舉例介紹
如果您第一次聽說過PowerShell,想稍微觀望下,且看下面的10個例子。

[數學計算] (39+79-51)*497/28 = ?
心算再快,應當也沒有敲回車鍵快吧:

1
2
PS > (39+79-51)*497/28
1189.25

[日期] 距離下一個情人節還有多少分鍾?
我知道距離多少天好算,如果變成分鍾呢?

1
2
3
4
5
6
7
8
$now = Get-Date
$day =[datetime] '2-14'
if( $now  -lt  $day  ){
$day .Subtract( $now ).TotalMinutes
}
else{
$day .AddYears(1).Subtract( $now ).TotalMinutes
}

[容量] 3GB > 3145726KB嗎 ?

1
2
PS > 3gb -gt  3145726kb
True

[ID]能產生一個GUID嗎?

1
2
3
4
5
PS > [guid]::NewGuid()
 
Guid
----
0f283ab4-f402-400c-98ce-359442f11f1a

[文件] Windows目錄下所有可執行文件exe的大小是多少?

1
dir  $env :windir -Filter  *.exe | measure -Sum  Length

[注冊表] 注冊表路徑HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework 下 ‘Enable64Bit'的值是多少?

1
( Get-ItemProperty  -Path  hklm:SOFTWARE\Microsoft\.NETFramework ).Enable64Bit

[證書] 指紋為[28DE15612AFF1CD69596AB17AF06AE86CB9C003B]的證書在證書存儲區嗎?

1
2
ls  Cert:\LocalMachine\My\ |
where  { $_.Thumbprint -eq  '28DE15612AFF1CD69596AB17AF06AE86CB9C003B'  }

[服務] 打印機服務有沒有啟動呢?

1
Get-Service  spooler

[進程] 當前運行了多少個IE進程?

1
( Get-Process  iexplore ).count

[報表] 將所有運行的進程信息導出為HTML報表?

1
Get-Process  | ConvertTo-Html  | Out-File  a.html

現在知道了powershell的強大了吧,在windows平台powershell還是比較好用的。

 

--Windows常用工具類:

運行程序                         運行命令
記事本                            notepad
計算器                            calc
畫圖                               mspaint
寫字板                            write
Windows放大鏡             magnify
輔助工具管理器               utilman
Telnet客戶端                   telnet
任務管理器                      taskmgr
關閉Windows                 shutdown
掃描儀與相機                   sticpl.cpl
遠程桌面                          mstsc
可移動存儲                       ntmsmgr.msc
注冊表編輯器                    regedit
TrueType造字程序            eudcedit
打印機文件夾                    printers
打印機和傳真                    control printers
控制面板                           control
屏幕鍵盤                           osk 網絡連接                           ncpa.cpl 或control netconnections
從Windows注銷               logoff 字體文件夾                       fonts 或control fonts
磁盤管理                          diskmgmt.msc
快速查找                          findfast.cpl
磁盤碎片整理程序            dfrg.msc
磁盤檢查工具                   chkdsk
磁盤清理工具                   cleanmgr
剪貼簿查看器                   clipbrd
輔助功能選項                   access.cpl
添加硬件向導                   hdwwiz.cpl
添加或刪除程序                appwiz.cpl
常用管理配置工具 
設備管理器                        devmgmt.msc 
Direct X控制面板(如果已經安裝) directx.cpl
Direct X診斷工具                dxdiag
磁盤分區管理器                   diskpart 顯示屬性                             desk.cpl 或 control desktop
文件夾選項                          control folders
顯示屬性的外觀選項卡         control color
文件簽名驗證                       sigverif
IP配置實用程序                    ipconfig
鍵盤屬性                             control keyboard
鼠標屬性                             main.cpl 或 control mouse
Internet屬性                       inetcpl.cpl
密碼屬性                             assword.cpl
電話與調制解調器選項         telephon.cpl
電源選項屬性                       powercfg.cpl
性能                                     perfmon
區域和語言選項                    intl.cpl
系統屬性                              sysdm.cpl
用戶帳戶管理                       nusrmgr.cpl
Windows防火牆                  firewall.cpl
運行Windows更新               wupdmgr
系統配置實用程序                msconfig
聲音和音頻設備屬性             mmsys.cpl
共享文件夾                           fsmgmt.msc
服務                                     services.msc
Windows安全中心               wscui.cpl
————————————————

下面我們看看能由Windows PowerShell完成的最常見的25個任務。不止是這些任務很簡單,顯示語句的命令架構和其他PowerShell命令也很簡單。掌握好這些基本命令是成為PowerShell專家的必經之路。

  入門級別

  1. 像文件系統那樣操作Windows Registry——cd hkcu:
  2. 在文件里遞回地搜索某個字符串——dir –r | select string "searchforthis" 
  
  3. 使用內存找到五個進程——ps | sort –p ws | select –last 5
  4. 循環(停止,然后重啟)一個服務,如DHCP——Restart-Service DHCP
  5. 在文件夾里列出所有條目——Get-ChildItem – Force
  6. 遞歸一系列的目錄或文件夾——Get-ChildItem –Force c:\directory –Recurse
  7. 在目錄里移除所有文件而不需要單個移除——Remove-Item C:\tobedeleted –Recurse
  8. 重啟當前計算機——(Get-WmiObject -Class Win32_OperatingSystem -ComputerName .).Win32Shutdown(2)

  收集信息

  9. 獲取計算機組成或模型信息——Get-WmiObject -Class Win32_ComputerSystem
  10. 獲取當前計算機的BIOS信息——Get-WmiObject -Class Win32_BIOS -ComputerName .
  11. 列出所安裝的修復程序(如QFE或Windows Update文件)——Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName .
  12. 獲取當前登錄計算機的用戶的用戶名—— Get-WmiObject -Class Win32_ComputerSystem -Property UserName -ComputerName .
  13. 獲取當前計算機所安裝的應用的名字——Get-WmiObject -Class Win32_Product -ComputerName . | Format-Wide -Column 1
  14. 獲取分配給當前計算機的IP地址——Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Format-Table -Property IPAddress
  15. 獲取當前機器詳細的IP配置報道——Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Select-Object -Property [a-z]* -ExcludeProperty IPX*,WINS*
  16. 找到當前計算機上使用DHCP啟用的網絡卡——Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=true" -ComputerName .
  17. 在當前計算機上的所有網絡適配器上啟用DHCP——Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=true -ComputerName . | ForEach-Object -Process {$_.EnableDHCP()}

  軟件管理

  18. 在遠程計算機上安裝MSI包——(Get-WMIObject -ComputerName TARGETMACHINE -List | Where-Object -FilterScript {$_.Name -eq "Win32_Product"}).Install(\\MACHINEWHEREMSIRESIDES\path\package.msi)
  19. 使用基於MSI的應用升級包升級所安裝的應用——(Get-WmiObject -Class Win32_Product -ComputerName . -Filter "Name='name_of_app_to_be_upgraded'").Upgrade(\\MACHINEWHEREMSIRESIDES\path\upgrade_package.msi)
  20. 從當前計算機移除MSI包——(Get-WmiObject -Class Win32_Product -Filter "Name='product_to_remove'" -ComputerName . ).Uninstall()
  機器管理
  21. 一分鍾后遠程關閉另一台機器——Start-Sleep 60; Restart-Computer –Force –ComputerName TARGETMACHINE
  22. 添加打印機——(New-Object -ComObject WScript.Network).AddWindowsPrinterConnection(\\printerserver\hplaser3)
  23. 移除打印機——(New-Object -ComObject WScript.Network).RemovePrinterConnection("\\printerserver\hplaser3 ")
  24. 進入PowerShell會話——invoke-command -computername machine1, machine2 -filepath c:\Script\script.ps1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM