Zum Inhalt
Kaffeeundcode
Skriptbibliothek
PowerShell 06.10.2026

PowerShell

Clean StaleDevices

75_Clean-StaleDevices.ps1

<#
.SYNOPSIS
    Bereinigt inaktive Geräte (Löschen).

.DESCRIPTION
    <!-- library-status:start -->
    Prüfstatus: Ungeprüft
    Windows- und Tenant-Abnahme ausstehend; keine pauschale Produktionsfreigabe.

    <!-- library-status:end -->

    Löscht Geräte, die länger als X Tage inaktiv waren.
    WARNUNG: Destruktive Aktion!
    Erfordert die Berechtigung 'DeviceManagementManagedDevices.ReadWrite.All'.

.NOTES
    File Name: 75_Clean-StaleDevices.ps1
    Author: Mattia Cirillo
    Version: 1.0
#>

param (
    [int]$Days = 90,
    [switch]$Force
)

Connect-MgGraph -Scopes "DeviceManagementManagedDevices.ReadWrite.All"

$Date = (Get-Date).AddDays(-$Days)
$Devices = Get-MgDeviceManagementManagedDevice -Filter "lastSyncDateTime lt $Date"

foreach ($Dev in $Devices) {
    if ($Force) {
        Remove-MgDeviceManagementManagedDevice -ManagedDeviceId $Dev.Id -Confirm:$false
        Write-Host "Gelöscht: $($Dev.DeviceName)" -ForegroundColor Red
    } else {
        Write-Host "Wäre gelöscht (Stale): $($Dev.DeviceName) ($($Dev.LastSyncDateTime))" -ForegroundColor Yellow
    }
}