PowerShell で Get-MgUser を使用する方法

Microsoft Graph PowerShell の Get-MgUser コマンドレットは、Microsoft Entra ID 内のすべてのユーザーの詳細を取得します。組織からすべての Microsoft 365 ユーザーまたは特定のユーザーを取得できます。 Microsoft Entra 管理センターまたは Microsoft 365 管理センターですべてのユーザーを取得できますが、PowerShell を使用すると、いつでもより正確に、より多くのことを行うことができます。この記事では、PowerShell で Get-MgUser コマンドレットを使用する方法を学習します。

始める前に

次に進む前に、Microsoft Graph PowerShell をインストールして接続することが重要です。そうしないと、Get-MgUser コマンドレットは機能しません。

推奨読書:PowerShell と GPO を使用してピン留めされたフォルダーをクイック アクセスに追加または削除する方法

Microsoft Graph PowerShell をインストールする

PowerShell を管理者として実行し、Microsoft Graph PowerShell モジュールをインストールします。

Install-Module Microsoft.Graph -Force

重要:エラーや不正確な結果を防ぐために、コマンドレットまたはスクリプトを実行する前に、必ず最新の Microsoft Graph PowerShell モジュール バージョンに更新してください。

Microsoft Graph PowerShell に接続する

正しいアクセス許可を使用して Microsoft Graph PowerShell に接続する必要があります。そうしないと、Get-MgUser コマンドレットを使用してユーザー結果を取得できません。

Connect-MgGraph -Scopes "User.Read.All", "AuditLog.Read.All"

スクリプトを自動的に実行するため、ユーザーの介入なしで接続しますか?証明書ベースの認証またはクライアント シークレットを使用して設定します。詳細については、「Microsoft Graph PowerShell に接続する」の記事を参照してください。

ユーザー情報を取得する

まずは基本的なことから始めましょう。それは、ユーザー情報を取得することです。

単一のユーザー情報を取得する

ユーザー情報を取得するには、 – を使用します。ユーザーIDパラメータを追加し、ユーザー ID を追加します。

Get-MgUser -UserId "944d57a0-0d24-4d55-ac5b-e9b741be9031"

UserPrincipalName を使用してユーザー情報を取得することもできます。

Get-MgUser -UserId "[email protected]"

を追加します。フォーマットリストコマンドレットを使用してプロパティのリストを取得します。

Get-MgUser -UserId "[email protected]" | Format-List

すべてのユーザー情報を取得する

次のコマンドを含む Get-MgUser コマンドレットを実行します。-全てパラメータを使用して、すべてのユーザーを取得します。

注記:常に使用してください-全てすべての結果を取得するにはパラメータを使用します。それ以外の場合は、100 個の項目のみが表示されます。

Get-MgUser -All

すべてのユーザーをカウントするには、測定対象コマンドレットをコマンドに追加します。

Get-MgUser -All | Measure-Object | Select-Object -ExpandProperty Count

ユーザーアカウントのステータスを取得する

ユーザーアカウントのステータスを取得するには、-財産パラメータ (AccountEnabled プロパティを含む)。それ以外の場合、AccountEnabled 値は空と表示されます。

単一ユーザーアカウントのステータスを取得する

単一ユーザーのアカウントステータスを取得します。

Get-MgUser -UserId "[email protected]" -Property Id, DisplayName, UserPrincipalName, AccountEnabled | Select-Object Id, DisplayName, UserPrincipalName, AccountEnabled

すべてのユーザーのアカウントステータスを取得する

すべてのユーザーアカウントのステータスを取得します。

Get-MgUser -All -Property Id, DisplayName, UserPrincipalName, AccountEnabled | Select-Object Id, DisplayName, UserPrincipalName, AccountEnabled

いつでも追加できます-フィルターパラメータを使用して、有効なアカウントのみを取得します。

