EntraID: Zmiana użytkownika przypisanego do urządzenia

Skrypt zmienia użytkownika wyświetlanego jako właściciel urządzenia w EntraID.

PowerShell
#
# Examples:
#
# Set-EntraDeviceOwner -DeviceName "DEV-E-0001" -UserPrincipalName $null
# Set-EntraDeviceOwner -DeviceName "DEV-E-0001" -UserPrincipalName "[email protected]"
#
#

function Set-EntraDeviceUser {
    param(
        [Parameter(Mandatory = $true)][string] $DeviceName,
        [Parameter(Mandatory = $true)][AllowEmptyString()][string] $UserPrincipalName
    )

    $deviceId = (Get-MgDevice -Filter "displayname eq '$DeviceName'").Id

    # Remove owners
    Get-MgDeviceRegisteredOwner -DeviceId $deviceId | Foreach-Object {
        Remove-MgDeviceRegisteredOwnerDirectoryObjectByRef -DeviceId $deviceId -DirectoryObjectId $_.Id | Out-Null
    }

    # Remove users
    Get-MgDeviceRegisteredUser -DeviceId $deviceId | Foreach-Object {
        Remove-MgDeviceRegisteredUserDirectoryObjectByRef -DeviceId $deviceId -DirectoryObjectId $_.Id | Out-Null
    }

    if ($UserPrincipalName) {
        $userObject = Get-MgUser -Filter "userprincipalname eq '$UserPrincipalName'"

        if (!$userObject) {
            Write-Error "User not found"

            return 1
        }

        $userId = $userObject.Id
            
        $params = @{
            "@odata.id" = "https://graph.microsoft.com/v1.0/directoryObjects/$userId"
        }

        New-MgDeviceRegisteredOwnerByRef -DeviceId $deviceId -BodyParameter $params | Out-Null
        New-MgDeviceRegisteredUserByRef -DeviceId $deviceId -BodyParameter $params | Out-Null
    }
}