PowerShell簡介

簡介:PowerShell 是一種命令行 shell 和腳本語言一體化工具。 它被設(shè)計為任務(wù)引擎,使用 cmdlet 來包裝用戶需要執(zhí)行的任務(wù)。 在 PowerShell 中,可以在本地或遠程計算機上運行命令。 可以執(zhí)行管理用戶和自動執(zhí)行工作流等任務(wù)。
什么是 PowerShell?
PowerShell 由命令行 shell 和腳本語言兩部分組成。 它最初是一種框架,用于在 Windows 中自動執(zhí)行管理任務(wù)。
PowerShell 現(xiàn)已發(fā)展為一種跨平臺工具,用于執(zhí)行多種任務(wù)。
命令行 shell 缺少圖形界面,讓你無法使用鼠標(biāo)與圖形元素進行交互。 相反,你需要在計算機控制臺中鍵入文本命令。 下面是使用控制臺的一些優(yōu)點:
與控制臺交互通常比使用圖形界面快。
在控制臺中,可以運行成批命令,因此它非常適合用于持續(xù)集成管道的任務(wù)自動化。
你可使用控制臺與云資源和其他資源交互。
可在文本文件中存儲命令和腳本,并使用源代碼管理系統(tǒng)。 這可能是最大的優(yōu)點之一,因為你的命令可重復(fù)且可審核。
在許多系統(tǒng)(特別是政府系統(tǒng))中,必須跟蹤和評估或?qū)徍艘磺袃?nèi)容。 審核涵蓋了從數(shù)據(jù)庫更改到腳本所做的更改的所有內(nèi)容
功能
PowerShell 通過傳統(tǒng) shell 共享某些功能:
1.內(nèi)置幫助系統(tǒng):大多數(shù) shell 都有一些幫助系統(tǒng),你可以在其中了解有關(guān)命令的詳細信息。 例如,你可以了解命令的作用以及它支持的參數(shù)。 PowerShell 中的幫助系統(tǒng)提供有關(guān)命令的信息,并與聯(lián)機幫助文章集成。
2.管道:傳統(tǒng) shell 使用管道按順序運行多個命令。 一個命令的輸出是下一個命令的輸入。 PowerShell 實現(xiàn)了傳統(tǒng) shell
3.傳達的這種概念,但它又有所不同,因為它對文本上的對象進行操作。 本模塊稍后會詳細介紹此功能。
4.別名:別名是可用于運行命令的替代名稱。 PowerShell 支持使用常見別名,如 cls(清除屏幕)和 ls(列出文件)。 因此,對于熟悉的命令,新用戶可利用其對其他框架的知識,而不必記住 PowerShell 名稱。
PowerShell 不同于傳統(tǒng)的命令行 shell,具體體現(xiàn)在以下幾方面:
1.它對文本上的對象進行操作。 在命令行 shell 中,你必須運行輸出和輸入可能不同的腳本,因此你最終會對輸出進行格式化并提取所需的數(shù)據(jù)。 而在 PowerShell 中,可以使用對象作為輸入和輸出。 這意味著格式設(shè)置和數(shù)據(jù)提取所需時間會更少。
2.它具有 cmdlet。 PowerShell 中的命令稱為 cmdlet(念作 commandlet)。 與其他許多 shell 環(huán)境不同,在 PowerShell 中,cmdlet 是在常見運行時而不是單獨的可執(zhí)行文件上生成的。 此特性在參數(shù)分析和管道行為方面提供了一致的體驗。
3.Cmdlet 通常采用對象輸入并返回對象。 PowerShell 中的核心 cmdlet 是在 .NET Core 中生成的,采用的是開放源代碼形式。 你可以使用來自社區(qū)和其他來源的更多 cmdlet、腳本和函數(shù)來擴展 PowerShell,也可以在 .NET Core 或 PowerShell 中生成自己的 cmdlet。
4.具有多種類型的命令。 PowerShell 中的命令可以是本機可執(zhí)行文件、cmdlet、函數(shù)、腳本或別名。 運行的每個命令都屬于這些類型之一。 由于 cmdlet 是一種命令,因此,命令和 cmdlet 通??苫Q使用。
安裝
在此模塊中,你將練習(xí)如何在計算機上使用 PowerShell。 PowerShell 可用于多種平臺,但如果你使用的計算機運行的是 Linux、macOS 或早期版本的 Windows,則需要安裝它。
每個 OS 對安裝 PowerShell 的說明各不相同。 在繼續(xù)之前,請花幾分鐘時間安裝 PowerShell 或驗證 PowerShell 安裝。 此模塊的下一個單元將介紹如何驗證你的安裝。
Windows
如果運行的是 Windows 8 或更高版本,則應(yīng)已安裝名為 Windows PowerShell 的 PowerShell 版本。 此版本與最新的 PowerShell 版本略有不同,但它可用于學(xué)習(xí)目的。
可從“開始”菜單打開 Windows PowerShell。
其他操作系統(tǒng)
如果你的計算機運行的不是 Windows 8 或更高版本,則需要安裝 PowerShell。 若要查找針對你的 OS 的安裝說明,請參閱安裝各種版本的 PowerShell。
PowerShell使用
啟動PowerShell
方法一: 直接在cmd中執(zhí)行powershell,切換為powershell

方法二: 開始菜單中輸入powershell啟動powershell
方法三: 開始菜單----附件----powershell啟動
使用powershell
powershell啟動后界面如下:

