Windows 開工前逐樣開 app 太嘥時間:PowerShell 一鍵執齊,安全位要先補好
3C 產品

Windows 開工前逐樣開 app 太嘥時間:PowerShell 一鍵執齊,安全位要先補好

圖片:via XDA Developers — https://www.xda-developers.com/i-automated-my-entire-morning-with-a-single-shell-script/
TechLab 編輯部(譯)·

一個 .ps1 排好 SSH、Chrome 同虛擬機,登入 Windows 後自動準備

一個 script 可以慳返幾多手腳?

XDA 作者用同一部 Windows 手提電腦處理工作同私人用途,每次開工都要開 Asana、Slack、Google Docs、自架服務 dashboard,再 SSH 入家中 server,同時啟動 VMware 入面嘅 Windows 測試機。佢最後寫咗一個 PowerShell .ps1 檔案,登入後按固定次序叫起呢堆工具。呢種做法最啱每日開同一批 app、網站同開發環境嗰類人,重點係步驟夠固定,改動又唔算頻密。

啟動次序排得唔好,好易一開機就亂晒

原文個 script 先開 PowerShell SSH session,預先填好用戶名同 IP,再等用家輸入密碼;隔 15 秒先開指定 Chrome 工作 profile 同一批網址,之後再等一分鐘,最後直接叫 VMware 開指定虛擬機。兩段 Start-Sleep 睇落幾土炮,不過解決到多個密碼提示同視窗一齊搶焦點嘅問題。一次過開晒所有嘢,視窗同密碼提示好易撞埋一齊,反而會間中失手。

實際寫法可以分成幾段:先用變數收好 Chrome、VMware 同虛擬機檔案路徑,再用 Start-Process 啟動程式,網址同 Chrome profile 放入 -ArgumentList,每段之間按需要停一停。路徑、profile 名稱、server 位址全部集中擺喺檔案頂部,日後換機或者改工作環境就唔使逐行搵。含空格嘅 Windows 路徑要特別處理引號,Microsoft 亦提醒 ArgumentList 最終會砌成一條字串,呢度最易寫錯。

唔好淨係靠等十幾秒

固定延遲只係第一版做法:Wi-Fi 慢咗、VPN 未連好,15 秒一樣唔夠;部機狀態好時,等足一分鐘又純粹嘥時間。穩陣少少可以先用 Test-Path 確認程式同虛擬機檔案真係存在,連 server 前亦先檢查網絡,再畀每一步一個合理 timeout。開頭設 $ErrorActionPreference = 'Stop',配合 trycatch 寫低時間、失敗步驟同錯誤訊息,出事時就唔會只見到一個閃完即走嘅黑色視窗。

仲有一個 PowerShell 常見伏位:SSH、vmrun 呢類外部程式回傳非零 exit code,預設未必會直接觸發 catch。要確認佢哋成功,可以等程式完結後檢查 $LASTEXITCODE;至於 Chrome 呢類長開 GUI app,就唔應該成份 script 停喺度等佢關閉。每一步究竟係「開咗就算」定「完成先繼續」,最好一開始分清楚。

開機自動跑,要揀啱觸發方式

原文用 Task Scheduler 嘅「At log on」觸發器,動作係執行 powershell.exe,參數寫成 -NoProfile -ExecutionPolicy Bypass -File "C:\Users\…\a.ps1"。因為 SSH 同 VMware 仲要用家輸入資料,任務應該設成登入後互動執行,唔好揀登出狀態照跑,亦冇理由勾最高權限。Windows 登入初段桌面同網絡未必準備好,Task Scheduler 本身支援延遲啟動,可以加少少延遲,等桌面同網絡準備好先跑。

密碼唔可以寫入檔案

原文只預填 SSH 用戶名同 IP,密碼仍然由用家輸入,呢條界線要守住。想減少 SSH 密碼提示,可以用設有 passphrase 嘅 key,再交畀 Windows ssh-agent 保管;唔好將 SSH、電郵、VMware 或公司 VPN 密碼直接寫入 .ps1。Microsoft 指 Execution Policy 只係避免誤跑 script,唔係真正安全邊界,所以亦唔建議為方便而永久將全機設成 Unrestricted。自己建立同確認過嘅 script,應優先限制喺而家用家或單次執行範圍,公司電腦就跟返 IT 政策。

呢招值唔值得做,睇你朝早有幾多固定步驟。得兩三個網站,用 Chrome 啟動頁已經夠;要連 server、開虛擬機再切工作 profile,PowerShell 配 Task Scheduler 就幾啱用。先手動跑幾日、睇清楚錯誤記錄,再開登入自動執行,會少好多一開機就唔知邊步壞咗嘅麻煩。


參考來源

本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。

分享:WhatsAppThreadsTelegramFacebook