HOWTO · PowerShell

如何運行 PowerShell 腳本而不顯示窗口

這篇文章展示了一種使用隱藏作為窗口樣式運行 PowerShell 腳本而不顯示窗口的方法。

本頁內容

PowerShell 由微軟提供,是一種預設包含在 Windows 作業系統中的工具,為 Windows 使用者提供基於命令列介面和命令的自動化功能。

PowerShell 是一個腳本工具和自動化工具;因此有時需要在後台靜默執行應用程式。通過這篇文章,我們將了解如何在後台靜默執行 PowerShell 應用程式,並在後台執行命令。

有第三方工具可以與 PowerShell 工具結合,以實現 PowerShell 的隱藏功能。儘管如此,僅使用 PowerShell 就可以輕鬆達成這樣的目的。

使用 PowerShell 的 -WindowStyle Hidden 參數在不顯示窗口的情況下運行 PowerShell 腳本

隱藏腳本窗口的一個簡單方法是使用 hidden 類型作為窗口樣式。PowerShell 窗口會在腳本執行開始時暫時顯示,然後在執行過程中隱藏。

PowerShell 中的 -WindowStyle 參數允許你控制 PowerShell 窗口的外觀。應用 -WindowStyle Hidden 參數時,可確保在腳本執行過程中不顯示 PowerShell 窗口。

這對於需要無需用戶互動的自動化任務或當你不想打斷用戶的工作流程時特別有用。

使用 -WindowStyle Hidden 參數執行 PowerShell 腳本非常簡單。打開 PowerShell 窗口並使用以下命令:

PowerShell.exe -WindowStyle Hidden { Script you want to execute.. }

以下是這個命令的每個部分的功能:

  • PowerShell.exe: 啟動一個新的 PowerShell 進程。
  • -WindowStyle Hidden: 將窗口樣式設置為隱藏,防止顯示 PowerShell 窗口。
  • 你想要執行的腳本被包含在大括號 {} 中。

上述命令的 PowerShell 執行顯示在下面的圖像中。

PowerShell 執行

輸入後,窗口會消失,但應用程序仍會在後台運行。如下圖所示的後台進程,PowerShell 以後台進程運行。

背景程序

在這種方法中,用戶最初會看到 PowerShell。因此它並不真正對最終用戶隱藏。即使任務先前已被排定,窗口也會彈出並迅速隱藏。

使用批處理文件

如果你在處理更複雜的腳本或計畫多次運行它,這種方法(帶有 PowerShell 命令的批處理文件)可能會更有組織且高效。

創建一個批處理文件(例如,run_script.bat)並包含以下內容:

@echo off
powershell -WindowStyle Hidden -File "C:\path\to\script.ps1"
  • @echo off: 此命令防止批處理文件在控制台窗口中顯示其命令。
  • powershell -WindowStyle Hidden -File "C:\path\to\script.ps1": 此行調用 PowerShell,並帶上必要的參數及腳本的路徑。

以上兩個代碼對達成無窗口顯示地運行 PowerShell 腳本有相同的目標,但它們使用了略微不同的方法。然而,還有其他簡單的方法可以實現 PowerShell 的真正隱藏功能。

使用任務計劃程序在不顯示窗口的情況下運行 PowerShell 腳本

任務計劃程序是 Windows 的一個工具,可讓你在特定時間或事件上自動執行任務。它提供了廣泛的自定義選項,是管理計算機上各種任務的多功能工具。

創建新任務

  1. 打開任務計劃程序:你可以通過在 Windows 開始菜單中搜索「任務計劃程序」來做到這一點。
  2. 瀏覽到「操作」:在右側窗格中點擊「創建任務」。

配置任務

  1. 命名任務:為你的任務提供名稱和描述。這應該是一些描述性的,以反映任務的功能。
  2. 選擇任務觸發器:選擇你希望如何觸發任務。選項包括每日、每周、每月、登錄時等等。選擇最符合你需求的觸發器。