Get-MgUser -All -Filter "accountEnabled eq true" -Property Id, DisplayName, UserPrincipalName, AccountEnabled | Select-Object Id, DisplayName, UserPrincipalName, AccountEnabled

または、無効なユーザー アカウントのみをフィルターします。

Get-MgUser -All -Filter "accountEnabled ne true" -ConsistencyLevel eventual -CountVariable CountVar -Property Id, DisplayName, UserPrincipalName, AccountEnabled | Select-Object Id, DisplayName, UserPrincipalName, AccountEnabled

Get-MgUser コマンドレットからユーザー プロパティ情報を取得するために追加できるプロパティを確認するには、Microsoft ドキュメント テーブル

すべてのクラウド ユーザーを取得する

ハイブリッド環境を使用している場合、ユーザーはオンプレミス AD から Microsoft Entra ID に同期されます。オンプレミス AD はドメイン権限であり、そこでユーザーを作成する必要があります。ただし、組織内にはクラウドで直接作成されたユーザーが存在する可能性があります。

ゲストを含むすべてのクラウド ユーザーを取得する

クラウド ユーザーのみをフィルターしましょう。これにはゲスト アカウントも含まれます。

注記:を使用します。-フィルターパラメータを使用して、それはですオペレーター。このリクエストはデフォルトではサポートされていません。それはです演算子は高度なクエリでのみサポートされます。したがって、次を追加する必要があります。一貫性レベルヘッダーを「evenual」に設定し、カウント変数クエリ文字列。

Get-MgUser -All -Filter "OnPremisesSyncEnabled ne true" -ConsistencyLevel eventual -CountVariable CountVar

ゲストを除くすべてのクラウド ユーザーを取得します

ここで、ゲスト アカウントを含まないクラウド ユーザーのみをフィルター処理してみましょう。

Get-MgUser -All -Filter "OnPremisesSyncEnabled ne true and UserType eq 'Member'" -ConsistencyLevel eventual -CountVariable CountVar

すべてのクラウド ゲスト ユーザーを取得する

クラウド内のゲスト ユーザーのみをフィルターします。

Get-MgUser -All -Filter "OnPremisesSyncEnabled ne true and UserType eq 'Guest'" -ConsistencyLevel eventual -CountVariable CountVar

ライセンスを持つユーザーを取得する

すべてのユーザーがライセンスを取得しているわけではありません。テナントにはライセンスを持つユーザーとライセンスを持たないユーザーがいます。どのユーザー アカウントにライセンスが割り当てられているか、誰にライセンスが割り当てられていないかを正確に知るために、それに基づいて具体的にフィルターをかけることができます。

ライセンスを持つすべてのユーザーを取得する

ライセンスを付与されたユーザーのみをフィルターします。

Get-MgUser -All -Filter "assignedLicenses/`$count ne 0 and userType eq 'Member'" -ConsistencyLevel eventual -CountVariable Records

ライセンスのないユーザーをすべて取得する

ライセンスのないユーザーのみをフィルターします。

Get-MgUser -All -Filter "assignedLicenses/`$count eq 0 and userType eq 'Member'" -ConsistencyLevel eventual -CountVariable Records

ライセンスを付与されたユーザーとブロックされたユーザーをすべて取得する

ユーザーをブロックしても、ユーザーにはライセンスが残っています。ブロックされているすべてのユーザーにライセンスを取得しましょう。

Get-MgUser -All -Filter "assignedLicenses/`$count ne 0 and accountEnabled eq false" -ConsistencyLevel eventual -CountVariable Records

オンプレミスで同期されたユーザーを取得する

クラウドに同期されているオンプレミス ユーザーのみを取得し、表示名に基づいて並べ替えます。

Get-MgUser -All -Filter "OnPremisesSyncEnabled eq true" | Sort-Object DisplayName

ユーザーのマネージャーを取得する

すべてのユーザーにマネージャーがいるわけではありませんが、一部のユーザーにはマネージャーがいます。私たちは、ユーザーまたはすべてのユーザーのマネージャーを知りたいと考えています。

