読者です 読者をやめる 読者になる 読者になる

Exchange 学習帳

ExchangeやOffice 365の備忘録です。

PowerShellを使いこなしたい① 超基礎編

こんにちは、4回目の記事です。

突然2日連続です。

 

オンプレ/Online問わず、Exchange環境の構築、運用にPowerShellの利用が不可欠です。
膨大なオブジェクトの作成、編集や、そもそもGUIでは管理できない項目もあります。

そこで今回は、PowerShellを使うときに覚えておきたい基本的な機能や、個人的によく使う機能をまとめてみました。


●インテリセンス(補完)機能
PowerSHellでは途中までコマンドを入力して[Tab]キーを押すと、自動的にコマンドを補完してくれます。

例えば、

Get-Mail

まで入力して[Tab]キーを押下すると、

Get-Mailbox

と補完します。


パラメーターも同様に補完してくれます。

Get-Mailbox -id

まで入力して[Tab]キーを押下すると、

Get-Mailbox -Identity

と補完します。

これだけでコマンドの入力が格段にスピードアップします!


パイプライン
PowerShellでは、あるコマンドで取得した結果を、別のコマンドに渡すことができます。
これを用いると、複数のオブジェクトに対して、更に別の結果を出力させたり、設定変更を加えたりすることができます。

書き方は、コマンドとコマンドの間に「|」をいれるだけです。

よく使うのは、メッセージ追跡ログを取得するときです。


Get-TransportService | Get-MessageTrackingLog -Recipients "user01@contoso.com" -Start "2016/04/07" -ResultSize Unlimited


Get-MessageTrackingLogコマンドは、既定ではコマンドを実行したサーバーに保存されているログのみを対象とします。
ですが、ログはトランスポートサービスの処理が行われたサーバーに保存されるため、必ずしも1つのサーバーに全てのログが保存されるとは限りません。

そこで、Get-TransportServiceコマンドで全てのトランスポートサービスを取得して、パイプで渡します。
こうすることで、存在する全てのメッセージ追跡ログを対象にGet-MessageTrackingLogコマンドを実行できます。

以下は、全てのユーザーメールボックスに対して、仕訳ルールの容量を256KBに変更するコマンドです。


Get-Mailbox -RecipientTypeDetails UserMailbox -ResultSize Unlimited | Set-Mailbox -RulesQuota 256KB

 

●[Format-List]コマンド
Get-Mailboxをはじめ多くのコマンドは、結果を表(Table)形式で出力します。
この場合、表示するパラメーターが制限されたり、値の一部しか表示されなかったりします。

詳細情報を表示するには一覧(List)形式で表示させます。
一覧形式で表示するには、結果をFormat-Listコマンドにパイプで渡すだけです。


Get-Mailbox -Identity "User01" | Format-List


FormatListコマンドにはAliasが設定されていますので、以下でも同じ出力が得られます。便利。


Get-Mailbox -Identity "User01" | fl


なお、パラメーターを絞って表示させるには、以下のように入力します。
パラメーターをカンマ区切りで指定するだけです。


Get-Mailbox -Identity "User01" | fl Alias,DisplayName,Emailaddresses,ServerName,Leg*


ちなみに、パラメーター指定にはワイルドカード(*)も使えます。
[Leg*]の場合、[LegacyExchangeDN]が表示されます。


●[Format-Table]コマンド
Format-Listは一覧(List)形式で表示するコマンドでした。
一方、表(Table)形式で表示するよう明示的に指定することもできます。


Get-Mailbox -Identity "User01" | Format-Table


このコマンドにもAliasがあります。


Get-Mailbox -Identity "User01" | ft


もちろん、パラメーター指定もできます。


Get-Mailbox -Identity "User01" | ft Alias,DisplayName,Emailaddresses,ServerName,Leg*


幅を自動調整するには、-Autoパラメーターです。


Get-Mailbox -Identity "User01" | ft Alias,DisplayName,Emailaddresses,ServerName,Leg* -Auto

 

それではこの辺りで。
今回は超基本的な内容ばかりになってしまいました。
このPowerShellシリーズは今後も続けていきます。
次回は中級編な内容にする予定です。

♯改めて文字に起こしてみると、長い。

今回の参考情報です。

Windows PowerShell でのパイプ処理とパイプライン
https://technet.microsoft.com/ja-jp/scriptcenter/powershell_owner04.aspx

Format-List コマンドレットの使用:
https://technet.microsoft.com/ja-jp/library/ee176830.aspx

Format-Table:
https://technet.microsoft.com/ja-jp/library/hh849892.aspx