我最常用的 Windows PowerShell 指令及其優點

我最常用的 Windows PowerShell 指令及其優點

PowerShell 被廣泛認為是專注於腳本編寫和自動化的 IT 管理員的必備工具。然而,其強大的功能遠不止於 IT 領域,對於任何正在處理雜亂無章的文件和目錄的人來說,它都彌足珍貴。就我個人而言,我使用 PowerShell 命令來篩選過時的程式碼、建立用戶端文件,並緩解數月快節奏、截止日期驅動的專案所累積的混亂。

作為強大的命令列 Shell 和腳本平台,PowerShell 簡化了各種任務。儘管早期版本的 Windows 提供了獨立的 PowerShell 應用程序,但由於其多功能性和現代化的介面,現在使用者更喜歡使用 Windows 終端來執行 Shell 環境(包括 PowerShell 和命令提示字元)。

所有命令均可在專用 PowerShell 應用程式和 Windows 終端機中執行。要開始使用它們,只需在 Windows 終端機中開啟 PowerShell 標籤即可。

1.獲取協助

在 PowerShell 中取得幫助命令

當我第一次透過 YouTube 教學探索 PowerShell 時,使用者經常強調的一個指令是Get-Help。此命令作為入門資源,可讓您存取有關任何 PowerShell cmdlet 的詳細資訊及其語法、參數和使用範例。

要檢索有關命令的特定信息,請輸入:

Get-Help Get-Process

這將顯示命令的概要、語法詳細資訊和輸入參數。有關更多信息,請附加-Examples參數:

Get-Help Get-Process -Examples

此外,您可以使用-Online開關參考 Microsoft 的官方文件:

Get-Help Get-Process -Online

此命令將引導您到 Microsoft 網站以取得全面的命令文件。

2.獲取命令

在 PowerShell 中取得命令命令

Get-Help專注於提供有關 cmdlet 的信息,而Get-Command則對於查找並列出所有可用命令至關重要。如果您知道要執行的功能,但記不起命令名稱,只需使用 Get-Command 根據部分名稱或模式搜尋命令即可。

例如,要尋找包含單字process的所有命令,請輸入:

Get-Command *process*

此命令顯示名稱中包含“process”的所有命令。您可以根據命令類型進一步優化搜索,例如,如果您只想要 cmdlet:

Get-Command -Name Get* -CommandType Cmdlet

此外,對於特定於模組的搜索,例如與網路相關的搜尋:

Get-Command -Module NetTCPIP

使用Get-Command比在網路上搜尋命令名稱高效得多。

3.測試網路連接

Test-NetConnection 指令 PowerShell

您是否經常在 ping、telnet 和 traceroute 等各種工具之間切換?Test-NetConnection cmdlet 將這些功能整合為一個。此 cmdlet 對於網路故障排除至關重要,因為它可以幫助診斷問題是源自於您的網路、伺服器或其他來源。

要確定某個網站是否可訪問,請執行:

Test-NetConnection makeuseof.com

此命令提供 ping 結果和基本連接資訊。要測試特定端口,請將端口號合併到命令中:

Test-NetConnection server.company.com -Port 443

如需詳細的網路路徑跟踪,請使用-TraceRoute參數:

Test-NetConnection 8.8.8.8 -TraceRoute

此命令將測試資料包傳送至 8.8.8.8,同時追蹤您的電腦和目的地之間的跳數,幫助您找出任何連線問題。

4.獲取子項

Get-ChildItem PowerShell 指令

Get -ChildItem cmdlet 可讓你查看任何指定目錄中的檔案和資料夾。例如,要列出 Documents 資料夾中的內容,只需輸入:

Get-ChildItem C:\Users\Username\Documents

若要識別上週修改的 PDF 文件,請使用以下命令:

Get-ChildItem C:\Users\YourName\Documents -Filter *.pdf | Where-Object {$_. LastWriteTime -gt (Get-Date).AddDays(-7)}

-Recurse參數可讓您搜尋所有子資料夾。如果您要查找 Projects 資料夾及其子目錄中的所有日誌文件,請執行以下操作:

Get-ChildItem C:\Projects -Recurse -Filter *.log

如果磁碟空間不足,您可以識別超過 1GB 的大檔案:

Get-ChildItem C:\ -Recurse -File | Where-Object {$_. Length -gt 1GB} | Select-Object FullName, @{Name="SizeGB";Expression={$_. Length/1GB}}

Get-ChildItem cmdlet是自動執行批次任務、文件組織和審計的強大助手。

5.Where-Object

PowerShell 中的 Where-Object 指令

在前面的範例中,Where-Object的使用突顯了其根據特定屬性條件過濾資料的功能-其操作方式類似於程式設計中的條件語句。花括號內的語法允許表示每個被求值的項目。

若要視覺化所有正在運行的服務,請輸入以下內容:

Get-Service | Where-Object {$_. Status -eq "Running"}