単一ユーザーのマネージャーを取得する

単一ユーザーの管理者が誰であるかを確認してみましょう。

以下のコマンドレットを実行して単一ユーザーのマネージャーを取得しても、マネージャーは表示されません。

Get-MgUser -UserId "[email protected]" | Select-Object DisplayName, Manager

値 Microsoft.Graph.PowerShell.Models.MicrosoftGraphDirectoryObject が表示されていることがわかります。

DisplayName   Manager
-----------   -------
Amanda Morgan Microsoft.Graph.PowerShell.Models.MicrosoftGraphDirectoryObject

それは、を追加する必要があるためです。-ExpandPropertyパラメータ。

Get-MgUser -UserId "[email protected]" -ExpandProperty Manager | Select-Object @{Name = 'Manager'; Expression = { $_.Manager.AdditionalProperties.mail } }

もう 1 つの方法は、Manager プロパティを変数に保存して表示することです。

$user = Get-MgUser -UserId "[email protected]" -ExpandProperty Manager
$user.Manager.AdditionalProperties.mail

すべてのユーザーのマネージャーを取得する

どのマネージャーがどのユーザーに割り当てられているかを知るには、すべてのユーザーとそのマネージャーのリストを取得できます。

Get-MgUser -All -ExpandProperty Manager | Select-Object UserPrincipalName, @{Name = 'Manager'; Expression = { $_.Manager.AdditionalProperties.mail } }

表示名で始まるユーザーを取得する

追加できるのは、で始まる演算子を使用して、表示名で始まるすべての結果を取得します。

Get-MgUser -All -Filter "startsWith(DisplayName,'Amanda')"

単語の代わりに文字を追加することもできます。

Get-MgUser -All -Filter "startsWith(DisplayName,'A')"

メールアドレスで終わるユーザーを取得する

を追加します。で終わる演算子を使用して、特定のメール アドレスで終わるすべてのユーザーを取得し、表示名で並べ替えます。

Get-MgUser -All -Filter "endsWith(mail,'exoip.com')" -Sort "displayName" -ConsistencyLevel eventual -CountVariable CountVar

特定のメール アドレスで終わる両方のドメインを検索します。

Get-MgUser -All -Filter "endsWith(mail,'exoip.com') or endsWith(mail,'tajran.com')" -Sort "displayName" -ConsistencyLevel eventual -CountVariable CountVar

ユーザー プリンシパル名で終わるユーザーを取得する

を追加します。で終わる演算子を使用して、特定の UserPrincipalName で終わるすべてのユーザーを取得し、表示名で並べ替えます。

Get-MgUser -All -Filter "endsWith(userprincipalname,'exoip.com')" -Sort "displayName" -ConsistencyLevel eventual -CountVariable CountVar

ユーザーのサインインアクティビティを取得する

ユーザーが最後に正常にサインインした時刻に基づいてフィルターすることをお勧めします。したがって、アカウントが使用されているかどうかを把握できます。

シングル ユーザー サインイン アクティビティを取得する

単一ユーザーのサインイン アクティビティを確認します。

Get-MgUser -UserId "944d57a0-0d24-4d55-ac5b-e9b741be9031" -Property SignInActivity | Select-Object -ExpandProperty SignInActivity

UserPrincipalName を使用する場合は、-ユーザーIDパラメータを指定するとエラーが発生します。すべての物件がそれを受け入れているわけではないからです。

Get-MgUser_Get: Get By Key only supports UserId and the key has to be a valid Guid

Status: 400 (BadRequest)
ErrorCode: 400

代わりにできることは、2 番目の Get-MgUser コマンドレットで UserId を取得し、それを最初の Get-MgUser コマンドレットに追加することです。

Get-MgUser -UserId (Get-MgUser -UserId "[email protected]").Id -Property SignInActivity | Select-Object -ExpandProperty SignInActivity | fl

結果が表示されます。

