ヘッダー画像

Office展開ツールを使用したOffice365ソフトウェアの展開方法

はじめに

日本の企業にとって切っても切り離せないツールがMicrosoft Officeだと思います。一般的にはPCのマスタ作成時にOfficeソフトをインストールした状態で展開することが多いかと思います。ただしOffice2016までに実施できていた方法はOffice2019およびOffice365版である、Apps for Enterprise/Apps for Business(旧ProPlus)では利用できなくなりました。今回はインストールのカスタマイズと展開例について記載していきます。展開前の事前チェックはこちらの記事で紹介しています。

前提条件

PCはActive Directory のメンバーに参加していることを前提とします。また、利用者は貸与パソコンの管理者権限を持っていないことを前提として、バックグランドインストールを実行します。配布およびカスタマイズに利用するツールは下記の通りです。

  • インストーラーカスタマイズ:Office 展開ツール (ODT)
  • 配布方法:Active Directoryのグループポリシー
  • 配布対象のPCがActive Directoryドメインに参加している
  • インストール実行時はActive Directoryおよび配布ポイントにアクセスできるネットワークに接続されている
  • Office2019はボリュームライセンス版である

展開までの流れ

  1. 配布ポイントの準備(ファイルサーバなど)
  2. ODTダウンロードとインストール
  3. カスタマイズ用のXMLファイル作成
  4. Officeインストーラーのダウンロード
  5. 配布用プログラムのコーディング
  6. グループポリシーの作成・割り当て
  7. PC再起動
  8. 配布完了

配布ポイントの準備

ここで準備いただくのは、Active Directoryドメインに参加しDomain ComputersメンバーになっているサーバまたはPCでファイル共有できるものをご用意いただきます。ご用意いただいたファイルサーバ(PC) の共有フォルダの権限は下記の通り設定してください。

権限設定場所対象権限
NTFSDomain Computersフルコントロール
共有Domain Computersフルコントロール
Microsoft Public Affiliate Program (JP)(マイクロソフトアフィリエイトプログラム)

ご用意いただくフォルダ構成は下記の通りです。一応ログまで管理する想定になっています。配布ポイントを複数にする場合は、同じフォルダ構成で作成してください。

フォルダ構成

ODTのダウンロードとインストール

ODTのダウンロードはMicrosftのサイトからダウンロードしてください。自己解凍方式のexeファイルがダウンロードされるはずですので、そのままダブルクリックで展開しましょう。展開するだけで何かをインストールするものではありません。下記の形で配置しておきます。デフォルトで作成されるサンプルのconfiguration-xxxxxxxは利用しませんので削除していただいても問題ありません。

ODT展開

カスタマイズ用XMLファイルの作成

ここで作成するXMLファイルによって、インストールするアプリケーション、配布ポイントの場所、ログの出力場所、アップデート間隔およびアップデート場所の設定を行います。XMLファイルを直接編集しながら設定していただいても良いですが、最近はこんな便利なものがMicrosftから提供されています。

ツールで作成したサンプル

<Configuration ID="49850e6a-bb31-4bc4-affd-e5d69e54cd27">
  <Info Description="" />
  <Add OfficeClientEdition="32" Channel="SemiAnnual" SourcePath="\\share\office" AllowCdnFallback="TRUE">
    <Product ID="O365ProPlusRetail">
      <Language ID="ja-jp" />
      <ExcludeApp ID="Groove" />
      <ExcludeApp ID="Lync" />
      <ExcludeApp ID="OneDrive" />
      <ExcludeApp ID="Publisher" />
      <ExcludeApp ID="Bing" />
    </Product>
  </Add>
  <Property Name="SharedComputerLicensing" Value="0" />
  <Property Name="SCLCacheOverride" Value="0" />
  <Property Name="AUTOACTIVATE" Value="0" />
  <Property Name="FORCEAPPSHUTDOWN" Value="FALSE" />
  <Property Name="DeviceBasedLicensing" Value="0" />
  <Updates Enabled="TRUE" UpdatePath="\\share\office" />
  <AppSettings>
    <Setup Name="Company" Value="Engineer-Base" />
    <User Key="software\microsoft\office\16.0\excel\options" Name="defaultformat" Value="51" Type="REG_DWORD" App="excel16" Id="L_SaveExcelfilesas" />
    <User Key="software\microsoft\office\16.0\powerpoint\options" Name="defaultformat" Value="27" Type="REG_DWORD" App="ppt16" Id="L_SavePowerPointfilesas" />
    <User Key="software\microsoft\office\16.0\word\options" Name="defaultformat" Value="" Type="REG_SZ" App="word16" Id="L_SaveWordfilesas" />
  </AppSettings>
  <Display Level="None" AcceptEULA="FALSE" />
</Configuration>

このツールをご利用いただくことでXMLファイルの直接編集を避けることができ、簡単に設定ファイルを作成していただけます。ツールの詳細はこちらをご確認ください。ただしこのままだとログの出力設定がされていません。結局万能ではないということですね。。。

2022年1月20日ログ出力対応しないことを確認したため記事修正

ツールの標準では%temp%にログ出力されますのでそちらをご確認ください。

</Configuration>の一行前に<Logging Level=”Standard” Path=”\\share\Office\log” />を追加しましょう。

Officeインストーラーのダウンロード

