# 分享我的 Windows Server 2022 裝機必備軟體與安裝筆記

由於 [Windows Server 2022](https://cloudblogs.microsoft.com/windowsserver/2021/09/01/windows-server-2022-now-generally-available-delivers-innovation-in-security-hybrid-and-containers/?WT.mc_id=DT-MVP-4015686) 已於 2021/9/1 正式推出，這篇文章我打算介紹我安裝一台測試機的所有過程，方便日後裝機時參考。

### 基本作業環境設定

以下我直接列出完整 PowerShell 命令，請以**系統管理員身份**執行：

```powershell
# 更改主機名稱並重開機 ( 假設要更名為 WILL2022SRV )
# Rename-Computer -NewName WILL2022SRV -LocalCredential Administrator -PassThru
# Restart-Computer

# 設定時區為台北標準時間 (Taipei Standard Time)
Set-TimeZone -Name "Taipei Standard Time"

# 關閉開機自動啟動伺服器管理員 (Server Manager)
Get-ScheduledTask -TaskName ServerManager | Disable-ScheduledTask -Verbose

# 調整 ExecutionPolicy 等級到 RemoteSigned
Set-ExecutionPolicy RemoteSigned -Force

# 建立 $PROFILE 所需的資料夾
[System.IO.Directory]::CreateDirectory([System.IO.Path]::GetDirectoryName($PROFILE))

# 設定 PowerShell 的 ProgressPreference, TLS 1.2 與 PSReadLine 快速鍵
# https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_preference_variables#progresspreference
@'
# 修正 PowerShell 關閉進度列提示
$ProgressPreference = 'SilentlyContinue'

# 使用 TLS 1.2 進行網路安全連線
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

# 設定按下 Ctrl+d 可以退出 PowerShell 執行環境
Set-PSReadlineKeyHandler -Chord ctrl+d -Function ViExit

# 設定按下 Ctrl+w 可以刪除一個單字
Set-PSReadlineKeyHandler -Chord ctrl+w -Function BackwardDeleteWord

# 設定按下 Ctrl+e 可以移動游標到最後面(End)
Set-PSReadlineKeyHandler -Chord ctrl+e -Function EndOfLine

# 設定按下 Ctrl+a 可以移動游標到最前面(Begin)
Set-PSReadlineKeyHandler -Chord ctrl+a -Function BeginningOfLine

# 移除內建的 curl 與 wget 命令別名
If (Test-Path Alias:curl) {Remove-Item Alias:curl}
If (Test-Path Alias:wget) {Remove-Item Alias:wget}
'@ | Out-File $PROFILE

# 安裝 Chocolatey 套件管理器 ( https://chocolatey.org/install )
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
```

### 變更系統語言設定並設定 zh-TW 為顯示語言

1.  調整語言設定
    
    請想想 Windows 難用的中文輸入法，將**預設語言**設定在「英文」才能讓你順利的按出 `Ctrl-.`, `Ctrl-,` 與 `Ctrl-Space` 等常用快速鍵！
    
    ```powershell
    $UserLanguageList = New-WinUserLanguageList -Language "en-US"
    $UserLanguageList.Add("zh-TW")
    Set-WinUserLanguageList -LanguageList $UserLanguageList -Force
    Set-WinUILanguageOverride -Language zh-TW
    ```
    
2.  手動下載繁體中文的輸入法
    
    由於我 Windows Server 2022 是安裝英文版，如果要加裝繁體中文，除了上一步的調整語言設定外，還要額外到控制台手動點擊**繁體中文**的 **Typings** (輸入法) 的「下載」按鈕，安裝之後才可以使用注音輸入法！
    

### 安裝常用應用程式

Windows Server 2022 已經預設內建 Internet Explorer 11 與 Microsoft Edge (`v92`) 瀏覽器，所以可以不用額外安裝 Google Chrome 了！

1.  安裝常用工具
    
    底下這段 `choco install` 命令將會自動安裝 [Cascadia Code](https://github.com/microsoft/cascadia-code) 字型、[Windows Terminal](https://github.com/microsoft/terminal)、[7-Zip](https://www.7-zip.org/)、[Notepad2](https://www.flos-freeware.ch/notepad2.html)、[Notepad++](https://notepad-plus-plus.org/)、[Git for Windows](http://www.git-scm.com/)、[TortoiseGit](https://tortoisegit.org/)、[WinMerge](https://winmerge.org/)、[PowerShell Core](https://github.com/PowerShell/PowerShell)、[Clink](https://mridgers.github.io/clink/)、[GNU utilities for Win32](http://unxutils.sourceforge.net/)、[Windows Sysinternals](https://learn.microsoft.com/en-us/sysinternals/?WT.mc_id=DT-MVP-4015686)、[GNU Wget](https://www.gnu.org/software/wget/)、[cURL](https://curl.se/)、[jq](https://stedolan.github.io/jq/)、[Visual Studio Code](https://code.visualstudio.com/)、[Node.js](https://nodejs.org/en/)、[Everything](https://www.voidtools.com/)，這幾套都是我覺得超級好用的必備裝機軟體！
    
    ```powershell
    choco install cascadiafonts microsoft-windows-terminal 7zip notepad2 notepadplusplus git tortoisegit winmerge powershell-core clink unxutils sysinternals wget curl jq vscode nodejs-lts everything -y
    ```
    
2.  調整 Windows Terminal 預設設定
    
    底下我只列出非預設的設定值：
    
    ```json
    {
        "copyOnSelect": true,
        "multiLinePasteWarning": false,
        "profiles":
        {
            "defaults":
            {
                "fontFace": "Cascadia Code PL"
            }
        }
    }
    ```
    
3.  調整 PowerShell 命令提示格式
    
    ```powershell
    # 設定 oh-my-posh 與 posh-git 命令列執行環境
    Install-Module posh-git -Scope CurrentUser -Confirm:$false -Force
    Install-Module oh-my-posh -Scope CurrentUser -Confirm:$false -Force
    
    @'
    Import-Module posh-git
    Import-Module oh-my-posh
    Set-PoshPrompt -Theme spaceship
    '@ | Out-File -Append $PROFILE
    ```
    
4.  調整 Git 版控設定
    
    ```powershell
    # 直接設定 Git 預設 user.name 與 user.email
    git config --global user.email "you@example.com"
    git config --global user.name "Your Name"
    
    # 設定預設 Git Alias
    git config --global alias.ci   commit
    git config --global alias.cm   "commit --amend -C HEAD"
    git config --global alias.co   checkout
    git config --global alias.st   status
    git config --global alias.sts  "status -s"
    git config --global alias.br   branch
    git config --global alias.re   remote
    git config --global alias.di   diff
    git config --global alias.type "cat-file -t"
    git config --global alias.dump "cat-file -p"
    git config --global alias.lo   "log --oneline"
    git config --global alias.ls   "log --show-signature"
    git config --global alias.ll   "log --pretty=format:'%h %ad | %s%d [%Cgreen%an%Creset]' --graph --date=short"
    git config --global alias.lg   "log --graph --pretty=format:'%Cred%h%Creset %ad |%C(yellow)%d%Creset %s %Cgreen(%cr)%Creset [%Cgreen%an%Creset]' --abbrev-commit --date=short"
    git config --global alias.alias "config --get-regexp ^alias\."
    git config --global alias.ignore "!gi() { curl -sL https://www.gitignore.io/api/\$@ ;}; gi"
    git config --global alias.iac  "!giac() { git init && git add . && git commit -m 'Initial commit' ;}; giac"
    git config --global alias.rc  "!grc() { git reset --hard && git clean -fdx ;}; read -p 'Do you want to run the <<< git reset --hard && git clean -fdx >>> command? (Y/N) ' answer && [[ $answer == [Yy] ]] && grc"
    
    # 設定 git 預設編輯器為 notepad
    git config --global core.editor "notepad"
    
    # 設定 git 預設編輯器為 Visual Studio Code
    # git config --global core.editor "code --wait"
    
    # 設定 git tlog 開啟 Tortoise Show log 視窗
    git config --global alias.tlog "!start 'C:\PROGRA~1\TortoiseGit\bin\TortoiseGitProc.exe' /command:log /path:."
    
    # 設定 git status 若有中文不會顯示亂碼
    git config --global core.quotepath false
    
    # 設定 git log 若有中文不會顯示亂碼
    SETX LC_ALL C.UTF-8 /M
    ```
    

### 安裝 WSL 2 (Windows Subsystem for Linux) 執行環境

Windows Server 2022 已經跟 WSL 2 已經無縫整合，安裝起來非常的方便！

1.  查詢有哪些 WSL image 可以用
    
    ```powershell
    wsl --list --online
    ```
    
    ```
    The following is a list of valid distributions that can be installed.
    The default distribution is denoted by '*'.
    Install using 'wsl --install -d <Distro>'.
    
      NAME            FRIENDLY NAME
    * Ubuntu          Ubuntu
      Debian          Debian GNU/Linux
      kali-linux      Kali Linux Rolling
      openSUSE-42     openSUSE Leap 42
      SLES-12         SUSE Linux Enterprise Server v12
      Ubuntu-16.04    Ubuntu 16.04 LTS
      Ubuntu-18.04    Ubuntu 18.04 LTS
      Ubuntu-20.04    Ubuntu 20.04 LTS
    ```
    
2.  安裝 Ubuntu 20.04 LTS 版本
    
    ```powershell
    wsl --install -d Ubuntu-20.04
    ```
    
3.  重開機
    
    ```powershell
    Restart-Computer -Force
    ```
    

### 安裝 IIS + .NET Framework + ASP.NET 執行環境

1.  安裝 IIS 服務、管理工具與 .NET Framework 執行環境
    
    ```powershell
    Install-WindowsFeature Web-Server,Web-Asp-Net45,NET-Framework-Features -IncludeManagementTools
    ```
    
2.  安裝 URL Rewrite 模組
    
    ```powershell
    Invoke-WebRequest -Uri https://download.microsoft.com/download/1/2/8/128E2E22-C1B9-44A4-BE2A-5859ED1D4592/rewrite_amd64_en-US.msi -OutFile "$env:USERPROFILE\Downloads\rewrite_amd64_en-US.msi"
    msiexec.exe /i "$env:USERPROFILE\Downloads\rewrite_amd64_en-US.msi" /qn
    ```
    
3.  預設匯入 [IISAdministration](https://learn.microsoft.com/en-us/powershell/module/iisadministration/?view=windowsserver2022-ps&WT.mc_id=DT-MVP-4015686) 與 [WebAdministration](https://learn.microsoft.com/en-us/powershell/module/webadministration/?view=windowsserver2022-ps&WT.mc_id=DT-MVP-4015686) 模組
    
    ```powershell
    @'
    Import-Module IISAdministration
    Import-Module WebAdministration
    '@ | Out-File -Append $PROFILE
    ```
    

### 安裝 ASP.NET Core 5.0 執行環境

1.  安裝 .NET SDK
    
    ```powershell
    # Install the .NET Core 5.0 SDK
    Invoke-WebRequest https://download.visualstudio.microsoft.com/download/pr/c1bfbb13-ad09-459c-99aa-8971582af86e/61553270dd9348d7ba29bacfbb4da7bd/dotnet-sdk-5.0.400-win-x64.exe -outfile $env:temp\dotnet-sdk-5.0.400-win-x64.exe
    Start-Process $env:temp\dotnet-sdk-5.0.400-win-x64.exe -ArgumentList '/quiet' -Wait
    ```
    
2.  安裝 IIS 的 ASP.NET Core Module (ANCM)
    
    ```powershell
    # Install the .NET Core 5.0 Windows Server Hosting bundle
    Invoke-WebRequest https://download.visualstudio.microsoft.com/download/pr/a0f49856-eec9-4962-8d81-b09af6be9435/1d5fc0083b7f7e10ebed181329ca88ae/dotnet-hosting-5.0.9-win.exe -outfile $env:temp\dotnet-hosting-5.0.9-win.exe
    Start-Process $env:temp\dotnet-hosting-5.0.9-win.exe -ArgumentList '/quiet' -Wait
    
    # Restart the web server so that system PATH updates take effect
    net stop was /y
    net start w3svc
    ```
    
3.  查看 .NET 安裝版本
    
    ```powershell
    dotnet --info
    ```
    
4.  測試 ASP.NET Core 執行
    
    ```powershell
    $projectName = "api50"
    New-Item -Path $projectName -ItemType Directory
    cd $projectName
    
    dotnet new globaljson --sdk-version 5.0.400
    dotnet new webapi
    dotnet publish -c Release -o C:\Inetpub\TestSite
    
    $folder = Get-Item -Path "C:\Inetpub\TestSite"
    
    Import-Module WebAdministration
    
    # $appPool = New-WebAppPool -Name TestSite
    # $appPool.managedRuntimeVersion = ""
    # $appPool | Set-Item
    
    New-WebAppPool -Name TestSite
    $appPool = Get-Item IIS:\AppPools\TestSite
    $appPool.managedPipelineMode="Integrated"
    $appPool.managedRuntimeVersion=""
    $appPool | set-item
    
    New-Website -Name "TestSite" -HostHeader "testsite" -Port 80 -PhysicalPath $folder  -ApplicationPool "TestSite"
    New-WebBinding -Name "TestSite" -HostHeader "localhost" -Port 80 -Protocol "http"
    
    $result = curl.exe -s http://localhost/WeatherForecast
    
    if ( $result -like "*temperatureC*" ) {
      Write-Host "TestSite connnection successful!"
    } else {
      Write-Warning "TestSite connection failed!!!";
    }
    
    Remove-WebSite -Name TestSite
    Remove-WebAppPool -Name TestSite
    
    Start-Sleep -Seconds 1
    Remove-Item $folder -Recurse -Force -Confirm:$false
    
    cd ..
    Remove-Item -Path $projectName -Recurse -Force -Confirm:$false
    ```
    

### 安裝 Java 執行環境

1.  安裝 Adopt OpenJDK 11、Zulu8 與 Maven
    
    ```powershell
    choco install adoptopenjdk11 zulu8 maven -y
    ```
    
2.  設定 JAVA\_HOME 環境變數
    
    ```powershell
    $env:JAVA_HOME = 'C:\Program Files\Zulu\zulu-8'
    [System.Environment]::SetEnvironmentVariable('JAVA_HOME','C:\Program Files\Zulu\zulu-8',[System.EnvironmentVariableTarget]::Machine)
    ```
    
3.  安裝 Apache Tomcat 服務
    
    通常 Spring Boot 在用 Maven 發行 JAR 檔的時候，已經內建了 Tomcat，所以不太需要特別安裝 Tomcat 服務，如果要手動安裝，可以使用以下命令安裝：
    
    ```powershell
    # 安裝 Apache Tomcat 9
    choco install tomcat -y
    
    # 啟動 Apache Tomcat 9 服務
    Start-Service -Name Tomcat9
    
    # 設定 Tomcat 為開機自動啟動
    Set-Service -Name Tomcat9 -StartupType Automatic
    ```
    

### 安裝 Angular 開發環境 (VSCode)

1.  安裝 Angular CLI 12 工具
    
    ```powershell
    npm i -g @angular/cli@12
    ```
    
2.  關閉分析服務
    
    ```powershell
    ng analytics off
    ```
    

### 安裝 Visual Studio Code 開發環境

1.  安裝常用擴充套件
    
    ```powershell
    # 安裝 Java 與 Spring Boot 相關擴充套件
    code --install-extension doggy8088.git-extension-pack
    # 安裝 Essential Spring Boot Snippets 擴充套件
    code --install-extension doggy8088.spring-boot-snippets
    # 安裝 Angular Extension Pack 擴充套件
    code --install-extension doggy8088.angular-extension-pack
    # 安裝 Markdown Extension Pack 擴充套件
    code --install-extension doggy8088.markdown-extension-pack
    # 安裝 .NET Core Extension Pack 擴充套件
    code --install-extension doggy8088.netcore-extension-pack
    # 安裝 JavaScript Debugger 擴充套件 (取代 Debugger for Chrome 套件)
    code --install-extension ms-vscode.js-debug
    # 安裝 Prettier - Code formatter 擴充套件
    code --install-extension esbenp.prettier-vscode
    # 安裝 .NET Interactive Notebooks 擴充套件
    code --install-extension ms-dotnettools.dotnet-interactive-vscode
    
    # 安裝 VSCode 繁體中文語言包
    #code --install-extension MS-CEINTL.vscode-language-pack-zh-hant
    ```
    
2.  調整 VSCode 使用者設定檔
    
    ```json
    "git.autofetch": true,
    
    "editor.foldingImportsByDefault": true,
    
    "java.home": "C:\\Program Files\\AdoptOpenJDK\\jdk-11.0.11.9-hotspot",
    "java.configuration.runtimes": [
        {
            "name": "JavaSE-1.8",
            "path": "C:\\Program Files\\Zulu\\zulu-8"
        },
        {
            "name": "JavaSE-11",
            "path": "C:\\Program Files\\AdoptOpenJDK\\jdk-11.0.11.9-hotspot",
            "sources": "C:\\Program Files\\AdoptOpenJDK\\jdk-11.0.11.9-hotspot\\src.zip",
            "javadoc": "https://docs.oracle.com/en/java/javase/11/docs/api",
            "default": true
        }
    ],
    "java.debug.settings.hotCodeReplace": "auto",
    "java.saveActions.organizeImports": true,
    ```
    

### 安裝 Hyper-V 相關服務

1.  安裝相關服務與管理工具
    
    ```powershell
    Add-WindowsFeature Hyper-V,Hyper-V-Tools,Hyper-V-PowerShell -IncludeManagementTools
    ```
    
2.  重開機
    
    ```powershell
    Restart-Computer -Force
    ```
    

### 安裝 Windows Containers 相關服務

> 注意：安裝 Windows Containers 之前必須先安裝好 Hyper-V 服務。

1.  安裝 `DockerMsftProvider` 的過程會提示你要不要安裝 `NuGet Provider`，這裡必須手動按下 `Y` 之後繼續。
    
    ```powershell
    Install-Module -Name DockerMsftProvider -Repository PSGallery -Force
    ```
    
2.  使用 PackageManagement PowerShell 模組安裝最新版 Docker。
    
    ```powershell
    Install-Package -Name docker -ProviderName DockerMsftProvider -Force
    ```
    
3.  重開機
    
    ```powershell
    Restart-Computer -Force
    ```
    
4.  查看版本資訊
    
    ```powershell
    docker version
    ```
    
    ```log
    ❯ docker version
    Client: Mirantis Container Runtime
    Version:           20.10.6
    API version:       1.41
    Go version:        go1.13.15
    Git commit:        b3766ff
    Built:             06/29/2021 17:14:16
    OS/Arch:           windows/amd64
    Context:           default
    Experimental:      true
    
    Server: Mirantis Container Runtime
    Engine:
      Version:          20.10.6
      API version:      1.41 (minimum version 1.24)
      Go version:       go1.13.15
      Git commit:       a3dc69e6b9
      Built:            06/29/2021 17:12:49
      OS/Arch:          windows/amd64
      Experimental:     false
    ```
    
    > 日後升級的命令請參考 [Get started: Prep Windows for containers](https://learn.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?WT.mc_id=DT-MVP-4015686&tabs=Windows-Server#install-docker) 文件說明。
    

### 安裝 Web Deployment Tool 3.6 遠端代理程式

1.  安裝 IIS 的 Management Service 管理服務 ([Remote Administration for IIS Manager](https://learn.microsoft.com/en-us/iis/manage/remote-administration/remote-administration-for-iis-manager?WT.mc_id=DT-MVP-4015686))
    
    ```powershell
    # 安裝管理服務
    Install-WindowsFeature Web-Mgmt-Service
    
    # 啟用遠端連線
    Set-Itemproperty -path 'HKLM:\Software\Microsoft\WebManagement\Server' -Name 'EnableRemoteManagement' -value '1'
    
    # 設定自動啟動服務
    Set-Service -Name WMSvc -StartupType Automatic
    Start-Service -Name WMSvc
    ```
    
2.  安裝 Web Deployment Tool 3.6 遠端代理程式
    
    **English (x64)**
    
    ```powershell
    Invoke-WebRequest https://download.microsoft.com/download/0/1/D/01DC28EA-638C-4A22-A57B-4CEF97755C6C/WebDeploy_amd64_en-US.msi -outfile $env:temp\WebDeploy_amd64_en-US.msi
    Start-Process $env:temp\WebDeploy_amd64_en-US.msi -ArgumentList 'ADDLOCAL=ALL /qn /norestart LicenseAccepted="0"' -Wait
    ```
    
    **Chinese (Traditional) (x64)**
    
    ```powershell
    Invoke-WebRequest https://download.microsoft.com/download/5/4/4/5441215F-78DB-4686-AD05-3FAD23C406D1/WebDeploy_amd64_zh-TW.msi -outfile $env:temp\WebDeploy_amd64_zh-TW.msi
    Start-Process $env:temp\WebDeploy_amd64_zh-TW.msi -ArgumentList 'ADDLOCAL=ALL /qn /norestart LicenseAccepted="0"' -Wait
    ```
    

### 安裝 Windows Admin Center (WAC) 管理服務

微軟正在嘗試用 **Windows Admin Center** (WAC) 取代 **伺服器管理員**(Server Manager)，所以當你打開 **伺服器管理員** 的時候，預設就會提醒你要不要安裝 **Windows Admin Center** (WAC)！

![Server Manager](https://stwillblogassets.blob.core.windows.net/files/images/external/user-images.githubusercontent.com/0916b49b116c8734b325-132116504-30a4cc44-4fa6-4790-9a2c-155269478e6c.png)

你可以直接到 [Try Windows Admin Center on Microsoft Evaluation Center](https://www.microsoft.com/en-us/evalcenter/evaluate-windows-admin-center) 下載安裝檔 (`WindowsAdminCenter2103.2.msi`)，基本上很順利就可以裝好，預設網址為：

```
https://HOSTNAME/
```

> 注意: 你不用在每台電腦安裝 WAC，也不一定要安裝在 Windows Server 2022 上，任何一台 Windows 10、Windows Server 或 Windows Server Core 都可以安裝 WAC。被管理的作業系統只要額外[安裝 WMF 5.1 版或更新版本](https://learn.microsoft.com/zh-tw/powershell/scripting/wmf/setup/install-configure)，基本上就可以被 WAC 管理。

詳細使用方式請參見 [Windows Admin Center](https://learn.microsoft.com/zh-tw/windows-server/manage/windows-admin-center/overview?WT.mc_id=DT-MVP-4015686) 官方文件。

### 相關連結

-   [How to make a pretty prompt in Windows Terminal with Powerline, Nerd Fonts, Cascadia Code, WSL, and oh-my-posh - Scott Hanselman's Blog](https://www.hanselman.com/blog/how-to-make-a-pretty-prompt-in-windows-terminal-with-powerline-nerd-fonts-cascadia-code-wsl-and-ohmyposh)
-   [Release Cascadia Code · microsoft/cascadia-code](https://github.com/microsoft/cascadia-code/releases/latest)
-   [如何在 Windows Containers 的 aspnet 容器新增額外的 IIS 角色服務](/post/2020/07/12/Windows-Containers-IIS-install-additional-role-service)
-   Web Deployment Tool 3.6
    -   [Web Deploy 3.6 : The Official Microsoft IIS Site](https://www.iis.net/downloads/microsoft/web-deploy)
    -   [Remote Administration for IIS Manager](https://learn.microsoft.com/en-us/iis/manage/remote-administration/remote-administration-for-iis-manager?WT.mc_id=DT-MVP-4015686)
    -   [Configuring a Web Server for Web Deploy Publishing (Remote Agent)](https://learn.microsoft.com/en-us/aspnet/web-forms/overview/deployment/configuring-server-environments-for-web-deployment/configuring-a-web-server-for-web-deploy-publishing-remote-agent?WT.mc_id=DT-MVP-4015686)
    -   [Configuring a Web Server for Web Deploy Publishing (Web Deploy Handler)](https://learn.microsoft.com/en-us/aspnet/web-forms/overview/deployment/configuring-server-environments-for-web-deployment/configuring-a-web-server-for-web-deploy-publishing-web-deploy-handler?WT.mc_id=DT-MVP-4015686)
-   Windows Container
    -   [Windows 和容器](https://learn.microsoft.com/zh-tw/virtualization/windowscontainers/about/?WT.mc_id=DT-MVP-4015686)
    -   [安裝與升級 Docker 服務](https://learn.microsoft.com/zh-tw/virtualization/windowscontainers/quick-start/set-up-environment?tabs=Windows-Server&WT.mc_id=DT-MVP-4015686#prerequisites)
