👌

Set-MsolDirSyncEnabled の代替となるコマンドを試してみた

2024/06/03に公開

TL;DR

  • Set-MsolDirSyncEnabled は非推奨になった
  • Update-MgBetaOrganization とかがその代替になる
  • Microsoft.GraphMicrosoft.Graph.Beta の module をインストールすると tab 補完が遅くなる。。

はじめに

Azure Virtual Desktop (AVD) の検証などで、Active Directory (AD) + Microsoft Entra Connect (旧: Azure AD Connect) の構成を作ったり壊したりします。
で、壊す際には一応 Microsoft Entra ID に登録されるユーザーを消しておきたいな、という気持ちになるのですが、そのためには先に Microsoft Entra Connect の設定を外す必要があります。
で、昔から Set-MsolDirSyncEnabled というコマンドを使っていたわけですが、やっとそれの次世代版が出て、使ってみたよ、というやつです。

Set-MsolDirSyncEnabled

docs は https://learn.microsoft.com/en-us/powershell/module/msonline/set-msoldirsyncenabled です。
この cmdlet を使うためには MSOnline という module を入れるんですが、2024 年 3 月 30 日の時点から非推奨になることが MSOnline Module の冒頭で宣言されています。
なのですが、じゃあその代替になるものがなかなか出てきていませんでした。

Update-MgBetaOrganization とか

ということで出てきたのが Update-MgBetaOrganization をはじめとするコマンド群です。
docs は Microsoft 365 のディレクトリ同期をオフにする です。
ちょっと生 API を叩いてる感が強いというか、login して、body 用の params object を作って、投げ込む、という感じです。
先日試したところちゃんと動いていたので、とりあえず Set-MsolDirSyncEnabled の代替というか、これを使っていけばいいんだな、というものが決まって安心です。

で、問題点としては、これを使うために Microsoft.GraphMicrosoft.Graph.Beta という module をインストールした です。
おそらくこの module に含まれている cmdlet が多すぎるのか、tab による補完にやや長い時間がかかるようになります。

なのですが、PowerShell の新しいウィンドウを開いた場合、新しいセッションの場合、Get-InstalledModule で出てくる module を一旦すべて Import-Module 相当の動作をしているのか、とにかく遅くなります。。
遅いといっても秒単位で終わるのですが、いつものスピードの 3 倍くらいかかっている印象なのでやや辛いです。。。

で、じゃあ使い終わったら消すか、という話なんですが、これまた Microsoft.GraphMicrosoft.Graph.Beta の間の依存関係が複雑なのか、Uninstall-Module でもなかなかすんなり消えません。。
ので、念のためすべての PowerShell セッションを閉じた後に、Documents\PowerShell\Modules を見て、それっぽいフォルダを全部削除しました。。
ちゃんとしたトラブルシュートは気分がのったらまたやります。。

おわりに

Set-MsolDirSyncEnabled を長らく使っていましたが、MSOnline module が非推奨になるため、これからは Microsoft.GraphMicrosoft.Graph.Beta で提供される Update-MgBetaOrganization などのコマンドを使っていきましょう。

Discussion