ダウンロードは展開前に1度していただければ問題ありませんが、Officeのアップデートをインターネットに出さずにローカルで実行させたい場合に備えて、batファイルで作成します。これによりWindowsのタスクスケジューラに定期実行タスクとして登録してアップデートファイルの自動取得も実現します。batファイルはDownloadフォルダ内に配置することを前提としてます。設定用のXMLファイルはinstallフォルダ内に配置されていることを前提としています。

cd %~dp0
..\setup.exe /download "..\install\install_OfficeApp.xml"

batファイルとして保存していただき、管理者権限で実行していただければ、インストールファイルが\\share\officeにダウンロードされるかと思います。

配布用プログラムのコーディング

続いて展開のプログラムを書いていきましょう。細かいチェックを入れるかどうかによって難易度は変わります。単純にインストールだけができれば良いパターンは下記になります。batファイルはInstallフォルダに配置していることを前提としています。

\\share\office\setup.exe /configure \\share\office\install\install_OfficeApp.xml

事前にCドライブの空き容量をチェックしたうえでインストールをさせてみます。まずは、bat側の処理を記載します。Windowsの標準ではPowershellスクリプトの実行が許可されていません。常にスクリプトが実行できる状態はMicrosoftとして推奨していないからこと許可されていない認識です。このbatスクリプトでは今回のOfficeインストール処理を実行するときだけPowershellスクリプトを許可し、実行が完了した際は元のスクリプト実行権限に戻す処理を書いています。

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy Bypass \\share\office\install\install.ps1

続いてはPowershell側のコードは下記になります。Cドライブが10GB以上開いていなければログを出力して処理を中止します。ログには、実行日時と実行コンピュータ名を出力させます。

#初期設定
$logFile = "\\share\office\log\DiskCheck_" + (Get-Date -Format "yyyyMMdd") + ".log"
$hostName = hostname

if((Get-PSDrive -Name C).Free -gt 10737418240)
{
	\\share\office\setup.exe /configure \\share\office\install\install_OfficeApp.xml
}
else
{
	"[ERR] " + (Get-Date) + " " + $hostName + " Disk Free Space is Not" | Out-File $logFile -append
}

グループポリシーの作成・割り当て

Officeアプリケーションの展開は、パソコンの管理者権限が必要になりますので、スタートアップスクリプトにスクリプトをセットして実行させます。2通りのやり方を記載してますが、どちらのパターンでもbatファイルを設定していただければ問題ありません。Active Directoryでの設定方法は割愛しますが下記はよくご確認の上設定していただけますようお願いいたします。

  • Default Domain Policyでは設定しない
  • ドメインのルートに作成したポリシーを割り当てない
  • 個別OUを作成の上、作成したOUへのグループポリシー適用を推奨
  • 少ない台数でよくテストしてから全体へ展開を推奨

適用確認

適用確認のサンプルもご用意しました。このサンプルプログラムはコンピューターのホスト名に「-」が含まれている場合正常に動作しません。その場合は12行目のソースを変更してください。プログラムは「\\share\office\適用確認」に配置することを前提としています。(2021年5月8日追記)

#初期設定 環境に合わせて変更してください
$rootFolder_Path = (Convert-Path ..)
$logFilePath = $rootfolder_Path + "\log\install_log"
$logFile = $rootfolder_Path + "\適用確認\InstallCheck_" + (Get-Date -Format "yyyyMMddHHmmss") + ".log"

#ログファイルを抽出
$files = Resolve-Path ($logFilePath + "\*.log")

#ログファイルのヘッダー設定
"ステータス 日付 時刻 ホスト名 メッセージ" | Out-File $logFile -append

foreach ($file in $files.Path)
{
    #ファイル名からログ日付を抽出
    $file -match "\-(\w+)\-"
    if ($Matches[1] -eq (Get-Date -Format "yyyyMMdd"))
    {
        #ログファイル内の成功/失敗を確認 「With 0」があれば成功、なければ失敗
        $ret = Get-Content $file | Select-String -Pattern "with 0"
        
        #ホスト名を抽出
        $file = $file.Split("\")
        $fileName = ($file.Split("\").length -1)

        if ($ret.length -eq 1)
        {
            #インストール成功処理ホスト名をテキスト出力
            "[Info] " + (Get-Date) + " " + $file[$fileName].substring(0,($file[$fileName].Indexof("-") -1)) + " ProPlusインストールが成功しました。" | Out-File $logFile -append
        }
        else
        {
            #インストール失敗処理ホスト名をテキスト出力
            "[ERR] " + (Get-Date) + " " + $file[$fileName].substring(0,($file[$fileName].Indexof("-") -1)) + " ProPlusインストールが失敗しました。ログファイルを確認してください。" | Out-File $logFile -append
        }
    }
}

まとめ

ここまで設定したうえで、対象のPCを再起動していただくと利用者の操作なしでOfficeソフトが展開されるかと思います。また成功、失敗のログもlogフォルダ上に出力されます。ODTのログの仕様上コンピュータ1台に対して1ファイル出来上がってしまいます。再三になりますが、展開は良くテストしてから行ってください。グループポリシーを安易に設定すると予期せぬ動作を起こす場合があります。そのあたりの責任は負いかねますのでよろしくお願いいたします。こんな記事書いておいてあれですが、ベンダーさんに依頼されるほうが良いのは間違えありません。。。Microsoft365関連のPowershellに関する記事は別の記事に記載してあります。この記事が皆様のお役に立ちましたら幸いです。