設置觸發器

  1. 選擇觸發器詳細信息:根據選擇的觸發器,你將需要提供其他詳細信息。例如,如果選擇「每日」,你將具體說明時間和頻率。
  2. 高級設置:你可以通過點擊「高級設置」來設置更多高級選項。這可以讓你進一步自定義任務的運行時間和頻率。

指定操作

  1. 選擇操作:在「操作」步驟中,選擇「新建」>「啟動程序」,因為我們將運行 PowerShell 腳本。
  2. 程序/腳本:在系統中瀏覽並選擇 powershell.exe。
  3. 添加參數(可選):輸入以下內容:
-WindowStyle Hidden -File "C:\path\to\script.ps1"

將「C:\path\to\your\script.ps1」替換為你 PowerShell 腳本的實際路徑。

開始一個程式

啟用安全選項

勾選「以最高權限運行」的框。這確保在需要時腳本會以管理員權限運行。

你還可以勾選「任務運行時不顯示用戶登錄」,這樣當任務運行時將永遠不顯示 PowerShell 窗口。

任務排程器

完成並測試任務

檢查任務的摘要,然後點擊「確定」來創建它。

你可以通過在任務計劃程序中右鍵單擊它並選擇「運行」來測試該任務。這將根據你設置的觸發器立即執行任務。

任務計劃程序允許你在特定的間隔或事件上自動執行任務。通過使用它觸發 PowerShell 並提供適當的參數,你可以靜默地運行腳本。

然而,這種方法可能會影響你嘗試使用的一些腳本的功能。因此,你也可以使用第三方工具或社區擴展來支持 PowerShell。

使用第三方工具在不顯示窗口的情況下運行 PowerShell 腳本

第三方工具擴展了 PowerShell 的功能,提供額外的功能和特性。在需要在不顯示窗口的情況下運行 PowerShell 腳本時,這些工具在自動化任務中發揮著至關重要的作用。

使用 PSExec

PSExec 是來自 Sysinternals(現在是微軟的一部分)的一個多功能工具,允許你遠程執行進程。它可以用來靜默運行 PowerShell 腳本。

psexec -d -s powershell -WindowStyle Hidden -File "C:\path\to\script.ps1"
  • psexec: 啟動 PSExec。
  • -d: 指示 PSExec 不要等待命令完成。
  • -s: 以系統權限運行命令。
  • powershell -WindowStyle Hidden -File "C:\path\to\script.ps1": 靜默執行 PowerShell 腳本。

使用 NSSM(非吸垃圾服務管理器)

NSSM 是一個 Windows 服務管理器,允許你將任何應用程序作為服務運行。這對於靜默地在後台運行腳本特別有用。

  1. 從官方網站下載並安裝 NSSM。
  2. 打開具有管理員權限的命令提示符。
  3. 執行以下命令以創建新服務:
nssm install <ServiceName> "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" "-NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:\path\to\script.ps1"
  • nssm install <ServiceName>: 使用指定的名稱安裝新服務。
  • "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe": 指定 PowerShell 可執行文件的路徑。
  • "-NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:\path\to\script.ps1": 傳遞參數給 PowerShell,指示其靜默運行腳本。

結論

PowerShell 是一個強大的 Windows 使用者自動化工具,提供廣泛的命令行功能。在需要靜默背景執行的情境中,有幾種方法可供選擇。

  • 使用 -WindowStyle Hidden 參數:這允許在隱藏腳本執行過程中短暫顯示 PowerShell 窗口。適合需要無用戶互動的自動化任務。
  • 批處理文件:為執行複雜或重複的腳本而組織良好。批處理文件調用 PowerShell 並提供必要的參數。
  • 任務計劃程序:提供在特定時間或事件上自動化的功能。通過配置以運行 PowerShell 並使用正確的參數,腳本可以被靜默執行。
  • 第三方工具(例如 PSExec、NSSM):擴展 PowerShell 的功能,使無窗口的腳本執行成為可能。

選擇最符合你具體需求和工作流程的方法。