Compute Engine 提供的公開映像檔具有可用於建立執行個體的 Windows Server。如需有關如何在已預先安裝 SQL Server 的情況下建立 Windows Server 執行個體的操作說明,請參閱「建立 SQL Server 執行個體」一文。
至於可在 Compute Engine 上執行的 Windows Server 執行個體與 Windows 應用程式,如需相關的一般資訊,請參閱 Compute Engine 上的 Windows 一文。
定價
Windows Server 映像檔為付費映像檔,使用時會產生額外費用。
Google Cloud 免費方案不包含 Windows Server VM。
事前準備
- 啟用專案的計費功能。
-
如果尚未設定,請先設定驗證機制。驗證是指驗證身分,以便存取 Google Cloud 服務和 API 的程序。如要在本機開發環境中執行程式碼或範例,您可以選取下列任一選項,向 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
Go
To use the Go samples on this page in a local development environment, install and initialize the gcloud CLI, and then set up Application Default Credentials with your user credentials.
- Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
For more information, see Set up authentication for a local development environment.
Java
To use the Java samples on this page in a local development environment, install and initialize the gcloud CLI, and then set up Application Default Credentials with your user credentials.
- Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
For more information, see Set up authentication for a local development environment.
Node.js
To use the Node.js samples on this page in a local development environment, install and initialize the gcloud CLI, and then set up Application Default Credentials with your user credentials.
- Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
For more information, see Set up authentication for a local development environment.
Python
To use the Python samples on this page in a local development environment, install and initialize the gcloud CLI, and then set up Application Default Credentials with your user credentials.
- Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity.
For more information, see Set up authentication for a local development environment.
REST
To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
For more information, see Authenticate for using REST in the Google Cloud authentication documentation.
-
建立 Windows Server 執行個體
如要以 Windows Server 建立執行個體,請指定您需要的 Windows 特定版本映像檔系列。Compute Engine 提供了數種版本的 Windows Server,大多會同時提供一般映像檔與受防護的 VM 映像檔。受防護的 VM 映像檔提供了多種安全性功能,例如符合 UEFI 標準的韌體、安全啟動與 vTPM 防護測量啟動功能等。如需可用映像檔系列的清單,請參閱公開映像檔。
如果您需要同時進行兩個以上的遠端桌面工作階段,就必須購買遠端桌面工作階段 (RDS) 用戶端存取使用權 (CAL)。如需更多資訊,請參閱「使用用戶端存取授權 (CAL) 為 RDS 部署授權」。
與 Microsoft Active Directory 搭配運作
如果您打算在新的執行個體中使用 Microsoft Active Directory (AD),請務必確保執行個體名稱不超過 15 個字元,以符合系統規定的名稱長度上限。
AD 會使用機器的 NetBIOS 名稱,這些名稱會在執行個體名稱截斷為 15 個字元時產生。因此,當您嘗試以網域使用者身分登入時,可能會遇到下列錯誤:The Security Database on the Server does not have a Computer Account for this Workstation Trust Relationship
。
建立透過外部 IP 啟用的 Windows Server 執行個體
本節說明如何建立具有外部 IP 位址的 Windows Server 執行個體。您的虛擬私人雲端網路必須設為允許存取 kms.windows.googlecloud.com
。
主控台
如要建立基本 Windows VM,請按照下列步驟操作:
前往 Google Cloud 控制台的「Create an instance」(建立執行個體) 頁面。
在「Boot disk」部分,選取「Change」,然後執行下列操作:
- 在「Public images」分頁中,選擇 Windows Server 作業系統。
- 按一下 [選取]。
如要建立 VM,請按一下「建立」。
如要建立受防護 VM Windows 執行個體,請按照下列步驟操作:
前往 Google Cloud 控制台的「Create an instance」(建立執行個體) 頁面。
在「Boot disk」部分,選取「Change」,然後執行下列操作:
- 在「Public images」分頁中,選擇 Windows Server 作業系統。
- 如要儲存開機磁碟設定,請按一下「選取」。
您也可以變更 VM 的受防護 VM 設定,方法是展開「Advanced options」部分。接著,請按照下列步驟操作:
- 展開「安全性」專區。
- 如要關閉安全啟動功能,請取消勾選「Turn on Secure Boot」核取方塊。安全啟動功能可防止 VM 執行個體受到啟動層級和核心層級的惡意軟體和 Rootkit 攻擊。詳情請參閱安全啟動一節。
如要關閉虛擬信任平台模組 (vTPM),請取消勾選「Turn on vTPM」核取方塊。vTPM 可啟用測量啟動功能,來驗證 VM 的啟動前和啟動完整性。詳情請參閱虛擬信任平台模組 (vTPM) 一節。
如果您要關閉完整性監控功能,請取消勾選「Turn on Integrity Monitoring」核取方塊。完整性監控功能可以讓您利用 Cloud Monitoring 監控受防護 VM 的啟動完整性。詳情請參閱完整性監控一節。
如要建立 VM,請按一下「建立」。
gcloud
使用 compute images list
指令查看可用的 Windows Server 映像檔清單:
gcloud compute images list --project windows-cloud --no-standard-images
如要判斷映像檔是否支援受防護的 VM 功能,請執行下列指令,並在輸出內容中檢查是否有 UEFI_COMPATIBLE
:
gcloud compute images describe IMAGE_NAME --project windows-cloud
將 IMAGE_NAME
替換為要檢查是否支援 Shielded VM 功能的映像檔名稱。
使用 compute instances create
指令建立新的執行個體,並指定其中一個 Windows Server 公開映像檔的映像檔系列。
gcloud compute instances create INSTANCE_NAME \ --image-project windows-cloud \ --image-family IMAGE_FAMILY \ --machine-type MACHINE_TYPE \ --boot-disk-size BOOT_DISK_SIZE \ --boot-disk-type BOOT_DISK_TYPE
更改下列內容:
INSTANCE_NAME
:新執行個體的名稱。IMAGE_FAMILY
:Windows Server 映像檔的其中一個公開映像檔系列。MACHINE_TYPE
:可用的機器類型之一。BOOT_DISK_SIZE
:開機磁碟的大小,以 GiB 為單位。磁碟越大,總處理量就越高。BOOT_DISK_TYPE
:執行個體的開機磁碟類型,例如hyperdisk-balanced
或pd-ssd
。
如果您選擇的映像檔支援受防護的 VM,則可選擇使用下列其中一個標記變更執行個體的受防護 VM 設定:
--no-shielded-secure-boot
:停用安全啟動功能。安全啟動功能可防止 VM 執行個體受到啟動層級和核心層級的惡意軟體和 Rootkit 攻擊。詳情請參閱安全啟動一節。--no-shielded-vtpm
:停用虛擬信任平台模組 (vTPM)。vTPM 可啟用測量啟動功能,來驗證 VM 的啟動前和啟動完整性。詳情請參閱虛擬信任平台模組 (vTPM) 一節。--no-shielded-integrity-monitoring
:停用完整性監控。完整性監控功能可以讓您利用 Cloud Monitoring 監控受防護 VM 執行個體的啟動完整性。詳情請參閱完整性監控一節。
下列範例會建立停用安全啟動功能的 Windows 2022 受防護 VM 執行個體:
gcloud compute instances create my-instance \ --image-family windows-2022 --image-project windows-cloud \ --no-shielded-secure-boot
Go
Java
Node.js
Python
REST
如要以 API 建立執行個體,請在執行個體建立要求中加入 initializeParams
屬性,並指定 Windows 映像檔。舉例來說,您的要求主體可能如下所示:
instance = { "name": "INSTANCE_NAME", "machineType": "zones/ZONE/machineTypes/MACHINE_TYPE", "disks": [{ "boot": "true", "type": "PERSISTENT", "initializeParams": { "diskName": "DISK_NAME", "sourceImage": "https://www.googleapis.com/compute/v1/projects/windows-cloud/global/images/family/IMAGE_FAMILY", "diskSizeGb": "BOOT_DISK_SIZE", "diskType": "BOOT_DISK_TYPE", } }], "networkInterfaces": [{ "accessConfigs": [{ "type": "ONE_TO_ONE_NAT", "name": "External NAT" }], "network": "global/networks/default" }], "serviceAccounts": [{ "email": DEFAULT_SERVICE_EMAIL, "scopes": DEFAULT_SCOPES }] }
將下列預留位置替換為有效值:
INSTANCE_NAME
:新執行個體的名稱。IMAGE_FAMILY
:Windows Server 或 SQL Server 映像檔的其中一個公開映像檔系列。ZONE
:這個例項的區域。MACHINE_TYPE
:可用的機器類型之一。BOOT_DISK_SIZE
:開機磁碟的大小 (以 GiB 為單位)。磁碟越大,總處理量就越高。BOOT_DISK_TYPE
:執行個體的開機磁碟類型,例如hyperdisk-balanced
或pd-ssd
。
如果您選擇的映像檔支援受防護的 VM,則可選擇使用下列其中一個布林要求主體項目變更執行個體的「受防護的 VM」設定:
enableSecureBoot
:啟用或停用安全啟動功能。安全啟動功能可防止 VM 執行個體受到啟動層級和核心層級的惡意軟體和 Rootkit 攻擊。詳情請參閱安全啟動一節。enableVtpm
:啟用或停用虛擬信任平台模組 (vTPM)。vTPM 可啟用測量啟動功能,來驗證 VM 的啟動前和啟動完整性。詳情請參閱虛擬信任平台模組 (vTPM) 一節。enableIntegrityMonitoring
:啟用或停用完整性監控功能。有了完整性監控功能,您就能透過 Cloud Monitoring 報表監控及驗證受防護 VM 執行個體的執行階段啟動完整性。詳情請參閱完整性監控一節。
如要進一步瞭解如何建立執行個體,請參閱 instances.insert()
方法說明文件。
建立 Windows 或 SQL Server 執行個體後,請設定執行個體的初始密碼,以便透過遠端桌面協定連線至執行個體。
此外,您可以在建立 VM 時或建立 VM 後,將 VM 加入受控 Microsoft AD 網域。詳情請參閱「自動將 Windows VM 加入網域」。
建立透過內部 IP 位址啟用的 Windows Server 執行個體
您必須先在自己的虛擬私有雲網路中驗證或設定路徑和防火牆規則,藉此允許存取 kms.windows.googlecloud.com
,才能建立只有內部 IP 位址的 Windows Server 執行個體。此外,您也必須確認只有內部 IP 位址的 Windows 執行個體位於哪個虛擬私人雲端網路,並為其中的子網路啟用私人 Google 存取權。
gcloud
當您透過 gcloud CLI 建立新的執行個體時,您可以使用 --no-address
標記確認該個體並未獲派外部 IP 位址:
gcloud compute instances create INSTANCE_NAME --network NETWORK_NAME \ --subnet SUBNET_NAME \ --no-address \ --zone ZONE \ --image-project windows-cloud \ --image-family IMAGE_FAMILY \ --machine-type MACHINE_TYPE \ --boot-disk-size BOOT_DISK_SIZE \ --boot-disk-type BOOT_DISK_TYPE
將下列預留位置替換為有效值:
Go
Java
Node.js
Python
由於此執行個體沒有外部 IP 位址,因此您無法直接透過網際網路連線至該個體。您可以使用 Cloud Interconnect 或 Cloud VPN,從與您虛擬私人雲端網路相連的其他網路進行連線;也可以先透過遠端桌面協定連線至防禦執行個體,再連線至只有內部 IP 位址的執行個體。
此外,您可以在建立 VM 時或建立 VM 後,將 VM 加入受控 Microsoft AD 網域。詳情請參閱「自動將 Windows VM 加入網域」。
設定 kms.windows.googlecloud.com 存取權
如要執行 Windows 啟用和更新等作業,您的虛擬私人雲端網路必須在轉送和防火牆規則方面符合下列條件。
轉送條件
您的 Windows 執行個體必須能夠透過下一個躍點為「預設網際網路閘道」的路徑存取 kms.windows.googlecloud.com
(35.190.247.13
或 2001:4860:4802:32::86
)。您無法使用基於執行個體的 NAT 閘道或 Cloud NAT 來啟用 Windows 執行個體,因為啟用要求的來源 IP 位址如果未經確認為 Compute Engine 執行個體,kms.windows.googlecloud.com
就會拒絕這類要求。
您可以使用虛擬私人雲端網路中的預設路徑,將流量直接轉送至 kms.windows.googlecloud.com
。如果您已經或即將移除這個路徑,則可建立自訂靜態路徑,並將目標和下一個躍點分別設為 35.190.247.13
或 2001:4860:4802:32::86
,如下所示:
僅限 IPv4
gcloud compute routes create mskms-ipv4-route-ipv4-network \ --destination-range=35.190.247.13/32 \ --network=ipv4-network \ --next-hop-gateway=default-internet-gateway
雙堆疊
gcloud compute routes create mskms-ipv4-route-ipv4-network \ --destination-range=35.190.247.13/32 \ --network=ipv4-network \ --next-hop-gateway=default-internet-gateway
gcloud compute routes create mskms-ipv6-route-ipv6-network \ --destination-range=2001:4860:4802:32::86/128 \ --network=ipv6-network \ --next-hop-gateway=default-internet-gateway
僅限 IPv6
gcloud compute routes create mskms-ipv6-route-ipv6-network \ --destination-range=2001:4860:4802:32::86/128 \ --network=ipv6-network \ --next-hop-gateway=default-internet-gateway
將 ipv4-network
或 ipv6-network
替換為您虛擬私人雲端網路的名稱。
預設路徑或自訂靜態路徑都會允許具有外部 IP 位址的執行個體存取 kms.windows.googlecloud.com
。如果您的 Windows 執行個體沒有外部 IP 位址或使用 Cloud NAT,您也必須啟用私人 Google 存取權,以便只有內部 IP 位址的執行個體能將流量傳送至 kms.windows.googlecloud.com
(35.190.247.13
或 2001:4860:4802:32::86
) 的外部 IP 位址。
防火牆規則條件
默示允許輸出防火牆規則可讓執行個體發出要求並接收已建立的回應。除非您建立了拒絕輸出的自訂防火牆規則,否則您的 Windows 執行個體皆可與 kms.windows.googlecloud.com
通訊。
如要自訂防火牆規則,比較理想的做法是建立高優先順序的允許輸出規則,明確允許與 35.190.247.13
或 2001:4860:4802:32::86
之間的通訊。如此一來,當您修改防火牆規則時,就不會意外停用 Windows 啟用作業。
下列 gcloud
範例會按照上述做法,建立最高優先順序的允許輸出規則:
僅限 IPv4
gcloud compute firewall-rules create mskms-ipv4-firewall-rule-ipv4-network \ --direction=EGRESS \ --network=ipv4-network \ --action=ALLOW \ --rules=tcp:1688 \ --destination-ranges=35.190.247.13/32 \ --priority=0
雙堆疊
gcloud compute firewall-rules create mskms-ipv4-firewall-rule-ipv4-network \ --direction=EGRESS \ --network=ipv4-network \ --action=ALLOW \ --rules=tcp:1688 \ --destination-ranges=35.190.247.13/32 \ --priority=0
gcloud compute firewall-rules create mskms-ipv6-firewall-rule-ipv6-network \ --direction=EGRESS \ --network=ipv6-network \ --action=ALLOW \ --rules=tcp:1688 \ --destination-ranges=2001:4860:4802:32::86/128 \ --priority=0
僅限 IPv6
gcloud compute firewall-rules create mskms-ipv6-firewall-rule-ipv6-network \ --direction=EGRESS \ --network=ipv6-network \ --action=ALLOW \ --rules=tcp:1688 \ --destination-ranges=2001:4860:4802:32::86/128 \ --priority=0
將 ipv4-network
或 ipv6-network
替換為您虛擬私人雲端網路的名稱。
驗證系統是否成功啟動執行個體
由於 sysprep 程序的緣故,Windows 執行個體的啟動時間會較長。即使 sysprep 程序尚未完成,Google Cloud 主控台可能會顯示執行個體正在執行。若要檢查執行個體是否成功啟動且已可供使用,請使用下列指令檢查序列埠輸出:
gcloud compute instances get-serial-port-output INSTANCE_NAME
將 INSTANCE_NAME
替換為您要驗證的執行個體名稱。
...[snip]... Running schtasks with arguments /run /tn GCEStartup --> SUCCESS: Attempted to run the scheduled task "GCEStartup". ------------------------------------------------------------- Instance setup finished. INSTANCE_NAME is ready to use. -------------------------------------------------------------
啟用與停用 Windows 執行個體功能
如果 Windows 執行個體具有 v20170509
以上版本的映像檔,或是 4.1.0
以上版本的代理程式,則可在設定檔或是專案或執行個體自訂中繼資料中設定執行個體。設定檔使用的是 INI 格式,位於以下路徑:
C:\Program Files\Google\Compute Engine\instance_configs.cfg
系統會按照以下優先順序,由最高優先順序開始,依序覆寫設定。
- 設定檔中的設定參數
- 執行個體層級自訂中繼資料的設定參數
- 專案層級自訂中繼資料中的設定參數
舉例而言,如果可以在設定檔中啟用accountManager
功能,執行個體就會忽略您在自訂中繼資料中設定的參數,以停用該功能。
在設定檔中設定這些參數有項優點,即是在建立 Windows Server 執行個體的自訂映像檔時,系統會保留這些參數設定。而執行個體的壽命期間過後,系統並不會保留執行個體層級的自訂中繼資料。
您可使用下列範例,停用各種不同的 Windows 執行個體功能。
停用帳戶管理員
停用帳戶管理員也會停用使用 Google Cloud CLI 重設密碼或 Google Cloud 控制台的功能:
設定檔:
[accountManager] disable=true
將自訂中繼資料中的
disable-account-manager
設為true
。
停用位址管理員
設定檔項目:
[addressManager] disable=true
將自訂中繼資料中的
disable-address-manager
設為true
。
Windows Server 容錯移轉叢集
啟用 Windows Server 容錯移轉叢集代理程式:
設定檔項目:
[wsfc] enable=true
將自訂中繼資料中的
enable-wsfc
設為true
。
使用多個內部負載平衡器
請指定內部負載平衡執行個體的 IP 位址,作為容錯移轉叢集之用。此為進階設定,專屬的容錯移轉叢集無需設定。
通常一次會使用一個內部負載平衡執行個體,將網路流量引導至一個 VM 執行個體。若增加第二個內部負載平衡執行個體,而該執行個體把容錯移轉叢集 VM 執行個體作為負載平衡網站後端的一部分,就會有兩個內部負載平衡 IP 位址。若容錯移轉叢集使用 10.0.0.10
,而網站的負載平衡器使用的是 10.0.0.11
,則容錯移轉叢集使用的負載平衡器就必須由您指定 IP 位址。如此有助於區分叢集使用的位址。
設定檔項目:
[wsfc] addresses=10.0.0.10
將自訂中繼資料的
wsfc-addrs
設為10.0.0.10
。
變更叢集代理程式通訊埠
設定容錯移轉叢集代理程式的通訊埠。預設通訊埠為 59998
。僅在需要使用不同的通訊埠時,才需要指定通訊埠:
設定檔項目:
[wsfc] port=12345
將自訂中繼資料的
wsfc-agent-port
設為通訊埠編號。
映像檔版本附註
較舊的映像檔不會使用設定檔,且僅具有功能子集。若為 v20160112
與 v20170509
之間的映像檔版本,或是 3.2.1.0
與 4.0.0
之間的 Windows 代理程式版本,則需使用下列自訂中繼資料值:
- 將執行個體中繼資料的
disable-account-manager
設為true
,以停用帳戶管理員。 - 將執行個體中繼資料的
disable-address-manager
設為true
,以停用位址管理員。