The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

如何透過 PowerShell 快速建立 Hyper-V 伺服器中的虛擬機器

我現在已經很少在公司內部部署測試機的 VM 了,我通常都直接在 Azure 上面部署測試機,用完就砍掉,透過 Azure CLI 基本上兩分鐘就可以搞定一台,非常方便。不過,我們有個專案的測試機所需的負載比較大,開在雲端比較燒錢,所以還是在內部部署比較划算,但設定的步驟都快忘光了。這篇文章我打算記錄一下這個過程,提供日後參考之用。

... 繼續閱讀 ...

如何透過 Azure Portal 快速調整 Windows 虛擬機器的 RDP 預設連接埠

每次在 Azure 建立完 Windows 虛擬機器之後,預設通常會開啟 RDP (遠端桌面連線) 通訊協定所需的 Port 3389,這樣我們才能方便的在建立完 VM 後立刻連進主機。但你知道嗎?你只要在 VM 建立完成後的幾個小時後,就會有數千至數萬條連線嘗試用管理者帳戶登入你的主機,我真的不誇張。還好在 Azure 建立的 VM,預設帳號不能使用 administrator 這個名稱,所以風險可以說稍微小一點,但其實最好的解決方案,應該是立刻設定 NSG 網路安全性規則,或是立刻變更 RDP 預設連接埠。這篇文章我將說明變更 RDP 預設連接埠的簡易作法。

... 繼續閱讀 ...

PowerShell 如何判斷 Cmdlet 或 Function 回傳資料的筆數 (0, 1, >1)

老實說,我在寫 PowerShell 的時候,偶爾會遇到一些非常葩的設計,很多時候不深入探究,根本就無法理解。以我今天要寫的這篇文章為例,當你執行一個 Cmdlet 並回傳資料時,當你可能拿到 0 筆、1 筆、超過 1 筆的情況時,正常人應該會覺得我們應該會得到一個「陣列」,但是你知道嗎,在 PowerShell 竟然可能會用到三種不同的處理方式,超怪的。因為這個問題實在遇到太多次了,這次我終於有空寫成文章,希望可以給遇到相同問題的人一些指引。

... 繼續閱讀 ...

如何批次取消 Azure Pipelines 中所有排隊中的 Runs 或 Builds

昨天我建立了一個有 18 個 Repos 的專案,在批次設定的過程,我肯定要用 Azure Pipelines 的 YAML syntax 來撰寫,否則用傳統編輯器設定,肯定按到手酸。不過,在撰寫的過程中,有一次不小心寫壞了,導致一次 18 個 CI 同時啟動,但我只有四條 Pipelines 可用,一想到要等全部跑完才能測試下一輪,就覺得我應該要寫支小程式批次取消。因此這篇文章就是為此而生,讓你快速的取消所有尚未啟動的 Pipelines 作業。

... 繼續閱讀 ...

使用 appsecret_proof 增強從伺服器呼叫 Facebook Graph API 的安全性

我上周在 精通 OAuth 2.0 授權框架 課堂上示範 Facebook 的 OAuth 2.0 如何進行實作,結果過程中不小心啟用一個進階設定中的需要應用程式密鑰(Require app secret)選項,結果導致我在拿到 Access Token 之後竟然無法成功呼叫任何 Graph API。在我詳細研究之後,發現這個選項確實可以很好的增強 Access Token 使用的安全性,這篇文章我將來說明這個選項的來龍去脈,讓大家知道這個選項的確切用法。

... 繼續閱讀 ...

使用 Azure CLI 快速建立 Azure 虛擬機器 (Virtual machines)

有時候我們想要在 Azure 很快速的建立一台 VM (虛擬機器) 來用,除了透過 Azure Portal 之外,我想最快速的方式,不外乎是透過 Azure CLI 命令列工具了,只要把之前筆記的 CLI 命令找出來,複製貼上就馬上有一台 VM 可以用。這篇文章我打算分享幾個我之前整理的 Azure CLI 筆記,幫助我日後可以更快速的找到命令。

... 繼續閱讀 ...

如何使用 OpenSSL 工具產製 CSR 憑證要求檔並成功申請正式 TLS 憑證

我們公司有經銷代理 TWCA 網站伺服器憑證,每隔一段時間都會有一些死忠的客戶跟我們定期續約購買,但這個過程很多人沒有經驗,經常搞不清楚該如何申請。如果你是開發人員,透過 mkcert 建立自簽憑證完全沒有難度,但是若要申請一個正式憑證就不是很多人能清楚步驟了。這篇文章我打算來解說一個完整的憑證申請流程,讓每個人都可以輕鬆掌握。

... 繼續閱讀 ...

如何讓 System.Text.Json 支援 Dynamic 型別的序列化/反序列化

我最近因為支援 Quicktype 開源專案,新增了 System.Text.Json (C#) 的程式碼產生器功能,因此更加理解 System.Text.JsonConverter 撰寫方式。在這之前,我其實我都還是偏好使用 Newtonsoft.Json (俗稱 Json.NET) 來進行 JSON 的序列化/反序列化工作,原因就在於 Json.NET 有很多「方便」又「豐富」的功能與特性在 System.Text.Json 都找不到,因此剛入門 System.Text.Json 的人一定會覺得綁手綁腳,很多原本能動的 Code 都不能 Run 了。今天這篇文章,我打算來分享如何讓 System.Text.Json 支援 dynamic 動態型別,讓你可以用「弱型別」的方式操作靈活的 JSON 資料。

... 繼續閱讀 ...