8個 PowerShell 操作 Windows、文件、網頁的例子

Chris K.Y. Fung
數碼文明推廣教室
10 min readMar 20, 2024

--

  1. 查詢 Windows 環境變數列表,快速找到所需資訊
  2. 瞭解磁碟機健康狀況,保持電腦運作順暢。
  3. 搜尋檔案中特定文字,輕鬆找到需要的資料。
  4. 解讀 Markdown 檔案,輕鬆閱讀文件內容。
  5. 使用瀏覽器開啟指定網址,快速進入目標網站。
  6. 解析指定 URL 的網頁標題,摘取網頁資訊。
  7. 檢查網址是否失效,確保連結正常運作。
  8. 使用 Windows 10 內建 OCR 引擎,輕鬆提取圖片文字。

1. 查詢 Windows 環境變數列表

Microsoft Windows Logo

您可以使用以下命令在 PowerShell 中列出所有環境變數:

Get-Childitem -Path Env: | Sort-Object Name

這個指令將列出所有環境變數及其值。

範例結果:部分 Windows 系統中的環境變數

2. 瞭解磁碟機健康狀況

硬碟機的剪貼畫

你可以使用 PowerShell 的 Get-DiskStorageReliabilityCounter cmdlet 取得磁碟機健康情況的資訊。

#Requires -RunAsAdministrator

Get-Disk | ForEach-Object {
($Disk = $_) | Get-StorageReliabilityCounter |
Select-Object DeviceId,
@{
Name="FriendlyName";
Expression={$Disk.FriendlyName}
},
Temperature,
ReadErrorsUncorrected,
Wear,
PowerOnHours
} | Format-Table

📌 請注意,這個腳本須要以系統管理員身份執行,才能夠存取到作業系統的硬件資訊,然後列出所有磁碟機的溫度、錯誤、磨損以及設備使用時間長度。

範例結果:在我的電腦中,三台 SSD 硬盤的健康情況

3. 搜尋所有包含特定文字的檔案

文件搜索的剪貼畫

以下是一個簡單的範例,使用 PowerShell 的 Select-String cmdlet 從某個文件夾(包括子文件夾)中,尋找含有特定字串的文件:

$path  = [Environment]::GetFolderPath("MyDocuments")
$query = "須要搜尋的字串"
Get-ChildItem -Path $path -Recurse -File | Select-String -Pattern $query -List | Select-Object Path

在以上的腳本中,使用了 $path 變數來指定文件夾的路徑,和 $query 變數來提供須要搜尋的字串。修改好上述變數的值,然後執行腳本,就會搜尋符合條件的文件,並在終端機上列出它們的檔案路徑。

4. 解讀 Markdown 文件內容

Markdown 圖示

你可以使用 PowerShell 的 Show-Markdown cmdlet 將 Markdown 文件轉譯為 RTL 或 HTML 格式,讓你在終端機或瀏覽器中檢視:

Get-Content .\README.md | Show-Markdown
Get-Content .\README.md | Show-Markdown -UseBrowser

這個腳本會讀取當前目錄下的 README.md 檔案,前者會在終端機而後者會在瀏覽器中,顯示轉譯後的 Markdown 內容。

📌 請注意 Show-Markdown cmdlet 需在 PowerShell 6.1 或以上才能使用。你可以使用 Get-Host | Select-Object Version 查詢當前主機的 PowerShell 版本編號。

5. 使用瀏覽器開啟指定網址

瀏覽器的網址列

你可以使用 PowerShell 的 Start-Process cmdlet 來開啟瀏覽器,例如:

  • Google Chrome 瀏覽器
Start-Process -FilePath "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" -ArgumentList "https://www.medium.com"
  • Microsoft Edge 瀏覽器
Start-Process -FilePath "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" -ArgumentList "https://www.medium.com"
  • Mozilla Firefox 瀏覽器
Start-Process -FilePath "C:\Program Files\Mozilla Firefox\firefox.exe" -ArgumentList "https://www.medium.com"

執行這些指令會在上述的瀏覽器中,打開 Medium.com 的主頁。

你可以修改提供給 -ArgumentList 參數的 URL,將 https://www.medium.com 替代為你想要的網址。又或者,可以發揮一下你的創意,編寫一個小程式利用變數提供 URL,將在文件中讀取到的全部網址,透過 for-loop 迴圈批次地在瀏覽器上打開網頁。

