Tips on PowerShell modules for managing Stale Devices

This post has been republished via RSS; it originally appeared at: Core Infrastructure and Security Blog articles.

Hi All, Alan here PFE from Italy, trying to give some little tips on how to install the correct PS module in order to use the required cmdlets for Stale Device Management.

 

The article explaining this is: How To: Manage stale devices in Azure AD: https://docs.microsoft.com/en-us/azure/active-directory/devices/manage-stale-devices

 

One day you might wonder why you have all those stale devices in your AzureAD. Well maybe the user changed his/her phone and that old object never got removed from AzureAD. Well yes it is a manual process.

 

A good article explaining the difference between Registered and Joined: Azure AD Join vs Azure AD Device Registration: https://blogs.technet.microsoft.com/trejo/2016/04/09/azure-ad-join-vs-azure-ad-device-registration/

 

To get a list of registered devices you have two options, Azure or Office portals:

  • From Azure portal just click on Azure Active Directory and then navigate to Devices / All Devices
  • From Office portal go to Admin page, scroll down to Admin Centers and click on Azure Active Directory. Click on Devices / All Devices

Information is displayed in various columns, in our case we need Join Type, MDM and Activity.

 

Join Type can be:

  • Azure AD Registered à Single Sign On (SSO) and seamless multi-factor authentication across company cloud applications using personal devices in bring your own device (BYOD) scenarios
  • Azure AD Joined à corporate owned device management for users that primarily use cloud applications
  • Empty à could be a device that configured Outlook Mobile or Authenticator and this created a device registration without Intune enrollment

 

MDM can be:

  • Microsoft Intune à enrolled with Intune
  • None à could be a device that configured Outlook Mobile or Authenticator and this created a device registration without Intune enrollment

 

Activity:

  • This is our great friend. Activity timestamp or ApproximateLastLogonTimestamp (from PS)

Enabled :                        True

DeviceTrustType :          Workplace Joined

DeviceTrustLevel :          Compliant

ApproximateLastLogonTimestamp : 23-Apr-19 06:34:22

 

Recalling the first article we read: “Because a stale device is defined as registered device that hasn't been used to access any cloud apps for a specific timeframe, detecting stale devices requires a timestamp-related property. In Azure AD, this property is called ApproximateLastLogonTimestamp or activity timestamp. If the delta between now and the value of the activity timestamp exceeds the timeframe you have defined for active devices, a device is considered to be stale. This activity timestamp is now in public preview.”

 

So I tried to list all stale devices using the cmdlets listed in the article.

Our firsts command would be:

Get-MsolDevice -all | select-object -Property Enabled, DeviceId, DisplayName, DeviceTrustType, ApproximateLastLogonTimestamp | export-csv x:\AllDeviceSlist-Summary.csv

 

This works great but I had Intune policy set to 90 days so I needed to get all stale devices where the Activity was more than 90 days.

 

$date = get-date -date $(get-date).adddays(-90) -format MM-dd-yyyy

Get-MsolDevice -all -LogonTimeBefore $dt | select-object -Property Enabled, DeviceId, DisplayName, DeviceTrustType, ApproximateLastLogonTimestamp | export-csv c:\DeviceList-olderthan-90days-summary.csv

 

-LogonTimeBefore à this one didn’t work for me even with AzureAD PS module and MSOnline module

 

You need latest module for MSonline version 1.1.183.17

In some cases you could have some trouble installing the latest versions, maybe because of proxy, GPOs, some other strange issue

 

I tried to install latest MSOnline and MSOnlineextened modules but that LogonTimeBefore wasn’t there

I removed and reinstalled AzureAD Powershell module and WIF 5.1 then I tried to reinstall

 

Install-module MSOnline

Install-module MSOnlineextended

 

No luck! LogonTimeBefore wasn’t there

 

I solved by manually downloading, unzipping and importing the modules (.psd1 file)

https://www.powershellgallery.com/packages/AzureAD/2.0.2.26

https://www.powershellgallery.com/packages/MSOnline/1.1.183.17

 

And our cmdlet works great

             

$date = get-date -date $(get-date).adddays(-90) -format MM-dd-yyyy

Get-MsolDevice -all -LogonTimeBefore $dt | select-object -Property Enabled, DeviceId, DisplayName, DeviceTrustType, ApproximateLastLogonTimestamp | export-csv c:\DeviceList-olderthan-90days-summary.csv

 

To remove the stale devices you should use the following, careful that this removes all the Stale Devices found at once

 

Get-MsolDevice -all -LogonTimeBefore $dt | remove-msoldevice -force

 

-force à user is not prompted for confirmation

 

Good idea is to filter on DeviceID or ObjectID and try one by one at first

 

 

Hope this helps you a little on device management

 

Alan@PFE

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.