get-help查看幫助
我們一無所知,所以我們輸入help試一下,很好,powershell確實支持help
(不過我們前邊說過powershell命令是cmdle
t格式,help
也使用cmdle
t格式,help
只是get-help
的一個別名)

get-command查看有哪些命令
在確定powershell支持get-help之后,首先我們需要知道powershell支持哪些命令,在上圖get-help中可以看到可以使用get-command查看powershell支持的命令
CommandType列,表示命令類型,Alias是別名、Cmdlet是powershell格式的命令、Function是函數(shù)
Name列,就是命令
Definition列,命令功能的簡單描述

get-command縮小范圍
上面的命令太多了,我們需要縮小范圍以確定類似ps功能的命令在powershell中是什么(當(dāng)然我們說過powershell兼容cmd所以可以直接用ps,但這不是我們這里想要的)
查看信息都是get-開頭,所以我們猜測查看進程的命令也以get-開頭,執(zhí)行g(shù)et-command get-*試一下
結(jié)果如下圖所示,列出了所有g(shù)et開頭的命令,其中我們看到有一個叫g(shù)et-process的命令,一看就是獲取進程信息的

或者我們直接嘗試獲取進程(process
)相關(guān)的命令:get-command "*process*"

get-process查找進程
我們將命令鎖定在了get-process
但是我們不知道這個命令怎么用,可以通過get-help command
的形式查看幫助,我們也試一下

可以看到所有選項都是帶中括號的,所以直接執(zhí)行g(shù)et-process就可以了
但是可以猜測,沒有任何過濾條件返回的肯定是所有進程列表這需要過濾,可以看到-name參數(shù)可以過濾進程名,為保險起見我們還加上號通配符
整個要執(zhí)行的命令就是:get-process -name *notepad

stop-process殺除進程
第一個思路是:在get-help get-process
中已看到相關(guān)鏈接中有stop-process
,這大概率是殺除進程的命令
第二個思路是:獲取進程是get-process
,那么殺除進程也大概率是xxx-process
執(zhí)行:get-command *process

可以看到就5個命令,而其中只有stop-process比較像,一樣使用get-help來查看幫助順便確認是不是

顯而易見確實是,而且殺除命令就是:stop-process -id pid

好了,現(xiàn)在我們開始進入主題
在哪里可以找到 PowerShell?
查找 PowerShell 的最簡單方法是在搜索欄中鍵入“PowerShell”

如何啟動 PowerShell?
我通過單擊“Windows PowerShell”快捷方式啟動了 PowerShell 控制臺

請注意,PowerShell 控制臺的標(biāo)題欄顯示為“Windows PowerShell”
正在運行的是哪個版本的 PowerShell?
PowerShell 中有許多用于存儲狀態(tài)信息的自動變量。 其中某個變量是 $PSVersionTable,它包含可用于顯示相關(guān) PowerShell 版本信息的哈希表:
執(zhí)行策略
與通常的看法相反,PowerShell 中的執(zhí)行策略不是安全邊界。 它的作用是防止用戶無意間運行腳本。 已確定的用戶可以輕松繞過 PowerShell 中的執(zhí)行策略。
無論采用怎樣的執(zhí)行策略設(shè)置,任何 PowerShell 命令都可以通過交互方式運行。 執(zhí)行策略僅影響腳本中運行的命令。 Get-ExecutionPolicy cmdlet 用于確定當(dāng)前的執(zhí)行策略設(shè)置,而 Set-ExecutionPolicy cmdlet 用于更改執(zhí)行策略。 建議使用 RemoteSigned 策略,該策略要求下載的腳本必須由受信任的發(fā)布者簽名才能運行。
當(dāng)執(zhí)行策略設(shè)置為“受限”時,PowerShell 腳本根本無法運行。 這是所有 Windows 客戶端操作系統(tǒng)上的默認設(shè)置。 為了演示該問題,將以下代碼另存為名為?Stop-TimeService.ps1
?的?.ps1
?文件。
只要以管理員身份運行提升的 PowerShell,該命令就可通過交互方式運行而不會出錯。 不過,一旦將其保存為腳本文件并嘗試執(zhí)行該腳本,就會生成錯誤:
請注意,上一組結(jié)果中顯示的錯誤明確指示了發(fā)生了什么問題(在此系統(tǒng)上禁用了運行腳本)。 在 PowerShell 中運行命令后如果生成錯誤消息,請確保閱讀該錯誤消息,而不是只重新運行該命令并希望它成功運行。
將 PowerShell 執(zhí)行策略更改為遠程簽名。
務(wù)必閱讀更改執(zhí)行策略時顯示的警告。 另外建議查看?about_Execution_Policies
?幫助主題,確保已了解更改執(zhí)行策略帶來的安全影響。
由于已將執(zhí)行策略設(shè)置為?RemoteSigned
,Stop-TimeService.ps1
?腳本將正常運行。
在繼續(xù)之前,請務(wù)必啟動 Windows 時間服務(wù),否則可能會遇到無法預(yù)料的問題。
總結(jié)
在本章中,你了解了如何查找和啟動 PowerShell,以及如何創(chuàng)建以管理員身份啟動 PowerShell 的快捷方式。 你還了解了默認執(zhí)行策略及其更改方式。
————————————————
版權(quán)聲明:本文為CSDN博主「霜李維斯」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/zaoyuxuan/article/details/129052643
————————————————