メール
 Computer >> コンピューター >  >> ソフトウェア >> メール

Active Directoryの情報を活用してOutlook 2010/2013の署名を自動生成する方法

本記事では、Active Directory(AD)のデータをもとに、Outlook 2010/2013でユーザー署名を自動作成する方法を詳しく解説します。想定するシナリオは以下のとおりです。新しいドメインユーザーがワークステーションに初めてログオンした際に、PowerShellスクリプトが自動的に実行され、Active Directoryから取得した連絡先情報をもとにOutlookのユーザー署名ファイルを生成します。

署名に使用するActive Directory属性

このスクリプトを正しく動作させるためには、AD内の全ユーザーに対象となる属性が事前に入力されている必要があります。本記事の例では、ユーザー署名に以下のActive Directory属性を使用します。

  • ユーザーの氏名(本例では「Description」属性に格納)
  • 役職(Title)
  • 会社名(Company)
  • 郵便番号・市区町村・番地(PostalCode、City、StreetAddress)
  • 電話番号(OfficePhone)
  • メールアドレス(Mail)
  • ウェブサイト(Homepage)

Active Directoryの情報を活用してOutlook 2010/2013の署名を自動生成する方法

署名テンプレートファイルの作成

まず、Outlook用の署名テンプレートとして、htm(HTML)、rtf(リッチテキスト)、txt(プレーンテキスト)の3形式のファイルを作成します。各テンプレートのデザインや内容は、社内のメール署名ポリシーの要件に準拠させましょう。

signature.htm の作成

以下のHTMLコードを含むsignature.htmファイルを作成します。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head></head>
<body>
<div id style="font-family:Arial&;color:#5B9BD5;">
<span style="font-size:10pt;color:#000000;">
<b><p>Best Regards</p>
<p>@NAME</p>      </span>
<span style="font-size:9.0pt;">
<p>&nbsp;</p>
<p>@DESCRIPTION</p>
<p>@COMPANY</p></b>
<p> &nbsp;</p></span>
<span style="font-size:8.0pt;">
<p> @POSTALCODE, @CITY, @STREETADDRESS</p>
<p> Phone.@OFFICEPHONE</p>
<p> <a href="https://@WEBSITE">@WEBSITE</a></p>
<p>e-mail:<a href="mailto:@EMAIL">@EMAIL</a></span>
</div>
</body>
</html>

Active Directoryの情報を活用してOutlook 2010/2013の署名を自動生成する方法

signature.rtf / signature.txt の内容

signature.rtf および signature.txt ファイルの内容は以下のようにします。

Best Regards,
@NAME
@DESCRIPTION
@COMPANY
@POSTALCODE, @CITY, @STREETADDRESS
Phone. @OFFICEPHONE
e-mail:@EMAIL
site:@WEBSITE

フォルダ構成の準備

C:\Users\Public\Downloads 配下に OutlookSignature フォルダを作成し、Outlook用の署名テンプレートと各ユーザーの署名ファイルを保存できるようにします。さらに C:\Users\Public\Downloads\OutlookSignature 内に Templates サブフォルダを作成し、先ほど作成した3つのテンプレートファイルをコピーしてください。作業は手動でも、グループポリシー基本設定(GPP)を使っても実施できます。

Active Directoryの情報を活用してOutlook 2010/2013の署名を自動生成する方法

PowerShellスクリプトの作成

続いて、outlooksignature.ps1 という名前の新規ファイルに以下のPowerShellコードを記述します(各ブロックごとに簡単な説明を加えています)。

1. 変数の定義

$User 変数には、スクリプトを実行したユーザーアカウント名が格納されます。その他の変数には、ファイル名・拡張子・各種パスを指定します。