LastNonInteractiveSignInDateTime  : 20/01/2024 05:23:30
LastNonInteractiveSignInRequestId : 27e83e67-4c1c-4f74-babb-a55791680900
LastSignInDateTime                : 19/01/2024 11:31:20
LastSignInRequestId               : 6f659c53-cf13-4b7d-9fe5-93c6f9a52100
LastSuccessfulSignInDateTime      : 20/01/2024 05:23:30
LastSuccessfulSignInRequestId     : 27e83e67-4c1c-4f74-babb-a55791680900
AdditionalProperties              : {}

すべてのユーザーのサインイン アクティビティを取得する

すべてのユーザーが最後に成功したサインインの日時を取得し、出力を別のウィンドウの対話型テーブルに送信します。アウトグリッドビューコマンドレット。

Get-MgUser -All -Property Id, UserPrincipalName, DisplayName, SignInActivity | Select-Object Id, UserPrincipalName, DisplayName, @{Name = 'LastSuccessfulSignInDateTime'; Expression = { $_.SignInActivity.LastSuccessfulSignInDateTime } } | Out-GridView -Title "Last successful sign-in date"

会社名でユーザーを取得する

組織内で異なる会社名を持つことができます。どのユーザーがどの会社に属しているかを把握したり、特定の会社にフィルターをかけて結果を絞り込んだりすると便利です。

単一ユーザーの会社名を取得する

1 人のユーザーの会社名を取得します。

Get-MgUser -UserId "[email protected]" -Property DisplayName, UserPrincipalName, CompanyName | Select-Object DisplayName, UserPrincipalName, CompanyName

全ユーザーの会社名を取得

会社名を含むすべてのユーザー アカウントを取得します。

Get-MgUser -All -Property DisplayName, UserPrincipalName, CompanyName | Select-Object DisplayName, UserPrincipalName, CompanyName

を追加します。-フィルターパラメータとで始まる演算子を使用して、特定の会社名で始まるすべての結果を取得します。

Get-MgUser -All -Property DisplayName, UserPrincipalName, CompanyName -ConsistencyLevel eventual -Count userCount -Filter "startsWith(CompanyName, 'Exo')" | Select-Object DisplayName, UserPrincipalName, CompanyName

使用できます-検索パラメータを使用して会社を検索し、結果を取得します。

Get-MgUser -All -Search "CompanyName:Exoip" -ConsistencyLevel eventual

会社名とアカウントが有効になっているユーザーを取得する

を追加します。-検索パラメータを使用して会社名と-フィルターパラメーターを使用して、有効なアカウントのみを取得します。

Get-MgUser -All -Filter "accountEnabled eq true" -Search "CompanyName:Exoip" -ConsistencyLevel eventual

PowerShell スクリプトに Get-MgUser コマンドレットを追加する方法を理解するには、PowerShell スクリプトの例を確認するのが最適です。

  • PowerShell を使用して CSV から Microsoft Entra ID ユーザーを作成する
  • PowerShell を使用して Microsoft Entra ID ユーザーを CSV にエクスポートする
  • 共有メールボックスからのサインインをブロックする
  • PowerShell を使用して Microsoft 365 のユーザーを強制的にサインアウトする
  • Microsoft Entra でアプリケーションからアクセス許可を削除する方法
  • Microsoft 365 の無効なユーザー レポートをエクスポートする
  • Microsoft 365 の非アクティブ ユーザー レポートをエクスポートする

結論

PowerShell で Get-MgUser を使用する方法を学習しました。 Get-MgUser コマンドレットは、Microsoft Entra ID および Microsoft 365 からユーザーを取得するための優れたコマンドレットです。特定のパラメーターを使用するか、それらを組み合わせて、結果の表示方法に応じて検索結果をフィルター処理します。

この記事は楽しかったですか?条件付きアクセス ポリシーをエクスポートする方法もお勧めします。ぜひフォローしてこの記事をシェアしてください。

Related Posts