Get-PsIntuneAzureADDevices.ps1
function Get-psIntuneAzureADDevices { <# .SYNOPSIS Return AzureAD device accounts .DESCRIPTION Return all AzureAD tenant device accounts .PARAMETER UserName Account for logging into AzureAD .EXAMPLE Get-psIntuneAzureADDevices .NOTES Name: Get-psIntuneAzureADDevices .LINK https://github.com/Skatterbrainz/ds-intune/blob/master/docs/Get-psIntuneAzureADDevices.md #> [CmdletBinding()] param ( [parameter()][string]$UserName = $($global:psintuneuser), [parameter()][switch]$ShowProgress ) try { if ([string]::IsNullOrEmpty($UserName)) { throw "username was not provided" } #Get-psIntuneAuth -UserName $UserName if ($null -eq $global:aadauth) { $global:aadauth = Connect-AzureAd -AccountId $UserName -ErrorAction Stop } if (!$aadauth) { throw "AzureAD authentication was not completed" } Write-Host "Requesting devices from Azure AD tenant" -ForegroundColor Cyan $aadcomps = Get-AzureADDevice -All $True $acount = $aadcomps.Count $dx = 1 Write-Host "Returned $($acount) devices from Azure AD" -ForegroundColor Cyan $aadcomps | Foreach-Object { $devname = $_.DisplayName $owner = $null $upn = $null if ($ShowProgress) { Write-Progress -Activity "Querying $acount AzureAD devices" -Status "Reading device $dx of $acount : $devName" -PercentComplete $(($dx/$acount)*100) -id 1 } $devUserId = $($_.DevicePhysicalIds | Where-Object {$_ -match '\[USER\-GID\]'}) if ($null -ne $devUserId) { $userGUID = $devUserId.Split(':')[1] $user = $null try {$user = Get-AzureADUser -ObjectId $userGUID -ErrorAction SilentlyContinue} catch {} if ($null -ne $user) { $owner = $user.DisplayName $upn = $user.UserPrincipalName } } Write-Verbose "reading properties for: $devname" $llogin = $_.ApproximateLastLogonTimeStamp if (![string]::IsNullOrEmpty($llogin)) { $xdaysOld = (New-TimeSpan -Start $([datetime]$llogin) -End (Get-Date)).Days } else { $xdaysOld = $null } if (![string]::IsNullOrEmpty($_.LastDirSyncTime)) { $xSyncDays = (New-TimeSpan -Start $([datetime]$_.LastDirSyncTime) -End (Get-Date)).Days } else { $xSyncDays = $null } [pscustomobject]@{ Name = $devname DeviceId = $_.DeviceId ObjectId = $_.ObjectId Enabled = $_.AccountEnabled OwnerName = $owner OwnerUPN = $upn OSName = $_.DeviceOSType OSVersion = $_.DeviceOSVersion TrustType = $_.DeviceTrustType LastLogon = $_.ApproximateLastLogonTimeStamp LastLogonDays = $xdaysOld IsCompliant = $($_.IsCompliant -eq $True) IsManaged = $($_.IsManaged -eq $True) DirSyncEnabled = $($_.DirSyncEnabled -eq $True) LastDirSync = $_.LastDirSyncTime LastSyncDays = $xSyncDays ProfileType = $_.ProfileType } $dx++ } } catch { Write-Error $_.Exception.Message } } |