$User = $env:UserName
$FileName = "signature"
$FileExtension = "htm","rtf","txt"
$Path = "C:\Users\Public\Downloads"
$PathSignature = "$Path\OutlookSignature"
$PathSignatureTemplates = "$Path\OutlookSignature\Templates"
$PathSignatureUser = "$PathSignature\$User"
$AppSignatures =$env:APPDATA + "\Microsoft\Signatures"

2. ADモジュールのインポートとユーザー情報の取得

Active DirectoryへアクセスするためのPowerShellモジュールをインポートします。Get-ADUser コマンドレットを使って、必要なユーザー属性の値を取得し、$AD_user オブジェクトに保存します。

注意: Windows 7環境で Get-ADUser コマンドレットを使用するには、RSAT(Remote Server Administration Tools)のインストールが必要です。また、「Active Directory Module For Windows PowerShell」コンポーネントも有効化しておく必要があります(コントロールパネル → プログラムと機能 → Windowsの機能の有効化または無効化 → リモートサーバー管理ツール → 役割管理ツール → AD DSおよびAD LDSツール)。

Import-module activedirectory
$AD_user = Get-ADUser $User -Properties Title,Company,Description,Fax,HomePage,Mail,OfficePhone,PostalCode,City,StreetAddress

3. 署名フォルダの作成とテンプレートのコピー

ユーザー署名ファイルを保存するフォルダを作成し、そこへテンプレートをコピーします。

New-Item -Path "$PathSignature\$User" -ItemType Container –Force
foreach ($Ext in $FileExtension)
{
Copy-Item -Force "$PathSignatureTemplates\$FileName.$Ext" "$PathSignatureUser\$FileName.$Ext"
}

4. プレースホルダーの置き換え

次に、replace 機能を使って、テンプレート内のプレースホルダー(@NAME など)をADから取得したユーザーデータに置き換えます。

foreach ($Ext in $FileExtension)
{
(Get-Content "$PathSignatureUser\$FileName.$Ext") | Foreach-Object {
$_`
-replace "@NAME", $AD_user.Description `
-replace "@DESCRIPTION", $AD_user.title `
-replace "@COMPANY", $AD_user.Company `
-replace "@STREETADDRESS", $AD_user.StreetAddress `
-replace "@POSTALCODE", $AD_user.PostalCode `
-replace "@CITY", $AD_user.City `
-replace "@OFFICEPHONE", $AD_user.OfficePhone `
-replace "@EMAIL", $AD_user.Mail `
-replace "@WEBSITE", $AD_user.Homepage `
} | Set-Content "$PathSignatureUser\$FileName.$Ext"
}

5. Outlook署名フォルダへのコピー

最後に、署名ファイルをOutlook 2010/2013/2016が参照する署名保存フォルダ %APPDATA%\Microsoft\Signatures(C:\Users\username\AppData\Roaming\Microsoft\Signatures)へコピーします。

foreach ($Ext in $FileExtension)
{
Copy-Item -Force "$PathSignatureUser\$FileName.$Ext" "$AppSignatures\$User.$Ext"
write-host "$PathSignatureUser\$FileName.$Ext"
write-host "$AppSignatures\$User.$Ext"
}

Outlook起動時に署名を適用するレジストリ設定

Outlookの起動時にこれらの署名テンプレートファイルを自動的に使用させるには、以下の操作を行います。

  1. HKEY_CURRENT_USER\Software\Microsoft\Office\<Officeバージョン>\Outlook\Setup から First-Run 値を削除する
  2. HKEY_CURRENT_USER\Software\Microsoft\Office\<Officeバージョン>\Common\MailSettings に、NewSignatureReplySignature という2つの文字列値を作成する(値にはテンプレート名=署名名を指定。本例ではテンプレート名をADアカウント名と同一にしています)

複数のMS Officeバージョンに対応させるには、以下のコードを追加します。

