PowerShell一覧

代理人の設定や非公開の予定を表示する権限を PowerShell で確認する方法

いままでは代理人の設定や非公開の予定を表示するかどうかについては、Outlook や EWS でないと確認ができませんでした。これが Exchange Online の PowerShell でできるように、しれっと機能が強化されています。ただし予定表フォルダー限定です。 例えば EXO の OWA で以下のように代理人と非公開の予定を表示する設定を行ったとします。 そして以下のようにコマンドを実行します。ユーザー名やフォルダー名は適宜読み替えてください。 すると以下のように SharingPermissionFlags に Delegate と CanVie...

Remote PowerShell コマンドの既定の出力内容

2018/08/01 Update 2018 年 5 月ごろより順次 Get-Mailbox コマンドの既定の出力が Name, Alias, Database, ProhibitSendQuota, ExternalDirectoryObjectId に変更されています。 Exchange Online の PowerShell に接続して Get-Mailbox コマンドを実行すると、既定で Name / Alias / ServerName / ProhibitSendQuota の 4 つが出力されているはずです。 Get-Mailbox コマンドの結果を fl する...

NO IMAGE

多要素認証を使用した Exchange Online PowerShell の裏側

TechNet にも記載の通り、Exchange Online に接続する PowerShell で MFA が利用できるようになっています。 Remote PowerShell の制約で OAuth が使えなかったはずですが、動作を見るとどうも OAuth を使っているように見えます。 今回は内部動作を見てみたいと思います。 TechNet に従って Exchange 管理センターからモジュールをダウンロードすると、Microsoft Exchange Online PowerShell というアプリケーションがインストールされています。 このアプリケーションを起動すると Power...

NO IMAGE

Exchange 管理シェルとリモート PowerShell のデータ型の違い

Exchange 管理シェルとリモート PowerShell では、データ型が異なる場合があります。 例えばトランスポート ルールで承認者が設定されている場合は ModerateMessageByUser で確認できます。 Exchange 管理シェルでは、以下の通り System.Array クラスを継承している RecipientIdParameter 型の配列です。 一方、リモート PowerShell では以下の通り ArrayList 型です。 この型の違いが、要素数を取得する際に影響します。 RecipientIdParameter 型の配列では Length プロパ...

NO IMAGE

PowerShell のプロンプトを変更する

PowerShell を利用する際に、コマンドを実行した時刻が記録されると便利だと思うことがあります。 もちろんその都度 Get-Date などを実行してもいいですが、少し面倒です。 そんな時はプロンプト、「PS >」の部分を変更してしまうと便利です。 まずは現在時刻をプロンプトに表示してみましょう。 Exchange 管理シェル風に、色を付けることもできます。 パスが長くなるとコマンドを入力できる文字数が減っていやだというときは、改行してしまうこともできます。 現在のプロンプトの設定を確認するには以下を実行して確認できます。 元に戻すには Powe...

NO IMAGE

Exchange サーバーのバージョン番号と製品名を相互変換する

「この CU のバージョン番号はなんだったか?」や、逆に「このバージョン番号は CU いくつだ?」と思うことが多々あります。もちろん TechNet などにも記載がありますが、わざわざ表示して確認するのも少し面倒。 そこで Get-ExchangeBuildNumber を使用します。使い方は README に書いてある通り、簡単ですね。リポジトリの名前は Get-ExchangeBuildNumber ですが、製品名からバージョン番号を取得する Get-ExchangeBuildNumber と、バージョン番号から製品名を取得する Get-ExchangeProductName が含まれて...

NO IMAGE

Exchange サーバーのビルド番号を取得するスクリプト

Exchange サーバーのビルド番号を取得するスクリプトを作成して GitHub で公開しました。こちらからアクセスできます。動作としては、以下の公開情報を基に作成した定義ファイルの中から、指定された製品バージョンのビルド番号を検索して返します。データは Azure 上に保存しています。新しい CU などが出たら更新していきたいと思っています。 TITLE: Exchange Server 更新プログラム: ビルド番号とリリース日 URL: TITLE: Exchange Server and Update Rollup Build Numbers URL: 簡単に使い方を紹介して...

NO IMAGE

Get-MailboxStatistics コマンドの出力にエイリアスを追加する

Get-MailboxStatistics コマンドを使用するとメールボックスのサイズなどの使用状況を取得することができますが、出力結果にメールボックスのエイリアスが含まれていません。それらしいものは DisplayName くらいです。ですが CSV などに出力するときには一意な値であるエイリアスがあったほうがそのあとが何かと便利です。 そんな時にどうするかというと、以下のようにして一旦メールボックスの情報を変数に入れておき、後から Select コマンドの Expression を使用して出力にエイリアスを追加します。 はじめにパイプを重ねてエラーにならないように処理対...

NO IMAGE

PowerShell でハッシュ テーブルを CSV にエクスポートする

例えば以下のようにハッシュ テーブルを作ったとき、CSV ファイルにエクスポートしたいとします。 パイプで Export-Csv に渡せばいいと思われますが、やってみれば分かる通りそれではきちんと出力されません。そこで、以下のようにします。 GetEnumerator() で型を変えて Select で整形してから、Export-Csv に渡します。Select は Key と Value を取得すればデータとしては問題ないですが、CSV にするときにヘッダーをあらかじめ指定しておいたほうがラクなので Select で指定してしまいます。「N」は「Name」の、「E」は「Expre...

NO IMAGE

SmtpClient を使って PowerShell でてきとうなメールを送信する

メールのテストをするときなど、大量にメールを送りたい時がありますよね。そんな時は PowerShell を使って SmtpClient でささっとメールを送れば解決します。 でも、差出人とか件名が重複しないようにしたい時ってありますよね。そんな時の PowerShell スクリプトを書いたので、備忘録的に載せておきます。 これを .ps1 ファイルとして保存しして実行したら、てきとうなメールが送信できます。基本的な SmtpClient の使い方は説明しませんが、宛先や SMTP サーバーは適宜変更が必要です。差出人が存在しないドメイン名になるので、ちゃんと受信してくれるか...