Microsoft Graph PowerShell でユーザー作成(MSOnline との比較)

こんにちは。サイオステクノロジーの木村です。

こちら の記事によると、今後 MSOnline PowerShell モジュールは非推奨となる予定となっており、MSOnline PowerShell モジュール を使用している場合は、Microsoft Graph PowerShell SDK への移行が推奨されています。
そこで今回は、Microsoft Graph PowerShell SDK で「ユーザーの作成」を行う方法について、MSOnline PowerShell モジュールと比較しながら方法を記載します。

尚、Microsoft Graph PowerShell SDK で「ユーザーのライセンス操作」を行う方法については、以下の記事に記載しておりますので併せてご覧ください。
『Microsoft Graph PowerShell でライセンス操作』

Microsoft Graph PowerShell とは

Microsoft Graph PowerShell は、Microsoft Graph APIのAPIラッパーとして機能し、PowerShell コマンドの実行にて Microsoft Graph API を 呼び出せるようにした PowerShell モジュールです。
公式ドキュメントは こちら

Microsoft Graph PowerShellモジュールのインストール

PowerShell を管理者で起動し、以下のコマンドを実行してインストールします。


 Install-Module Microsoft.Graph

Microsoft Graphへの接続(管理者の資格情報を使用)

Microsoft Graph PowerShell SDK のコマンドを実行するには、まず Microsoft Graph へ接続する必要があります。
管理者の資格情報をもとに Microsoft Graph へ接続する手順は以下になります。

1. PowerShellを起動し、以下のコマンドを実行します。
(パラメータ Scopes には、ユーザーの操作を行うために、User.ReadWrite.All のアクセス許可を指定します。)


 Connect-MgGraph -Scopes "User.ReadWrite.All"

2. サインイン画面が表示されますので、管理者のユーザー名とパスワードを入力し、「サインイン」をクリックします。

3. 「承諾」をクリックします。

4. 認証情報を正しく入力しサインインすると接続が完了します。

5. 以下のコマンドを実行しモジュールのインポートを行います。


 Import-Module -Name Microsoft.Graph.Users

Microsoft Graphへの接続(サービス プリンシパルを使用)

サインイン画面を表示し、管理者の資格情報を入力する方法ですと、画面にアカウント名・パスワードを手入力しなければならず、スクリプトなどで自動で接続を行うことはできません。
以下に記載するサービス プリンシパルを使用する方法では、画面にアカウント名・パスワードを手入力する必要がなく、スクリプトなどで自動で接続することができます。
サービス プリンシパルを使用する方法では、証明書を発行したアプリケーションにアクセス許可を付与し、アプリケーション経由で認証および操作を行います。

アプリケーションの登録

アプリケーションをAzureADに登録します。以下の手順で行います。

