Azure AD 登録済みデバイスのオペレーティング システムのバージョンのレポート

Azure AD 登録済みデバイスのオペレーティング システムのバージョンのレポート

Azure AD 登録済みデバイスで使用されているオペレーティング システムを把握する

Azure AD 登録済みデバイスの拡張属性の設定に関する記事を読んだ後、ある読者から、登録済みデバイスに使用されるオペレーティング システムに関するレポートを作成するのがいかに簡単かと尋ねられました。マイクロソフトは、お客様にWindows 11へのアップグレードを奨励することに多大な努力を払っており、デバイスインベントリが何であるかを知っておくことをお勧めします。もちろん、Intuneのような製品には次の機能があります。 この種の情報を報告するですが、自分で情報を抽出できると、より楽しく(多くの場合、より柔軟になります)。

結局のところ、Microsoft Graphはこの情報がによって取得されたプロパティのセットで報告されるため、登録されたデバイスで使用されるオペレーティングシステムの報告は非常に簡単です。 Get-MGデバイス Microsoft Graph PowerShell SDK のコマンドレット。

Azure AD の登録済みデバイスを報告するための PowerShell スクリプト

以下で説明するスクリプトは、登録されているすべてのデバイスのレポートを作成し、最後のサインイン日で出力を並べ替えます。マイクロソフトはこのプロパティを呼び出します ApproximateLastSignInDateTime.名前が示すように、プロパティには最後のサインインのおおよその日付が格納されます。Azure AD では、誰かがデバイスを使用して接続するたびにプロパティが更新されることはありません。プロパティの更新が発生するタイミングに関する適切なルールがありません。デバイスが使用中であるかどうかを識別する目的で日付がある程度正確であれば十分 (そして概算)、スクリプトはその日付でデバイスを並べ替えます。

過去 6 か月間に Azure AD へのサインインに使用されていない Windows デバイスは、アクティブではない可能性があります。携帯電話は一度サインインすると二度と表示されないように見えるため、これは当てはまりません。テナント用に生成されたレポートには、2015 年 12 月 2 日に最後にサインインした Windows Phone のレコードがまだ含まれています。このデバイスをインベントリから削除しても安全であると結論付けることができると思います。

デバイス所有者の把握

最後のスクリプトでは、 Get-MGデバイス コマンドレット、私はからユーザー識別子を抽出することによってデバイスの所有者を把握しました 物理 ID 財産。このアプローチは機能しますが、複雑です。はるかに良いアプローチは、 Get-MgDeviceRegistered Owner 登録済み所有者の Azure AD アカウントのユーザー識別子を返すコマンドレット。この識別子を使用すると、表示名、ユーザー プリンシパル名、部門、市区町村、国など、意味のある任意のアカウント プロパティを取得できます。組織にとって意味のある他のプロパティを簡単に追加できます。の使用方法の詳細については、この記事を参照してください。 Get-MgUser Azure AD ユーザー アカウントと対話するためのコマンドレット。

オペレーティングシステム情報に関する大きな注意点

登録済みデバイスを使用してオペレーティング システム情報を報告する場合に存在する問題は、正確ではないことです。デバイスについて記録されたオペレーティングシステムの詳細は、登録時点では正確ですが、時間の経過とともに低下します。正確なレポートを生成する場合は、 Microsoft Graph API for Intune.

この警告を念頭に置いて、Azure AD が登録済みデバイスに対して格納するオペレーティング システム情報を報告するコードを次に示します。

Connect-MgGraph -Scope User.Read.All, Directory.Read.All
Select-MgProfile Beta

Write-Host "Finding registered devices"
[array]$Devices = Get-MgDevice -All
If (!($Devices)) { Write-Host "No registered devices found - exiting" ; break }
Write-Host ("Processing details for {0} devices" -f $Devices.count)
$Report = [System.Collections.Generic.List[Object]]::new() 
$i = 0
ForEach ($Device in $Devices) {
  $i++
  Write-Host ("Reporting device {0} ({1}/{2}" -f $Device.DisplayName, $i, $Devices.count)
  $DeviceOwner = $Null
  Try {
    [array]$OwnerIds = Get-MgDeviceRegisteredOwner -DeviceId $Device.Id
    $DeviceOwner = Get-MgUser -UserId $OwnerIds[0].Id }
  Catch {}

  $ReportLine = [PSCustomObject][Ordered]@{
   Device             = $Device.DisplayName
   Id                 = $Device.Id
   LastSignIn         = $Device.ApproximateLastSignInDateTime
   Owner              = $DeviceOwner.DisplayName
   OwnerUPN           = $DeviceOwner.UserPrincipalName
   Department         = $DeviceOwner.Department
   Office             = $DeviceOwner.OfficeLocation
   City               = $DeviceOwner.City
   Country            = $DeviceOwner.Country
   "Operating System" = $Device.OperatingSystem
   "O/S Version"      = $Device.OperatingSystemVersion
   Registered         = $Device.RegistrationDateTime
   "Account Enabled"  = $Device.AccountEnabled
   DeviceId           = $Device.DeviceId
   TrustType          = $Device.TrustType }
  $Report.Add($ReportLine)

} #End Foreach Device

# Sort in order of last signed in date
$Report = $Report | Sort-Object {$_.LastSignIn -as [datetime]} -Descending

$Report | Out-GridView

図 1 は、 アウトグリッドビュー コマンドレット。

Azure AD 登録済みデバイスのオペレーティング システム情報の報告
図 1: Azure AD 登録済みデバイスのオペレーティング システム情報の報告

不完全なヘルプ

このスクリプトが誰かに役立つかどうかはわかりません。それは質問に対する不完全な答えです。ただし、不完全な回答でも、適切な状況では役立つ場合があります。結局のところ、それは単なるPowerShellなので、好きなようにコードを使用してください。


Microsoft 365 テナント管理者が利用できるデータを活用する方法については、 IT プロフェッショナル向け Office 365 電子書籍。私たちは物事がどのように機能するかを理解するのが大好きです。

Office

Posted by admin