顯示具有 Windows 標籤的文章。 顯示所有文章
顯示具有 Windows 標籤的文章。 顯示所有文章

為NGINX for Windows設定HTTPS的SSL/TLS憑證

為NGINX for Windows設定HTTPS的SSL/TLS憑證

故事是這樣,我們需要為NGINX(for Windows)服務加上 HTTPS 的 SSL/TLS 憑證。公司提供的是 .pfx 檔(PFX容器形式的憑證,PKCS#12格式),通常在 Windows Server/IIS Server 上使用沒什麼難度,一、匯入 .pfx 到 Windows Server;二、到 IIS Server 設定匯入 SSL/TLS 憑證。後來研究發現,NGINX 無法直接使用 .pfx 檔來設定,也是說需要轉換格式後才能提供 Linux Based 的應用程式來使用。

解決Windows 11 24H2使用RDP連線破圖問題

解決Windows 11 24H2使用RDP連線破圖問題

公司筆電升級至 Windows 11 24H2 之後,目前碰到較大的問題是,在使用RDP連線至伺服器時會破圖。

RoyalTS MicrosoftRDP Graphics correctly

簡單二個指令,使用PoewrShell來擴充磁碟區

簡單二個指令,使用PoewrShell來擴充磁碟區

在容器主機(Container Host)中,還蠻有機會碰到 Disk 容量不足的情況。通常會先請 Infra 同事做擴充,因為我們習慣用 Server Core,因此需要用指令來去進行擴充磁碟區的動作。

一般,大多會找到或教你用 diskpart 來進行操作。雖然有大量範例可查,但 diskpark 有點繁瑣,而且用了多次,也沒記起來過,每次都要重找,而要小心的下 diskpark 指令。

想說,官方 PowerShell 不知道有無支援那麼底層操作指令。查了一下,還真得有。

參考:使用 PowerShell 擴充磁片區

# Variable specifies the disk drive to extend
$drive_letter = "D"

# Script gets the partition sizes, and resizes the volume
$size = (Get-PartitionSupportedSize -DriveLetter $drive_letter)
Resize-Partition -DriveLetter $drive_letter -Size $size.SizeMax

去除第一行參數指令不算的話,兩個指令就能完成擴充磁碟區。簡單,好用,不管什麼 PowerShell,都給我來一份。

啟動MS SQL容器發生Ports are not available錯誤

啟動MS SQL容器發生Ports are not available錯誤

今天要測個MS SQL的東西時,啟動MS SQL容器時發生Ports are not available錯誤。

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" -p 1433:1433 --name sql1 --hostname sql1 -d mcr.microsoft.com/mssql/server:2022-latest
c71dce344559b7e9188144b69329bdeca50e85984742d0c97ea73d3b1a40c5cf
docker: Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:1433 -> 0.0.0.0:0: listen tcp 0.0.0.0:1433: bind: An attempt was made to access a socket in a way forbidden by its access permissions.

如何讓Windows Server 2022使用含帳密的Proxy上網

如何讓Windows Server 2022使用含帳密的Proxy上網

由於公司環境的關係,此部落格上有許多關於 Proxy 的討論。對,這篇也是。簡單來說,假設我們一台 Proxy,這台 Proxy 採用帳密認證後才能使用。如果查詢相關資料,大致可以看到一般會透過以下格式來連線設定:

http://username:password@IP:Port/

使用Robocopy.exe成為檔案備份大師

使用Robocopy.exe成為檔案備份大師

Robocopy 是 Robust File Copy for Windows 的簡稱。它是一支 Windows 系統內建檔案複製、同步、搬移指令,它利用多執行緒來提高複製效能,但在高效的背後資源使用率確出奇的低。另一重點是,它提供了非常多元參數,讓管理者能非常靈活的組合出想要所需複製的檔案與行為,複製、同步、差異、鏡像都不是問題,排程、監視也有內建功能,功能之強大,我覺得完全不輸商用軟體,更重要的它是 Windows 內建也就沒有商用授權問題。但官方說明文件會讓你不知如何下手,此篇讓我們用大量範例來說明每個參數用法,教大家成為備份大師。

NET開發人員安裝軟體新選擇,使用winget

NET開發人員安裝軟體新選擇,使用winget

同事入手新設備,他知道我改用winget許久,說他也想改用winget來安裝軟體。之前新設備有將清單整理下來,就順手提供。以下是我的winget軟體安裝清單。我本身是開發人員,因此,軟體的選擇上會偏重開發人員。在此可以先提供一小技巧,可以完整取得winget上的軟體清單。

winget search --query "" | Out-File AllWingetList.txt

手動調整Windows的TLS設定

手動調整Windows的TLS設定

Windows-web-servers-should-be-configured-to-use-secure-communication-protocols

在Azure VM上有個高風險警告,原本以為用之前「停用不安全的TLS版本」的IISCrypto工具處理即可,以下借用黑大的PowerShell取得IISCrypto套用的結果。

PS D:\> Get-ChildItem -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers'


    Hive: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers


Name                           Property
----                           --------
AES 128/128                    Enabled : 4294967295
AES 256/256                    Enabled : 4294967295
DES 56/56                      Enabled : 0
NULL                           Enabled : 0
RC2 128/128                    Enabled : 0
RC2 40/128                     Enabled : 0
RC2 56/128                     Enabled : 0
RC4 128/128                    Enabled : 0
RC4 40/128                     Enabled : 0
RC4 56/128                     Enabled : 0
RC4 64/128                     Enabled : 0
Triple DES 168                 Enabled : 4294967295


PS D:\> Get-ChildItem -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\' -Recurse |
>> ForEach-Object {
>>     $p = Get-ItemProperty -Path $_.PSPath
>>     if ('Enabled' -in $p.PSObject.Properties.Name) {
>>         $_.PSPath.Split(':')[2]
>>         "Enabled = $($p.Enabled)"
>>     }
>> }
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\Multi-Protocol Unified Hello\Client
Enabled = 0
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\Multi-Protocol Unified Hello\Server
Enabled = 0
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\PCT 1.0\Client
Enabled = 0
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\PCT 1.0\Server
Enabled = 0
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client
Enabled = 0
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Server
Enabled = 0
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client
Enabled = 0
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Server
Enabled = 0
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client
Enabled = 4294967295
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server
Enabled = 4294967295
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Client
Enabled = 4294967295
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.1\Server
Enabled = 4294967295
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client
Enabled = 4294967295
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server
Enabled = 4294967295

但沒想到前後調了幾天都沒讓它Pass,最後全部自己手動調整機碼才完成。(時間有點長是因為,調整完要等Azure去重新掃描,好像12小時才一次,因此一天調一次。)

TLS調整這部分的資訊蠻零散,修改前記得相關主題裡的注意事項要看一下,不然修改後出事,我可不負責哦。

Import-Module之「Missing argument in parameter list」鬼打牆筆記

Import-Module之「Missing argument in parameter list」鬼打牆筆記

故事是這樣的,我在PowerShell Core環境下開發了一個PowerShell Module。但不是每一台Windows Server都有PowerShell Core的執行環境,當部屬至Windows Server的PowerShell時才發現某些主機怪怪的。

此Module在我Windows 11開發機裡的PowerShell或PowerShell Core都有先測試過都,都能正常執行。

Import Module Success
Import Module Fail

兩台不同的Windows Server 2019主機上,PowerShell的Import-Module一台正常,一台不正常。而且在特定同事的開發機上也有類似的情況,也會出現匯入錯誤的情況。

停用不安全的TLS版本

如何在Windows用tar格式進行多檔案打包

如何在Windows用tar格式進行多檔案打包

最近購入新的個人工作機(Surface Pro 9),在轉移資料與應用程式方面採用了幾個不同的方式,覺得又發現一條的路徑,以下整理一些採用的作法給大家參考看看。

資料轉移方面,Windows+OneDrive是最佳組合。新主機登入完Microsoft帳號之後,等待一些同步時間之後,資料就同步完畢,完全無腦,這就不再多說。

Task Schduler for real-time mail notify

Task Schduler for real-time mail notify

Biztalk-Error-EventLog

之前在Biztalk上的應用程式出錯的機會不大,可能也只有上線初期抓幾隻小蟲,而且內部應用程式本身也都有例外通知機制,一直運作的不錯。但最近上線的一支Biztalk應用程式,接收到的來源端B2B資訊不符合原先的需求規格,也就是說,一開始就被Biztalk擋下,根本就還沒進到應用程式之內,造成此筆錯誤的B2B資訊沒有被處理到,也因為沒進到應用程式之內,根本就不會觸發應用程式內的錯誤通知功能。也就是說,我們根本就不知有此錯誤,造成處理上的時差。

Redis Master-Slave-Sentinel for Windows Container

Redis Master-Slave-Sentinel for Windows Container

Master-Slave-Sentinel 本機測試

我們先在本機進行 Redis for Windows 的 Master-Slave-Sentinel 架構測試。由於微軟官方已經不再繼續維護 Redis for Windows,目前還有一位 tporadowski fork 後持繼在更新與維護。讓我們謝謝他。

在Windows 10 v1809之後安裝RSAT工具的改變

在 Windows 10 1809 之後安裝 RSAT 工具的改變

安裝 PowerShell - Active Directory Module 解決 AD 大小事 裡有介紹 Windows 10 如何安裝 RSAT 工具,以取得 Windows 10 的 PowerShell - Active Directory Module 的功能,不過,按照原始連結你會發現,只取能得 Windows 10 1709、1803 版本安裝檔,在新的筆電 Windows 10 v1903 上,下載的安裝檔都無法使用,找了一會兒在「安裝需知」才看到:

Starting with Windows 10 October 2018 Update, RSAT is included as a set of "Features on Demand" right from Windows 10. Do not download an RSAT package from this page. Instead, just go to "Manage optional features" in Settings and click "Add a feature" to see the list of available RSAT tools. Select and install the specific RSAT tools you need. To see installation progress, click the Back button to view status on the "Manage optional features" page

原來 RSAT 工具在 Windows 10 1809 之後的安裝有所改變。文件可參考:Available Features on Demand

以iisreset.exe與appcmd.exe管理Windows IIS Container

以 iisreset.exe 與 appcmd.exe 管理 Windows IIS Container

當我們採用含 IIS 功能的 Windows Container 後(例如,Windows IISASP.NET等),有時需要查詢或操作 IIS,未經組態的 IIS 容器並無法直接使用如 IIS 管理員等 GUI 工具來連線管理。還是可以透過內建 iisreset.exe 與 appcmd.exe 來進行查詢與管理。

修復消失的效能計數器(performance counter)

修復消失的效能計數器(performance counter)

某一批新 VM 主機在安裝了 Microsoft Monitoring Agent(MMA)之後,出現奇怪的現像,在 Log Analytics 裡,除了 Perf (效能計數器) 項目,其他查詢都很正常。本來方向一直在 MMA 打轉,查了許久,終於找出原因:

Get-Counter -ListSet * | Sort-Object -Property CounterSetName | Format-Table -AutoSize
Get-Counter -ListSet * | Where-Object -FilterScript {$_.CounterSetName -eq "Process" -or $_.CounterSetName -eq "Memory" -or $_.CounterSetName -eq "LogicalDisk"}
powershell get-counter result

SQL Server Windows Container之Windows Server 2019 v1809, v1903版

SQL Server Windows Container之Windows Server 2019 v1809, v1903版

因為教學與工作上的需求,經常使用到 Northwind 資料庫,但重覆性的建立工作,實在浪費不少時間。在容器化時代,當然用容器來解決這種工作內容最合適不過了。

製作Windows Container映像檔注意事項

製作Windows Container映像檔注意事項

由於專案需求多變,有時需要自行建置客製化 Windows 基礎映像檔(Base Image)來使用,就在是在微軟官方的基礎映像檔之上去安裝軟體、設定環境等,像之前的文章:WINDOWS CONTAINER之.NET CORE找不到GDIPLUS.DLL解決方案為例,我們就把 ASP.NET Core Runtime 安裝至 Server Core 基礎映像檔,微軟官方應用程式的映像檔除非特別理由,不然通常最終都會以 Nano Server 為基礎映像檔來提供。

如何快速釋放Windows Server Core記憶體!

如何快速釋放Windows Server Core記憶體!

一個有趣的Case。我們需要收集與分析機台日誌,一天資料量(Size)不大,約200 ~ 300MB,但資料量(Folders/Files)很多,目前觀測到每日約有60 ~ 70萬筆,而且還會不斷成長。資料夾與檔案數約1:2,也就是,如果當天資料夾10萬個那就有20萬筆檔案。我們需要定時去主機A把日誌同步至主機B去進行程式分析與處理,因為不是所有檔案都是我們需要的,在複製的過程會進行一些過濾動作,所以選擇下面三套來測試,但發現一個好玩的現像,主機B常常沒有多久就記憶體滿載(Memory 99%~)的情況,目前測試過:

  1. xcopy.exe
  2. robocopy.exe
  3. freefilesync.exe

Docker容器與Windows保留埠

Docker容器與Windows保留埠

事件回顧:「同事反應,Docker 某個 Container 重新部署後,一直無法正常存取。而這群 Production Docker Host 我才剛剛在前一個週未進行 Docker Engine 升級與安裝作業系統 Service Pack 的維護。」

Container for 64255 port