Category: powershell

先前踩過幾次雷,今天才搞懂是怎麼回事。 PowerShell 內建的 ConvertFrom-Json 及 ConvertTo-Json Cmdlet 可用來做 JSON 反序列化及序列化,串接 Pipeline 使用很方便,但有個問題 - 遇過好幾次狀況是在開發環境寫好 PowerShell 轉檔...

呼叫 PowerShell 模組函式或跑 .ps1 程式難免會遇到程式跑完但結果不如預期的狀況,要找出哪裡出錯,加 Log 是最直接有效的做法。而 PowerShell 有一件好用武器,允許事先在程式偷偷埋入偵錯資訊,平時不顯示,使用者遇到問題時可打開開關再跑一次,就能藉由顯示的偵錯訊息推測發生什麼...

每次接觸新語言、新工具或新平台,在正式投入生產前,我習慣先做好幾件事:確立專案通用框架並研究如何讓「修改程式 -> 編譯 -> 部署 -> 測試 -> 修改程式 -> ...」開發循環最佳化,消除無意義的重複手工,讓思緒專中在程式碼本身,才有機會進入神馳模式,充分享受 ...

專案遇到為 Excel (.xlsx) 設定讀取密碼的需求。OpenXML SDK 提供的工作表保護功能,只僅限於防止內容被修改,無法做到輸入密碼才能開啟。有不少 Excel 商業元件可以彌補這個缺口,授權費用約三五百塊美金,並不算貴。但由於其他的需求我用 ClosedXML 或 OpenXML S...

前幾天介紹如何把發展成熟的 PowerShell 小工具(.ps1) 發佈到私有 Repository 與其他成員共享,Install-Script 安裝到電腦環境,以後不必每次複製 .ps1,像內建 Cmdlet 一樣輸入 Script 名稱(不需加 .ps1,還有自動完)就能在電腦的任何角落執行...

PowerShell 在工作環境應用日益廣泛,陸續寫了不少小工具。初期我會把工具 .ps1 複製一份作為每次作業的附屬檔案,發現問題就改進,歷經幾次改版逐漸成熟,後來變成每次都複製同一版 .ps1,代表時候到了, 可以開放其他團隊成員安裝到電腦共用,比照 PowerShell 內建指令,不用每次附上...

同事在 Windows 10 高高興興寫了壓縮檔案的 PowerShell 小工具,丟上伺服器執行時踢到鐵板。 PowerShell 有個 Compress-Archive Cmdlet 可壓縮 ZIP 檔,甚至能串接 PowerShell 輸出管線,例如:Get-ChildItem -Path C...

SharePoint 2016 文件庫提供線上編輯或以桌面版 Word/Excel 開啟兩種選項。線上編輯可直接用瀏覽器編輯較方便且支援多人共同修改,但功能及操作流暢度遠不及桌面版,因此要做粗活兒大家多半還是會開本機的 Word/Excel 作業,反正改完會自動儲存同步回伺服器端也很方便。 用本機 ...

之前研究 PowerShell 中文編碼問題有個結論 - Windows 10 內建 PowerShell 5.1,在中文版 Windows 預設用 BIG5 編碼,PowerShell 6.0 之後會預設改用 UTF8。因此我一直以為 .\Do-Something.ps1 > output....

Word 有個保護文件功能,可限定只有特定欄位可以編輯,其餘部分唯讀,很適合設計表單供使用者填寫。參考:學會 Word 限制編輯與 Excel 保護工作表,給人填寫表單不出錯 by 電腦玩物 例如以下文件,就只有黃色部分可以填寫:(有人想要這張獎狀嗎?本站的小額捐款帳戶是... ) 但要注意,這種...

跟同事聊到一個需求,異動 Windows 資料夾權限前希望能保留整個資料夾(含子目錄)的原有權限設定,作為異動前後對照或萬一操作失誤的還原參考。 基本上就是記錄檔案總管資料夾內容的安全性頁籤,將各群組或使用者名稱及其對映的完全控制、修改、讀取和執行... 等權限儲存下來,但要用程式完成: 按慣例,...

如果你跟我一樣,看完資安鬼故事開始神經兮兮兼被害妄想,三不五時懷疑「該不會有人從網路偷連我的個人電腦還渾然不知?」,這篇文章分享的小工具應該能幫助你減輕憂慮。 確認有沒有人從網路登入 Windows 的簡單方法是查詢事件檢視器的安全性事件,事件識別碼 4624 是登入成功記錄、4625 是登入失敗,...

分享最近的學會的 PowerShell 技巧兩則。 第一個是如何為 ps1 腳本加上啟用特定功能的開關。我以前比較笨,都是另設字串參數預設為 N,要啟用就傳入 Y,例如:-IncludeSubFolder Y。但 PowerShell 有較優雅的做法 - 沒給參數代表不啟用,附加參數則是啟用,以 G...

分享最近學到的 PowerShell 小技巧。 假設我有個接受多個參數的函式,有三種參數寫法。第一種是寫成 FuncName Arg1 Arg2 Arg3... 依序列出,中間以空白間隔(注意:不要加 ( ) 及 ,,參考:函式多參數寫法陷阱);第二種則是參數值前方加上名稱,如此可不依順序,如:Fu...