6. 解析指定 URL 的網頁標題

HTML 馬賽克

你可以使用 PowerShell 的 Invoke-WebRequest cmdlet 來下載 HTML 頁面,並使用 Select-Object cmdlet 來分析 HTML 元素:

$url = "https://medium.com/"
$webpage = Invoke-WebRequest -Uri $url -UseBasicParsing
$webpage.ParsedHtml.getElementsByTagName("title") | Select-Object -ExpandProperty innerText

這個腳本會下載指定 URL 的 HTML 頁面,然後列出網頁的標題。

7. 檢查網址是否失效

連接斷開的圖示

您可以使用 PowerShell 的 Invoke-WebRequest cmdlet 來測試 URL 並檢查它們是否失效。以下是一個簡單的範例:

$urls = @("https://www.google.com", "https://www.bing.com", "https://www.yahoo.com", "https://www.example.com")
foreach ($url in $urls) {
try {
$response = Invoke-WebRequest -Uri $url -UseBasicParsing
if ($response.StatusCode -eq 200) {
Write-Host "$url is up and running"
}
else {
Write-Host "$url is not responding"
}
}
catch {
Write-Host "$url is not responding"
}
}
https://www.google.com is up and running
https://www.bing.com is up and running
https://www.yahoo.com is up and running
https://www.example.com is not responding
範例結果:表示成功訪問 Google、Bing 和 Yahoo 的網站,而 example.com 不存在

8. 使用 Windows 10 內建 OCR 引擎提取圖片文字

此圖像由 AI 於 2024 年 3 月 20 日生成

Windows 10 內建了一個文字辨識(OCR)引擎,可以讓您在不安裝任何其他軟體的情況下,利用這項技術來處理圖片。例如,您可以使用 OCR 引擎來:

  • 從掃描的文件或照片中提取文字,以便進行編輯、複製或轉換格式。
  • 從截圖或網頁中提取文字,以便進行搜索、翻譯或分享。
  • 從名片或海報中提取聯絡資訊,以便儲存到通訊錄或日曆。
  • 從書籍或報紙中提取引文,以便進行引用或筆記。

首先,請使用以下命令安裝 PsOcr 模組

Install-Module -Name PsOcr -Scope CurrentUser

您可以使用以下命令檢查是否已安裝 PsOcr 模組:

Get-Module -ListAvailable -Name PsOcr

如果已安裝,則會顯示模組的詳細資訊 (如下)。

ModuleType Version    Name      ExportedCommands
---------- ------- ---- ----------------
Script 1.1.0 PsOcr Convert-PsoImageToText

如果你要移除安裝 PsOcr 模組,你可以使用以下 Uninstall-Module 命令:

Uninstall-Module -Name PsOcr

安裝好模組之後,即可使用 Convert-PsoImageToText 命令指定檔案路徑,執行 OCR 提取圖片中的文字。如下方的範例:

Convert-PsoImageToText -Path c:\some\file.png -Language zh-Hant-HK

通過附加 -Language 參數可設定目標語言,以提升 OCR 的準確度。在範例中,使用 zh-Hant-HK 代表繁體中文(香港),可修改為 zh-Hans-CN 以偵測簡體中文。如果是英文為主,則建議使用 en-US 作為語言設置。

如果你想了解更多,可以參考在 Medium 上由 Jung-Hyun Nam 發佈的 🔗 Using Windows 10 Built-in OCR With C# 一文。

好了,希望你們會用得著這些 PowerShell 的技巧。謝謝你們的閱讀,下次見!

如果您喜歡這篇文章,請為此文章 👏 👏 👏 👏 👏 👏 👏,並分享至你的 Facebook 及 Twitter。

了解更多 📚

以下是一些學習 PowerShell 的資源,希望對你有幫助:

--

--

Chris K.Y. Fung
數碼文明推廣教室

📝集中分享提升生產力、自動化至開發等技能📢📈 博客及開發人員,於香港理工大學MPhil畢業,並多年在大學從事學術研究,喜歡學習多元化知識和技術。歡迎訂閱・標註回應,共享交流啟發性話題🐱‍🏍 about.me/chriskyfungfb.com/chriskyfung 😪📘