科学の箱

科学・IT・登山の話題

Exchange

Exchange Management shellを便利に利用するためのメモ

投稿日:

Exhchage Management ShellはExchangeサーバーで利用できるPowershellのコマンドの集合で、GUIから実行できる操作をコマンドラインで利用できる。コマンドラインで利用できるから、一回スクリプトを作成できれば繰り返し実行できるし、スケジュールに組み込むこともできる。また引数を変えることにより同じ操作を異なったユーザーやメールボックスに対して実行できる。

便利なEMSであるがローカルのシェル画面から利用しているだけでは拡張性がなく、手間もかかる。ここではシステム管理上で起きるシナリオをいくつか考えて覚えておくべき操作方法をまとめておく。

ここでカバーするのは以下の範囲である。

  • パイプライン
  • フォーマット
  • コマンドラインからの実行
  • 引数のやりとり
  • リモートからの実行

パイプにより複数のcmdletを組み合わせることができる。一つのユーザーに対していくつかの属性を見たいときには、複数のcmdletを実行しなければいけない。コマンドラインから実行できればバッチファイルにおけるWindowsコマンドや他のスクリプト言語と組み合わせることができる。同じ操作でも異なった対象に実行したいので引数のやり取りは重要である。またリモートから実行できればわざわざExchangeサーバーにRDPでログインする必要がなくなる。

パイプラインについてはこちらを参照する。

Get-Mailbox USER_ID | 
  Select-Object DisplayName, IssueWarningQuota, ProhibitSendQuota, 
    @{label="TotalItemSize(MB)";expression={(Get-MailboxStatistics $_).TotalItemSize.Value.ToMB()}}, 
    @{label="ItemCount";expression={(Get-MailboxStatistics $_).ItemCount}}, Database | 
  Export-Csv "C:\Scripts\UserMailboxSizes.csv" -NoTypeInformation

USER_IDは取得したいユーザーのログインIDにする。上記コマンドは3つのコマンドを組み合わせている。Get-Mailboxで対象ユーザーのメールボックスの属性を取得する。パイプでSelect-Objectに引き渡している。ここでよくみるとSelect-ObjectでさらにGet-MailBoxStatisticsを利用している。Get-MailBoxStatisticsには $_が引き渡されている。$_はパイプラインで送られてきたオブジェクトに関する情報が入っている。Get-MailboxStatisticsはこの情報を利用して、さらに統計情報を取得している。次のパイプラインではcsvファイルに出力する。

フォーマットについては以下を参照してほしい。こちらではステップbyステップでほしい形式のデータを取得するための方法が記載されている。

Exchange 2010 – Get-MailboxStatistics like I want it

コマンドラインからの実行については下記にスクリプトを記載した。

exscript01.bat

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe 
  -psconsolefile "C:\Program Files\Microsoft\Exchange Server\V14\Bin\exshell.psc1" 
  -file "C:\script\getquotalimit.ps1" %1

powershellを呼び出す。このときexshell.psc1というコンソールファイルを指定する。コンソールファイルはpowershell起動時にコンソールを拡張するもので、exshell.psc1を読むことによりExchangeサーバーに対してcmdletを発行できる環境を整えている。exshell.psc1なしではデフォルトで提供されているcmdletは実行できるが、exhcnageサーバー特有のcmdletは実行できない。-file引数では実行したps1ファイルを指定する。

引数としてUser IDを渡せるようにしてある。User IDは一番目の引数であるので%1としてそのままgetquotalimit.ps1に渡している。

getquotalimit.ps1

param($userid="yamada")
get-mailboxStatistics $userid | 
  format-list StorageLimitStatus, totalitemsize, totaldeleteditemsize, itemcount, deleteditemcount

親バッチから渡された引数を$userid変数に格納する。もし値がなければデフォルト地として”yamada”を入れている(この値に意味はない)。引数を利用してget-mailboxstatisticsを実行すると下記のような結果が得られる。

C:\Users\jpmasadm>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -psc
onsolefile "C:\Program Files\Microsoft\Exchange Server\V14\Bin\exshell.psc1" -fi
le "C:\script\getquotalimit.ps1" tanaka

Name           Used (GB)     Free (GB) Provider      Root
----           ---------     --------- --------      ----
ExScri                           36.91 FileSystem    C:\Program Files\Micros...




StorageLimitStatus   : BelowLimit
TotalItemSize        : 1.85 GB (1,986,920,948 bytes)
TotalDeletedItemSize : 424.6 MB (445,265,792 bytes)
ItemCount            : 23766
DeletedItemCount     : 11515

リモートで実行するための手順は以下で説明されている。

How to Run PowerShell Commands on Remote Computers

残念だが手元の環境ではセキュリティ上の理由でこれ以上は実験できなかった。しかし他のサイトに記述されていることから考えてもほぼ内容は正しいと思われる。

メタ情報

inarticle



メタ情報

inarticle



-Exchange
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

配布リストのExpansionサーバーを確認する。

ExchangeでメールサーバーとExpnansionサーバー間のsmtpゲートウェイの関係が切れたときに、配布リストがExpansionリストを利用していると、あて先には届かなくなる。 配布リストで …

2014年7月
« 6月   8月 »
 123456
78910111213
14151617181920
21222324252627
28293031  

side bar top



アーカイブ

カテゴリー