如果您對消耗超過 100MB 記憶體的進程感興趣,請嘗試:

Get-Process | Where-Object {$_. WorkingSet -gt 100MB}

也可以組合多個條件。例如,要尋找上個月內修改過的大型 Word 文件:

Get-ChildItem -Filter *.docx | Where-Object {$_. Length -gt 5MB -and $_. LastWriteTime -gt (Get-Date).AddMonths(-1)}

將複雜條件組織到多行以增強腳本的可讀性:

Get-ChildItem | Where-Object { $_. Length -gt 1MB -and $_. Extension -eq ".log"}

6.選擇對象

PowerShell 中的 Select-Object 指令

命令的輸出通常比實際需要的輸出要多。 Select -Object cmdlet 可讓您僅篩選相關數據,然後可以使用Export-Csv cmdlet 將這些數據匯出到 CSV 檔案。例如,如果您只想查看服務的名稱和狀態:

Get-Service | Select-Object Name, Status

如果您的目標是找出消耗 CPU 最多的前五個進程,請執行:

Get-Process | Sort-Object CPU -Descending | Select-Object -First 5 Name, CPU

此外,您還可以建立計算屬性。若要以兆位元組(而非位元組)顯示檔案大小,請執行下列操作:

Get-ChildItem | Select-Object Name, @{Name="SizeMB";Expression={$_. Length/1MB}}

若要擷取單一屬性值,請使用-ExpandProperty參數:

Get-Process notepad | Select-Object -ExpandProperty Id

此命令僅產生進程 ID,這在透過管道傳輸到需要單一值的其他命令時特別有用。

7.獲取會員

PowerShell 中的 Get-Member 指令

PowerShell 主要透過物件進行操作,Get-Member cmdlet 會顯示其關聯的屬性和方法。例如,在檢索有關進程的資訊時,您可以檢查其大小、建立日期和其他指標。使用以下命令查看進程物件內的屬性:

Get-Process | Get-Member

這將列出 CPU、Id 和 WorkingSet 等屬性,以及 Kill() 和 Refresh() 等方法。如果您只想查看屬性,可以指定:

Get-Process | Get-Member -MemberType Property

對於文件相關操作:

Get-ChildItem C:\temp\test.txt | Get-Member

這會顯示諸如 Length 和 LastWriteTime 之類的詳細信息,以及 Delete() 和 MoveTo() 等方法。您可以使用 Length 按大小篩選文件,或根據 LastWriteTime 識別最近修改的文件。

8.設定剪貼簿和取得剪貼簿

PowerShell 中的 Set-Clipboard 指令

如果您發現 PowerShell 輸出內容繁多,則需要複製,手動選擇可能會很麻煩。但是,Set-ClipboardGet-Clipboard可以大大簡化這個過程。

若要將指令結果複製到剪貼簿,請輸入:

Get-Process | Select-Object Name, CPU | Set-Clipboard

這樣,您可以輕鬆地將結果貼到 Excel 或任何文字編輯器中。相反,要將剪貼簿內容檢索回 PowerShell,只需執行:

$text = Get-Clipboard

此功能在處理清單時特別有用。例如,您可以從 Excel 複製一系列電腦名稱,然後執行:

Get-Clipboard | ForEach-Object { Test-NetConnection $_ }

此命令測試與列出的每個電腦名稱的連接。 PowerShell 與其他應用程式之間的無縫整合顯著加快了重複性任務的執行速度。

9.外網格視圖

PowerShell 中的 Out-GridView 指令

有時需要對結果進行互動式排序和篩選。 Out -GridView cmdlet 會開啟一個單獨的窗口,其中包含可排序和可搜尋的表格格式。

Get-Process | Out-GridView

此操作將啟動一個新窗口,顯示網格介面中目前進程的列表。點擊列標題進行排序,或在搜尋列中按關鍵字篩選。若要從網格中選擇項目並將其傳遞給其他命令,請使用:

Get-Service | Out-GridView -PassThru | Restart-Service

使用-PassThru參數,您可以選擇多行並執行操作,例如僅重新啟動那些選定的服務。

對於日誌分析,您還可以應用:

Get-EventLog -LogName Application -Newest 1000 | Out-GridView

這允許透過關鍵字輸入快速過濾事件、按時間排序並顯示資料集內的模式。

10.獲取進程

Get-Process explorer PowerShell 指令

Get -Process cmdlet 顯示電腦上目前正在運行的所有應用程序,並提供有關其記憶體使用情況、CPU 時間和進程 ID 的見解。

若要列出所有目前活動的進程,請執行:

Get-Process

如果您要搜尋特定的應用程式(例如 Google Chrome),只需指定:

Get-Process chrome

如果需要終止無回應的程序,可以如下連結命令:

Get-Process notepad | Stop-Process

若要識別消耗大量記憶體資源的進程,請執行:

Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 10

當您的系統效能下降時,此命令會提供佔用大量記憶體的程式的快速概覽。

來源和圖片

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *