Chromeを一斉にアップデートさせたい!シャットダウンスクリプトの作り方

院内ヘルプデスクActiveDirectory, GoogleChrome, シャットダウンスクリプト

コロナ禍で密集・密閉・密接の3密を避けましょうと呼びかけられていますね。病院も例外ではなく様々な場面で3密を避ける対応が行われています。従来病院で行われていた行事でも見直しされています。

今回は私が3密を避けるために実施したテレビ会議システムで起きたGoogleChromeのアップデート問題に対処した対応策を紹介していこうと思います。

背景

病院の独自の行事として、院内研究やQC発表会というものがあり、普段の業務での業務改善やコスト改善、問題提起などをまとめて、発表する場があります。普段はその発表会では会議室に大人数で集まって、プロジェクターに映して運営していましたが、今回から3密を避けるために会議室に集まらずに、各自のPCから参加するようにしようと決まりました。

私はその運営委員のシステム担当だったので、従来の発表会を各自のPCから参加できるようなシステムで実現する方法を考えなければなりませんでした。最初は定番となりつつあるZoomでやろうとしましたが、後述する理由で見送りざるを得ませんでした。

そこで最近入れた、病院内だけで使えるWeb会議システムを使って実現する方法を検討しました。

環境

まずうちの病院の環境について説明します。病院のネット環境はインターネットにつながっておらず、病院内の閉じたネットワーク(オンプレミス環境)で構成されています。そのため普段の業務で使っているパソコンではyoutubeを見たりニュースを見たりなどは基本的にできません。このことを踏まえて読み進めてください。

院内で使われているパソコンは500台以上あり、またアクティブディレクトリに参加していて、その中にはグループポリシーが設定されています。

病院内だけで使えるWeb会議システムとしていくつかありますが、うちの病院に導入されたのがBigBlueButtonというシステムでした。これはZoomに代表されるようなWeb会議システムの特徴が取り込まれているオープンソースのシステムで、サーバー内に構築すれば無料で使えます。このWeb会議システムはブラウザで使えるのですが、Chromeのバージョンによっては見れないことがわかりました。パソコンのキッティング時に自動的にChromeが入るようになっていたのですが、このChromeのバージョンが低くデフォルトの状態では見れないという問題点に対処する必要がありました。

Chromeアップデートの実現方法

インターネットに接続しているChromeは基本的にアップデートを自動でチェックしてくれてアップデートがある場合はアップデートされますが、病院のパソコンは自動でアップデートされません。アップデートするにはインターネット環境でアップデーター(インストーラー)をダウンロードしてきて、1台1台実行する必要があります。しかし院内にあるパソコンは32bitや64bitマシンがあるので1つのインストーラーではカバーできず、また職員に自分の環境にあったインストーラーを実行して操作してもらうのも難しいです。

batファイル作成

そこで私が最初に行ったことはWindowsに標準で搭載されているコマンドプロンプトというコマンドを実行するプログラムでインストールすることでした。コマンドプロンプトはパソコンの情報を取得することができたり、操作の自動化も実現できるのでパソコンをよく使う方なら覚えていて損はない技術だと思います。

今回のbatファイルで実現したいことは

  • 32bit、64bit機を区別してそれぞれに合ったインストーラーを実行する
  • すでに最新版のChromeが入っているなら処理をしない

ということが必要です。上記を踏まえて作成したbatファイルが以下の通りです。

@echo off

rem ----- Windows 7 -----
ver | find /i "Version 6.1." > nul
if %ERRORLEVEL% equ 0 goto INSTALL
rem ----- Windows 10 -----
ver | find /i "Version 10.0." > nul
if %ERRORLEVEL% equ 0 goto INSTALL
goto END

:INSTALL
echo.
echo ========================================
echo 「Google Chrome」のインストール
echo ========================================
echo.
echo PC設定中、画面を閉じないでください。
echo.
rem Chromeバージョンチェック
set CHROME_VER=91.0.4472.77
set NOW_ON_INS=

cd "c:\Chrome"

rem x86環境
if "%PROCESSOR_ARCHITECTURE%" EQU "x86"   goto ARCH_X86
rem x64環境
if "%PROCESSOR_ARCHITECTURE%" EQU "AMD64" goto ARCH_X64

goto END

:ARCH_X86
echo x86環境
for /f "usebackq delims=" %%A in (`dir /B /O-N "C:\Program Files\Google\Chrome\Application" ^| findstr "^[0-9].*"`) do set NOW_ON_INS=%%A
if %CHROME_VER% == %NOW_ON_INS% goto END

copy /Y "\\%userdomain%\GoogleChrome\GoogleChromeStandaloneEnterprise.msi" "c:\Chrome"
msiexec.exe /i "GoogleChromeStandaloneEnterprise.msi" /quiet /norestart
goto END

:ARCH_X64
echo x64環境
for /f "usebackq delims=" %%A in (`dir /B /O-N "C:\Program Files (x86)\Google\Chrome\Application" ^| findstr "^[0-9].*"`) do set NOW_ON_INS=%%A
if %CHROME_VER% == %NOW_ON_INS% goto END

copy /Y "\\%userdomain%\GoogleChrome\GoogleChromeStandaloneEnterprise64.msi" "c:\Chrome"
msiexec.exe /i "GoogleChromeStandAloneEnterprise64.msi" /quiet /norestart
goto END

:END
exit

batの処理内容を簡単にまとめると、32bitと64bit機を判別してそれぞれの環境でChromeのバージョンを取得します。そのバージョンが今回入れるバージョンではなければ、それぞれ指定した場所からインストーラーをコピーしてサイレントインストールするという流れです。

batファイルを見て流れを説明すると簡単に感じるかもしれませんが、一から作ろうと思うと結構大変です。今回の場合だと特にChromeバージョンの取得方法が難しかったです。このファイルを作るのに合計で2,3時間ぐらいかかったと思います。

batファイルを作成したら、何台かのパソコンで実行してみます。特に32bit機・64bit機で実行するのと、管理者権限の有無で成功するかを重点的に調べました。

グループポリシー設定

アクティブディレクトリに参加しているパソコンはドメインコンピューター上でグループに参加させることが出来ます。グループにはグループポリシーというグループに所属しているパソコンの設定を一括で管理できます。そのグループポリシーでシャットダウンスクリプトというパソコンの終了時に実行させる処理を記述できます。そこで、先ほど作成したbatファイルを指定してあげます。

これで準備完了です。まずテスト用のグループなどに上記のグループポリシーを設定して少数台でテストします。問題がなければ全台にグループポリシーを適用して院内のパソコンのChromeをアップデートできます。

まとめ

院内ネットワークでパソコンを使っていると、自動的にアップデートされなかったり調べ物をする際にも一苦労することがあります。しかし上記のような工夫で対応したり、勝手にアップデートされないので逆に管理しやすくなるメリットもあります。インターネットに接続できない少し不便な環境ではありますが、そのような環境でも使いやすい環境や機能を提供することが出来ればと思い、できることを探していこうと思います。