Outlook」カテゴリーアーカイブ

マウントしているPSTファイル一覧をPowerShellで出力

OutlookでPSTファイルを使用している環境で、
ユーザーがどの程度使用しているか実態を把握したい場合があります。

この場合、以下のPowerShellコマンドで出力可能です。

$Olk = New-Object -comObject Outlook.Application;
$Olk.Session.Stores | where{($_.FilePath -like '*.pst')} | ft DisplayName,FilePath -Autosize;

ログオンスクリプトなどに組み込んで共有ファイルサーバーにテキスト出力するなどすれば
ユーザーに紐づいて情報が入手できます。

Outlookのキャッシュファイルを自動削除

OutlookをExchange環境でする場合、
キャッシュモードでの使用が推奨されています。

キャッシュモードが有効だと、Exchangeメールボックスの容量に応じて
クライアントローカルにキャッシュファイルが保存されるのですが
複数人で使用するクライアントですとHDDを圧迫しかねません。

グループポリシーのスタートアップスクリプトに組み込むことで
一定日数が経過したキャッシュファイルを削除してくれるスクリプトを書いてみました。

# 変数定義
$OST_Path01 = "C:\Users\";
$OST_Path02 = "\AppData\Local\Microsoft\Outlook\";
$File_Extension = "*.ost";
$Number_Of_Days = 30;

# メイン
$Folder_List = Get-ChildItem -Path $OST_Path01;

foreach($tmp01 in @(Get-ChildItem -Path $OST_Path01)){
    $File_Path = $OST_Path01 + $tmp01.Name + $OST_Path02;

    if(Test-Path -Path $File_Path){
        foreach($tmp02 in @(Get-ChildItem -Path $File_Path -Recurse -Force -Include $File_Extension)){
            $Item_Property = Get-ItemProperty -Path $tmp02.FullName;
            if(((Get-Date) - $Item_Property.LastWriteTime).days -gt $Number_Of_Days){
                Write-EventLog -LogName Application -Source Application -EventID 999 -EntryType Information -Message "PowerShell Script Run.";
                Remove-Item -Path $tmp02.FullName -Force;
            }
        }
    }
}

スクリプトではデフォルトパスを想定し、30日以上更新がないOSTファイル(キャッシュファイル)を
自動的に削除します。この際、削除されたことがわかりにくいのでアプリケーションログに書き込んでいます。
Windowsのユーザープロファイルも含め、使用するには環境に応じたカスタマイズが必要かもしれません。

Outlook2013でGUIを制御

Outlookに限りませんが、画面の特定項目をグレーアウトさせたいなど
細やかな制御を要求される事があります。

結論から言うと、グループポリシーで制御は可能です。
ただし、管理は非常に煩雑となるため、どうしても必要な項目のみに絞って制御すべきです。
※ 本制御はOutlook2013で確認しています
※ Outlookのグループポリシー向けに管理用テンプレートを導入している必要があります

【設定内容】
グループポリシーで、以下項目から設定します。
ユーザーの構成 > ポリシー > 管理用テンプレート > Microsoft Outlook 2013
> ユーザーインターフェイスの項目を無効にする > ユーザー設定
> コマンドバーボタンおよびメニュー項目を無効にする

オフィス製品のGUI項目には内部的にIDが設定されており、
IDをグループポリシーで指定することで無効化(グレーアウト)することができます。
正直なところ日本語での細かい資料は無く、Microsoftが出しているID表を元に
突き合わせをしていくイメージです。

Office 2013 Help Files: Office Fluent User Interface Control Identifiers
https://www.microsoft.com/en-us/download/details.aspx?id=36798

上記サイトからリストをダウンロードし、英語のGUI項目とIDが並ぶ中、対象を探していく事になりますが
Outlookは画面遷移が多いためか非常に沢山のファイルに分かれています。
WordやExcelなどは1ファイルなのでわかりやすいかもしれません。

ファイルを開くと、以下のような列で管理されています。
・ Control Name:制御対象メニューの内部名?
・ Control Type:制御対象メニューの形式?(buttonやtoggleButtonはわかりやすい・・・)
・ Tab:どのタブに存在するか(TabHome > ホームタブなど)
・ Policy ID:グループポリシーに設定するID番号
※ 色々列はありますが、上記だけでもアタリはつけられるかと思います

名前とタブなどから対象の制御メニューを推測し、グループポリシーにID番号を登録していきます。
ユーザーポリシーですので、ログオフ/ログオンで反映されます。
グループポリシーに登録できるのはID番号だけですので、コメントなどは入力できません。
このため、何の制御を実施しているのかなどは別途管理資料などで整理することになります。
複雑な管理になればなるほどExcelなど別資料管理が煩雑になります・・・・・。

今回は特別な事情でやむにやまれず、という中で設定したのですが
なるべくならば控えたほうが管理者側は気が楽です。
上記リストは製品のSPなどが出る度に更新されそうですので、更新情報にも気を配ったほうが良さそうです。

Outlook2013でExchangeキャッシュモードを強制

ExchangeとOutlookを使用している環境によっては、キャッシュモード
もしくはオンラインモードをユーザーに対して強制したい場合があります。

  • オンラインモード:
    直接Exchangeのメールボックスデータをクライアントのメモリに読み込んで表示される。
  • キャッシュモード:
    クライアントローカルのOSTファイルにデータがキャッシュされ、サーバーのメールボックス情報は逐次OSTファイルに対して同期される。ユーザーはOSTファイルのメールを表示・編集する。

設定を矯正する場合は、グループポリシーもしくはレジストリで実現可能です。

  • グループポリシーの場合
    ユーザーの構成 > ポリシー > 管理用テンプレート > Microsoft Outlook 2013
    > アカウントの設定 > Exchange > Exchangeキャッシュモード

    「新規および既存のOutlookプロファイルでExchangeキャッシュモードを使用する」
    有効 >> 適用されたクライアントにキャッシュモードを強制
    無効 >> 適用されたクライアントにオンラインモードを強制

  • レジストリの場合
    HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\15.0\Outlook\Cached Mode

    値の名前:Enable
    値の種類:REG_DWORD
    値のデータ:(1:キャッシュモードが強制、0:オンラインモードが強制)

グループポリシーの場合は、適用されるとアカウント設定の「Exchange キャッシュモードを使う」がグレーアウトされ、ユーザーではモードの変更ができませんので強制が可能です。
レジストリの場合は、適用されてもグレーアウトされません。初期設定は強制されますが、Outlook起動後はユーザーの手で変更することも可能です。

なお、ローカルに保存されたOSTファイルはモードを強制的に切り替えただけでは削除されません。使用しているOutlookプロファイルに紐付いて削除される形です。