1. 管理者でAzureポータル(https://portal.azure.com/)にログインします。

2. メニューより「Azure Active Directory」をクリックします。

3. 「アプリの登録」をクリックし「+新規登録」をクリックします。

4. アプリケーションの登録ページで、以下を入力し「登録」をクリックします。

  • 名前:任意の名称
  • サポートされているアカウントの種類:この組織ディレクトリのみに含まれるアカウント
  • リダイレクトURI(省略可能):Web、テキストボックスは空欄

5. 表示された [アプリケーション (クライアント) ID] と [ディレクトリ (テナント) ID] の値をメモしておきます。

6. 「API のアクセス許可」をクリックし、 「+アクセス許可の追加」をクリックします。

7. 「Microsoft Graph」をクリックします。

8. 「アプリケーションの許可」 をクリックし、[User.ReadWrite.All] を選択して [アクセス許可の追加] をクリックします。

9. <テナント名>に管理者の同意を与えます」をクリックします。

10. 「はい」をクリックします。

11. 状態が「<テナント名>に付与されました」と表示されれば、アプリケーションの登録は完了です。

12. アプリケーションに登録する証明書を用意し、Microsoft Graph に接続する環境にインストールします。
自己証明書を使用する場合は、PowerShell にて、以下のコマンドで自己証明書の作成とインストールができます。


 #証明書の作成
 $mycert = New-SelfSignedCertificate -Subject "<証明書のSubject>" `
   -CertStoreLocation "<証明書ストア>" -NotAfter <有効期限> `
   -KeyExportPolicy Exportable -KeySpec Signature

 #エクスポート(CERファイル)
 $mycert | Export-Certificate -FilePath <CERファイル名>

 #作成した証明書の拇印
 $mycert | Select Thumbprint


 #証明書の作成
 $mycert = New-SelfSignedCertificate -Subject "TestApp01" `
   -CertStoreLocation "cert:\CurrentUser\My" -NotAfter (Get-Date).AddYears(1) `
   -KeyExportPolicy Exportable -KeySpec Signature

 #エクスポート(CERファイル)
 $mycert | Export-Certificate -FilePath ".\mycert1.cer"

 #作成した証明書の拇印
 $mycert | Select Thumbprint

13. 先の手順で登録したアプリケーションのページにて、「証明書とシークレット」をクリックし、「証明書のアップロード」をクリックします。

14. 登録したい証明書を指定し、「追加」をクリックします。

15. アプリケーションに証明書が追加されます。

Microsoft Graphへの接続

PowerShellを起動し、以下のコマンドを実行して接続します。
接続後、ユーザー操作に必要なモジュールをインポートします。


 Connect-MgGraph -Clientid "<登録したアプリのアプリケーション (クライアント) ID>" `
   -TenantId "<アプリを登録したテナントのディレクトリ (テナント) ID>"  `
   -CertificateThumbprint "<証明書の拇印>"

 #必要なモジュールのインポート
 Import-Module -Name Microsoft.Graph.Users


 Connect-MgGraph -Clientid "78ff1c4a-xxxx-0000-xxxx-179f8f1a8013" `
   -TenantId "30377ae5-xxxx-0000-xxxx-4569432250b1" `
   -CertificateThumbprint "1606C825A0000EE0Exxxxxx81462AD8D80xxxxxx"

 #必要なモジュールのインポート
 Import-Module -Name Microsoft.Graph.Users

ユーザー作成

MSOnline PowerShell モジュールでは、ユーザー作成は以下のコマンドにより行います。
 コマンド:New-MsolUser
これに対し、Microsoft Graph PowerShell SDK では、ユーザー作成は以下のコマンドにより行います。
 コマンド:New-MgUser

※ MSOnline PowerShell モジュールのコマンドに対応する Microsoft Graph PowerShell SDK のコマンドについては、こちら の公式ドキュメントに記載があります。

パラメータ

「New-MsolUser」と「New-MgUser」では、パラメータ名に違いがあるものがあります。また、パラメータへ指定する値の型が違い、指定の方法が異なるものもあります。
「New-MsolUser」に対応する「New-MgUser」のパラメータについて下表に記載します。

New-MsolUser New-MgUser
-UserPrincipalName <String> -UserPrincipalName <String>
-BlockCredential <Boolean> -AccountEnabled <SwitchParameter>

※ BlockCredential とは、true/false の意味合いが逆となる。サインイン禁止に指定したい場合は以下のように指定する。
 -AccountEnabled:$False
尚、SwitchParameter のため、true にしたい場合は $true は記載しなくて良い。

-City <String> -City <String>
-Country <String> -Country <String>
-Department <String> -Department <String>
-DisplayName <String> -DisplayName <String>
-Fax <String> -FaxNumber <String>
-FirstName <String> -GivenName <String>
-LastName <String> -Surname <String>
-MobilePhone <String> -MobilePhone <String>
-Office <String> -OfficeLocation <String>
-PasswordNeverExpires <Boolean> -PasswordPolicies  <String>
(DisablePasswordExpiration)
-PhoneNumber <String> -BusinessPhones <String[]>
-PostalCode <String> -PostalCode <String>
-PreferredLanguage <String> -PreferredLanguage <String>
-State <String> -State <String>
-StreetAddress <String> -StreetAddress <String>
-StrongPasswordRequired <Boolean> -PasswordPolicies <String>
(DisableStrongPassword)
-Title <String> -JobTitle <String>
-UsageLocation <String> -UsageLocation <String>
-AlternateEmailAddresses <String[]> -OtherMails <String[]>
-ForceChangePassword <Boolean> -PasswordProfile  <IMicrosoftGraphPasswordProfile>
(forceChangePasswordNextSignIn)
-Password <String> -PasswordProfile  <IMicrosoftGraphPasswordProfile>
(Password)

※ 上記以外にもパラメータはあります。詳細は、以下の各コマンドの公式ドキュメントを参照してください。
 New-MsolUser は、こちら
 New-MgUser は、こちら

実行コマンド例

MSOnline PowerShell モジュールにて、New-MsolUser コマンドでユーザーを作成する際は、例えば以下のようにコマンドを実行します。


 New-MsolUser -UserPrincipalName "sample@xxxxx.onmicrosoft.com" `
  -BlockCredential $false `
  -City "Minato-ku" `
  -Country "日本" `
  -Department "ps" `
  -DisplayName "Sei Mei" `
  -Fax "00-0000-0000" `
  -FirstName "Mei" `
  -LastName "Sei" `
  -MobilePhone "111-1111-1111" `
  -Office "Tokyo" `
  -PasswordNeverExpires $true `
  -StrongPasswordRequired $false `
  -PhoneNumber "22-2222-2222" `
  -PostalCode "106-0047" `
  -State "Tokyo" `
  -StreetAddress "Minamiazabu" `
  -Title "Manager" `
  -UsageLocation "JP" `
  -Password "password" `
  -ForceChangePassword $true;

上記コマンドを、Microsoft Graph PowerShell SDK の New-MgUser コマンドに置き換えると以下のようになります。


New-MgUser -UserPrincipalName "sample@xxxx.onmicrosoft.com" `
 -AccountEnabled `
 -City "Minato-ku" `
 -Country "日本" `
 -Department "ps" `
 -DisplayName "Sei Mei" `
 -FaxNumber "00-0000-0000" `
 -GivenName "Mei" `
 -Surname "Sei" `
 -MobilePhone "111-1111-1111" `
 -OfficeLocation "Tokyo" `
 -PasswordPolicies  "DisablePasswordExpiration,DisableStrongPassword" `
 -BusinessPhones "22-2222-2222" `
 -PostalCode "106-0047" `
 -State "Tokyo" `
 -StreetAddress "Minamiazabu" `
 -JobTitle "Manager" `
 -UsageLocation "JP" `
 -PasswordProfile @{ "Password"="password"; "forceChangePasswordNextSignIn" = $true } `
 -mailNickname "sample";

Microsoft Graphからの切断

以下のコマンドを実行すると、接続を切断できます。


 Disconnect-MgGraph

その他

記載内容は執筆時(2022年5月)時点の情報です。Microsoft Graph PowerShell SDK は、随時機能追加中との情報があるため、今後機能について変更される可能性があります。
『Microsoft Graph PowerShell でライセンス操作』 の記事に記載したように、New-MsolUser コマンドでは、ユーザー作成と同時にライセンスの付与ができていましたが、New-MgUser コマンドでは、現時点ではライセンスの付与ができません。今後の機能の拡充に期待します。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

5人がこの投稿は役に立ったと言っています。

コメントを残す

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