投稿

PowerShell小ネタ(英語環境のWindows10で日本語が文字化けする)

なんか日本語がちゃんと表示できない Windowsを英語で利用していてPowerShellを使うと、日本語が文字化けします。 解決方法は簡単で、使用フォントを"MS Gothic"に変更すると正しく表示できるようになります。デフォルトの"Consolas"フォントだと日本語がないことが原因で、中国語、韓国語でも同様の事象が出るようです。 reference:  PowerShell Console characters garbled for Chinese, Japanese, and Korean languages on Windows Server 2022 - Windows Server | Microsoft Docs

PowerShell小ネタ(fl, ftに渡した時の...をなんとかしたい)

...で中身がわからん FL 何かGetしてFormat-List (FL) すると、 AuditAdmin : {Update, MoveToDeletedItems, SoftDelete, HardDelete ... } みたいに最後 ... で配列の中身見られないので工夫が要りますが、こういう項目が複数あるときには工夫も面倒なので、 $FormatEnumerationLimit  = 20 と環境変数を指定してからGetするとその数分まで出してくれます。 -1 だと全部出ます。 AuditAdmin : {Update, MoveToDeletedItems, SoftDelete, HardDelete, SendAs, SendOnBehalf, Create, UpdateFolderPermissions, UpdateInboxRules, UpdateCalendarDelegation, ApplyRecord} これをしてからFLにパイプしてさらにOut-Fileすれば作業前の簡易的なバックアップになるかな。 Export-CSVだと配列プロパティ一個一個に工夫が要るので、とりあえず全部取得しておきたいときとかにでも。 FT Format-table (Ft) に渡した場合はカラムの幅が足りなくて ... で切られてしまうことがありますが、out-stringにパイプしてwidthを指定すると切られません。 ただ画面上だと見にくくなるのでこれもOut-Fileとかして見る感じですね。 reference: https://greiginsydney.com/viewing-truncated-powershell-output/#:~:text=It%20might%20be%20that%20the%20object%20you%E2%80%99re%20looking,value%20%E2%80%93%20probably%203%20%E2%80%93%20will%20be%20returned.

Outlook/OWAからメールが削除できない

メールが一切削除できなくなったとき ユーザーからOutlookのゴミ箱からメールが削除できないという問い合わせがあった場合、RecoverableItemsQuotaの上限に達しているかもしれません。 LitiagtionHold(訴訟ホールド)がメールボックスで有効化されている場合、ユーザーが削除したアイテムは実は削除されず、Recoverable Items folderに格納されます。 これはメールボックスのアイテムの保全と、管理者が必要になった際にアイテムを取り出せるようにするための仕組みです。 このRecoverable Items folderの容量がいっぱいになってしまうと、ユーザーはそれ以上アイテムを削除することができなくなったり、見た目上空き容量はあるのにメールボックスが一杯ですという警告が出たりします。 確認 確認方法は以下の通りExchange PowerShell moduleのcmdletから。 Get-MailboxStatistics abc |fl TotalDeletedItemSize, TotalItemSize TotalDeletedItemSize                 : 30 GB (32,215,605,650 bytes) TotalItemSize                        : 8.5 GB (9,127,218,376 bytes) Get-Mailbox abv |fl ProhibitSendReceiveQuota, RecoverableItemsQuota, RecoverableItemsWarningQuota ProhibitSendReceiveQuota     : 12 GB (12,884,901,888 bytes) RecoverableItemsQuota        : 30 GB (32,212,254,720 bytes) RecoverableItemsWarningQ...

Microsoft製品のエラーメッセージ原文を検索する

現地語のエラーメッセージを送られてきて内容が分からないときとかに Microsoft系製品のエラーメッセージをインターネットで検索するときに日本語よりも英語の方がヒットする件数が当然多いので、日本語のエラーメッセージを検索してもあまり有用な情報が出てこない場合は、以下サイトからそのメッセージの原文を検索できます。 ローカライズされたエラー メッセージの検索 – Microsoft | ランゲージ ポータル 日本語から英語だけでなく、ローカル言語->日本語とかもできる(文字がコピーできれば)はずです。

[EXO] 同期済み移行バッチから個別に何個か別バッチに移したい

何個かだけ原因がよくわからないけど失敗する、けど他の同期済みメールボックスはとりあえず先に移行させたいとき、とか Exchange Sever – Exchange OnlineでHybrid構成をとっていると、オンプレミスからオンラインへのメールボックス移行はしばしば必要になりますし、移行過渡期だからHybrid構成であることも多いと思います。 メールボックスをオンプレミスからオンラインへ移行する際は移行バッチを作成し、そこに多くのメールボックスを含めて移行させることが多いです。 その際、例えば100メールボックス入った移行バッチのうち2個だけが原因がよくわからないエラーが繰り返し起こり、”同期済み”の状態にならないとします。 移行バッチを完了させるためにはそこに含まれるメールボックスがすべて”同期済み”になっている必要がある ため、この状態だといつまで経っても100メールボックスの移行を完了させることができません。 エラーの発生している2メールボックスだけバッチから削除しても良いのですが、そうするとその2つのメールボックスを移行するためには0からメールボックスの同期を行う必要があるため、サイズによっては結構な時間がかかります。 そんなときに使えそうなエラーの発生している2メールボックスだけを、アイテム同期のステータスはそのままに別のバッチに移す方法があり、以下のサイトに記載されています。 The 100 migration batches limit and how to not run into it – Microsoft Tech Community New-MigrationBatch -Name CompletionABC -UserIds EmailAddressOfUserA, EmailAddressOfUserB, EmailAddressOfUserC -DisableOnCopy -AutoStart New-MigrationBatchのオプションで既に他の移行バッチに含まれている移動要求を、新規移行バッチに移す New-MigrationBatch (ExchangePowerShell) | Microsoft Docs メールボックスを移す新規移行バッチ名が...

[PowerShell] "True"や"False"文字列をBooleanに

CSVとかにBoolean型の値を出力すると文字列として”True”や”False”が出力されるので、それを再度インポートしようとすると型が異なるのでエラーになったりします。 文字列なtrue/falseをBooleanやbool型に戻してインポートしましょう。 $HiddenFromAddressListsEnabled = [System.Convert]::ToBoolean($eachline.HiddenFromAddressListsEnabled) Exchangeでアドレス帳への表示・非表示を制御するBooleanなプロパティHiddenFromAddressListsEnabledに出力したCSVから下記戻すようなときの例。 引用・参考: Powershell – Setting Boolean value imported via CSV – Learn Tech Future

AADCを今すぐ同期したい

Azure AD Connect (AADC) サーバーを利用してオンプレミスのオブジェクトをAAD (365) に同期している環境の場合、既定で30分に一回の同期 (AADC -> AAD) が行われますが、いますぐ同期したいときはAADCサーバー上でこちらを実行。 Start-ADSyncSyncCycle -PolicyType Delta 大きな変更を行っていない限り通常差分同期が30分に一回行われるので、それを上記cmdletにより手動実行できます。 参考・引用: PowerShell Basics: How to Force AzureAD Connect to Sync (microsoft.com)