【Q&Aコーナー】Intuneに登録されたデバイスの名前を一括変更する

Intuneに登録されたデバイスの名前一括変更

企業で管理するデバイスは資産管理の観点から一貫性のあるデバイスの名前を設定し、管理することが考えられると思います。一方で近年のOSはセットアップ中にデバイスの名前を設定せず、ランダムな名前が設定されてしまうため、あとから名前を変更するという憂き目に遭います。Windows Autopilot経由で登録されたデバイスであればデバイスの名前を設定できますが、それでもシリアル番号やランダムな数字のような限定的な変数しか使えなかったりします。

Intuneに登録されたデバイスの名前一括変更

そこで今回はMicrosoft Intuneのデバイス名を変更する機能を利用して、CSVファイルに書かれたデバイス名一覧からまとめて変更する方法について見ていきます。

Windows PowerShellで設定

CSVファイルを用いてまとめて設定すると言ったらPowerShell!
ということでPowerShellでスクリプトを書いてみました。
エラー処理とかは書いてないので、必要であれば適宜付け足して使ってください。
■CSVファイルの内容

OldName,NewName
DESKTOP-TE0K2U4,KSS093001
DESKTOP-TE0LS2O,KSS093002

■デバイス名の変更スクリプト

#Microsoft 365に接続
Connect-MgGraph -Scopes "DeviceManagementManagedDevices.ReadWrite.All","DeviceManagementManagedDevices.PrivilegedOperations.All"

#CSVファイルの情報を取得
$CsvPath = "CSVファイルの場所"
$items = Import-Csv -Path $CsvPath

#デバイスの情報を取得
$allDevices = Get-MgDeviceManagementManagedDevice -All

#名前の変更と同期処理をひとつずつ実行
foreach ($row in $items) {
$candidate = $allDevices | Where-Object { $_.deviceName -and ($_.deviceName -ieq $row.oldname) }

$uri  = "<a href="https://graph.microsoft.com/beta/deviceManagement/managedDevices/">https://graph.microsoft.com/beta/deviceManagement/managedDevices/</a>$($candidate.Id)/setDeviceName"
$body = @{ deviceName = $row.NewName } | ConvertTo-Json

#名前の変更
Invoke-MgGraphRequest -Method POST -Uri $uri -Body $body -ContentType "application/json" | Out-Null

#同期を実行し、再起動を促す
Sync-MgDeviceManagementManagedDevice -ManagedDeviceId $candidate.id | out-null
}

CSVファイルとスクリプトをそれぞれ用意し、実行することでファイルに書かれたデバイスの名前がいっぺんに変わります。ただし、実際の名前変更にはWindowsの再起動が必要となるため、同期を行い、デバイス上で再起動を行うように要請し、それにユーザーが従って再起動した後に反映されることになります。