概要
Citrix Virtual Apps and Desktops(CVAD)環境において、特定の日時や曜日だけサーバーを「メンテナンスモード」に入れてユーザーアクセスを遮断し、メンテナンス完了後に自動で開放する仕組みを構築する方法を解説します。
XenApp 6.5以前では「負荷評価基準(Load Evaluator)」のスケジュール設定でログオン制御が可能でしたが、XenApp / XenDesktop 7.x 以降はその機能がGUIから削除されました。本記事では、PowerShellスクリプトとWindowsタスクスケジューラを組み合わせることで、「輪番メンテナンス」や「定期再起動」を自動化する手順を紹介します。
本記事の初稿が2016年のためXenApp/XenDesktopと記載している箇所がありますが、2026年現在はCVADと読み替えて頂いて問題ありません。
XenApp 6.5 と 7.x の運用差分
- XenApp 6.5まで:
- 管理コンソール上の「負荷評価基準」設定で、時間帯ごとのログオン許可/禁止をスケジューリング可能でした。
change logon /disableコマンドでICA接続のみ拒否し、管理用RDPは許可するといった運用が一般的でした。
- XenApp / XenDesktop 7.x以降:
- 標準GUIには同等のスケジュール機能がありません。
- 代わりに、デリバリーグループまたはマシン単体に対して**「メンテナンスモード」**(On/Off)を切り替える方式に変更されました。
- この操作はPowerShellコマンドレットで実行可能なため、スクリプト化してタスクで回すのが正解です。
自動化の仕組み
Delivery Controller(DDC)上で、以下のPowerShellスクリプトをタスクスケジューラから定期実行させます。
- メンテナンスモードONタスク: 指定時刻(例: 深夜0時)に実行 → ユーザーログオン禁止
- (メンテナンス作業): Windows Updateや再起動など
- メンテナンスモードOFFタスク: 作業終了時刻(例: 早朝6時)に実行 → ユーザーログオン解禁
実装手順
1. PowerShellスクリプト(.ps1)の作成
メンテナンスモードを「有効にするスクリプト」と「解除するスクリプト」の2種類を作成します。
例: メンテナンスモードをONにする(Maintenance_ON.ps1)
PowerShell
# Citrixスナップインの読み込み
Add-PSSnapin Citrix.Broker.Admin.V2
# 指定したマシンのメンテナンスモードを有効化 ($true)
Set-BrokerMachineMaintenanceMode -InputObject DOMAIN\Server01 $true
Set-BrokerMachineMaintenanceMode -InputObject DOMAIN\Server02 $true
# 必要な台数分記述、またはCSV読み込みなども可能
例: メンテナンスモードをOFFにする(Maintenance_OFF.ps1)
PowerShell
# Citrixスナップインの読み込み
Add-PSSnapin Citrix.Broker.Admin.V2
# 指定したマシンのメンテナンスモードを解除 ($false)
Set-BrokerMachineMaintenanceMode -InputObject DOMAIN\Server01 $false
Set-BrokerMachineMaintenanceMode -InputObject DOMAIN\Server02 $false
2. タスクスケジューラへの登録
作成したスクリプトをWindowsタスクスケジューラに登録します。
- プログラム/スクリプト:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe - 引数の追加:
-Command ".\Maintenance_ON.ps1"※ ExecutionPolicyのエラーが出る場合は-ExecutionPolicy Bypass -File ".\Maintenance_ON.ps1"と記述。 - 開始(オプション): スクリプトが保存されているフォルダパス(例:
C:\Scripts)
運用のメリット
この方式であれば、GUIでポチポチ設定する必要がなく、曜日ごとにメンテナンス対象サーバーを変える「輪番再起動」などもタスクの設定だけで柔軟に対応できます。また、急なメンテナンス中止時も、タスクスケジュールを無効化するだけで済むため、運用負荷を大きく下げることができます。


コメント