#Office 2010
If (Test-Path HKCU:'\Software\Microsoft\Office\14.0') {
Remove-ItemProperty -Path HKCU:\Software\Microsoft\Office\14.0\Outlook\Setup -Name First-Run -Force -ErrorAction SilentlyContinue -Verbose
New-ItemProperty HKCU:'\Software\Microsoft\Office\14.0\Common\MailSettings' -Name 'ReplySignature' -Value $User -PropertyType 'String' -Force
New-ItemProperty HKCU:'\Software\Microsoft\Office\14.0\Common\MailSettings' -Name 'NewSignature' -Value $User -PropertyType 'String' -Force
}
#Office 2013
If (Test-Path HKCU:'\Software\Microsoft\Office\15.0') {
Remove-ItemProperty -Path HKCU:\Software\Microsoft\Office\15.0\Outlook\Setup -Name First-Run -Force -ErrorAction SilentlyContinue -Verbose
New-ItemProperty HKCU:'\Software\Microsoft\Office\15.0\Common\MailSettings' -Name 'ReplySignature' -Value $User -PropertyType 'String' -Force
New-ItemProperty HKCU:'\Software\Microsoft\Office\15.0\Common\MailSettings' -Name 'NewSignature' -Value $User -PropertyType 'String' -Force
}

Active Directoryの情報を活用してOutlook 2010/2013の署名を自動生成する方法

グループポリシーによる展開

あとは、グループポリシー基本設定(GPP)を利用して、ユーザーがシステムにログオンしたタイミングでこのPowerShellスクリプトが一度だけ実行されるよう設定すれば完了です。これにより、Outlookは作成済みの署名を送信メールに自動的に適用するようになります。記事冒頭の画像が、実際に生成された署名のサンプルです。

運用時のヒント

  • HTM署名の行間が大きく表示される場合: 行間が二重に空いて見える現象はOutlook側の不具合です。HTM形式の署名はOutlook上で直接作成し、それをテンプレートとして使う(%APPDATA%\Microsoft\Signatures に保存)のがおすすめです。
  • ユーザー写真の追加: Active Directoryの thumbnailPhoto 属性からユーザーの顔写真を署名に組み込むことも可能です。ただし、Outlook署名に画像を追加する簡単な方法がないため、任意の画像を含む署名テンプレートをOutlookで作成しておき、PowerShellスクリプトでテンプレートフォルダ内の画像ファイルをコピーして差し替える方法が有効です(画像は %AppData%\Microsoft\Signatures\<署名名>.files に保存されます)。
  • Exchange環境の場合: Exchange 2007以降では、トランスポートルール(Transport Rules)を使えば、すべてのメールに簡易的な署名を挿入することもできます。
  1. Outlook 2016/2013/2010のPSTデータファイルを自動バックアップする方法

    このチュートリアルでは、フリーウェア「Outlook 2016 / 2013 Backup Add-In」を使用して、OutlookのPSTデータファイルを自動的にバックアップする具体的な手順をご紹介します。 「Outlook Backup Add-In」は、Outlook 2010・2013・2016に対応した信頼性の高い無料ツールで、面倒なバックアップ作業を自動化できます。重要なメール、連絡先、予定表などのデータを誤って失うリスクを軽減したい方におすすめのソリューションです。 Outlook 2016/2013/2010のPSTファイルを自動バックアップする手順 ステップ1:アドインの

  2. Outlookでメール署名を追加・設定する方法【自動設定と手動挿入を解説】

    競合他社との差別化を図り、ビジネスシーンで洗練された印象を与える最も簡単な方法のひとつが、Outlookでメール署名を設定することです。 Outlookにメール署名を設定すれば、取引先やクライアントに追加情報を伝えられるだけでなく、ブランドを通じてすべてのメッセージに信頼性と権威を持たせることができます。さらに、Microsoftはすべてのデバイス間でメール署名を同期できる機能も提供しているため、今こそ署名を設定しておく絶好のタイミングといえるでしょう。 この記事では、Outlookアカウントにメール署名を追加する最適な方法をわかりやすく解説します。それでは早速見ていきましょう。 Outloo