MR2オーナー吉田貴幸のブログ

MR2(SW20)オーナー吉田貴幸のブログ。仕事はITインフラエンジニア。愛車の記事とIT関連の情報を発信しています

【SCCM】[PowerShell] できる限り早く更新プログラムを適用する | Microsoft System Center Configuration Manager(SCCM)

f:id:takayuki-yoshida:20190421222641p:plain

 

はじめに

Japan System Center Support Team Blog「System Center Configuration Manager で、できる限り早く更新プログラムを適用する方法について」が紹介されています。

blogs.technet.microsoft.com

クライアントの操作、VBScriptでの実行方法が紹介されていますが、実際の業務では、クライアントの操作をエンドユーザーに連絡してお願いしたり、VBSの実行をユーザーに案内して実施してもらったりと、システム管理者、ユーザーサポートの方は負担が大きいですよね。そこで、PowerShellを使ったリモート実行方法を紹介します。

 

(1) ソフトウェア更新プログラムのスキャン サイクル

ソフトウェアの更新ポイント (WSUS) サーバーに対してスキャンを行い、更新プログラムの必要有無を判断します。

このサイクルは、既定で 7 日間隔で実行されます。

 

コマンドは管理者権限で実行してください。TriggerScheduleのGUIDの説明は参考記事に記載のリンクを参照してください。

#ソフトウェア更新プログラムのスキャンサイクルのリモート実行(Scan by Update Source)
#computernameは、リモート実行先のコンピューター名を指定してください

Invoke-WMIMethod -ComputerName computername -Namespace root\ccm -Class SMS_CLIENT -Name TriggerSchedule "{00000000-0000-0000-0000-000000000113}"

 

(2) コンピューター ポリシーの取得および評価サイクル

SCCM サーバーで設定された更新プログラムの展開を受信します。

このサイクルは、既定で 1 時間間隔で実行されます。

コマンドは管理者権限で実行してください。TriggerScheduleのGUIDの説明は参考記事に記載のリンクを参照してください。

#コンピューター ポリシーの取得および評価サイクルのリモート実行(Machine Policy Assignments Request,Machine Policy Evaluation)
#computernameは、リモート実行先のコンピューター名を指定してください

#コンピューター ポリシーの取得(Machine Policy Assignments Request)
Invoke-WMIMethod -ComputerName computername -Namespace root\ccm -Class SMS_CLIENT -Name TriggerSchedule "{00000000-0000-0000-0000-000000000021}"

#コンピューター ポリシーの評価サイクル(Machine Policy Evaluation)
Invoke-WMIMethod -ComputerName computername -Namespace root\ccm -Class SMS_CLIENT -Name TriggerSchedule "{00000000-0000-0000-0000-000000000022}"

 

(3) ソフトウェア更新プログラムの展開評価サイクル

過去に受信した展開でインストールに失敗した更新プログラムがあれば再評価し、インストールを再試行します。

このサイクルは、既定で 7 日間隔で実行されます。

コマンドは管理者権限で実行してください。TriggerScheduleのGUIDの説明は参考記事に記載のリンクを参照してください。

#ソフトウェア更新プログラムの展開評価サイクルのリモート実行(Software Updates Assignments Evaluation Cycle)
#computernameは、リモート実行先のコンピューター名を指定してください

Invoke-WMIMethod -ComputerName computername -Namespace root\ccm -Class SMS_CLIENT -Name TriggerSchedule "{00000000-0000-0000-0000-000000000108}"

 

(1)(2)(3)をまとめて実行する

コマンドは管理者権限で実行してください。各コマンドの間に1分のスリープを入れています。

#computernameは、リモート実行先のコンピューター名を指定してください

#ソフトウェア更新プログラムのスキャンサイクル(Scan by Update Source)
Invoke-WMIMethod -ComputerName computername -Namespace root\ccm -Class SMS_CLIENT -Name TriggerSchedule "{00000000-0000-0000-0000-000000000113}"

#1分待機
sleep 60

#コンピューター ポリシーの取得(Machine Policy Assignments Request)
Invoke-WMIMethod -ComputerName computername -Namespace root\ccm -Class SMS_CLIENT -Name TriggerSchedule "{00000000-0000-0000-0000-000000000021}"

#1分待機
sleep 60

#コンピューター ポリシーの評価サイクル(Machine Policy Evaluation)
Invoke-WMIMethod -ComputerName computername -Namespace root\ccm -Class SMS_CLIENT -Name TriggerSchedule "{00000000-0000-0000-0000-000000000022}"

#1分待機
sleep 60

#ソフトウェア更新プログラムの展開評価サイクル(Software Updates Assignments Evaluation Cycle)
Invoke-WMIMethod -ComputerName computername -Namespace root\ccm -Class SMS_CLIENT -Name TriggerSchedule "{00000000-0000-0000-0000-000000000108}"

 

SCCMコンソールで実行する

SCCMコンソールのスクリプトに、こちらのPowerShellを登録しておき、SCCMのコンソール操作のみで、PowerShellの実行が可能です。SCCMへ登録するPowerShellには「-ComputerName 」のオプション指定は不要となります。

詳細な手順はこの記事では割愛しますので、こちらの記事を参考にしてください。

docs.microsoft.com

 

参考記事

TriggerSchedule

docs.microsoft.com