Všichni správici firemních sítí známe situaci, kdy potřebujeme vyhledat zařízení, které jsme vyloučili ze sítě, abychom jeho účat zakázali. Pokud máme souběžně, ať synchronizované, či ne, lokální AD a Azure AD, je vhodné vyřadit soukromá zařízení uživatele, který opustil firmu, nebo takové zařízení, které bylo uživatli zcizeno, či jej uživatel ztratil nebo nahradil. Následující skript řeší problém, který není řešitelní v Azure AD online konzoli, protože zatím (začátek června 2020) nelze podle vlastníka zařízení filtrovat. V článku poskytnutý skrit do dokáže a dokáže rovněž rovnou soukromá zařízení uživatele zakázat všechna jedním příkazem.
Pokud by jste chtěli takto zakázat např. firemní notebook, budete muset vynechat filtrování, které ze všech zařízení eliminuje právě ta, která jsou součástí našeho lokálního AD.
<#
Skript vypíše jména všech nedoménových zařízení, která má zadaný uživatel registrovaná v Azure AD.
Volitelně dokáže zakázat všechna zařízení, která má daný uživatel registrované a nejsou doménová.
Autor nenese žádnou odpovědnost za případné škody, uživatel je povinen před spuštěním se seznámit se
skriptem!
Požadavky:
- PowerShell verze 5 a novější
- Admin oprávnění pro přístup k Azure AD
- ExcutionPolicy set to RemoteSigned
Petrásek Jan
©2020
#>
#kontrola přítomnosti modulu, jeho případná aktulizace či doinstalace
if((get-module -Name AzureAD) -eq $null)
{
Install-Module -Name AzureAD -force
import-module AzureAD
}else
{
if((get-module -Name AzureAD | select Version) -le 2.0.2.76)
{
Update-Module AzureAD
}
import-module AzureAD
}
#přihlášení k Azure AD a MSonline service
$Credential = Get-Credential
Connect-AzureAD -Credential
$Credential
Connect-MsolService -Credential
$Credential
#načtení vstupních inforamce
$domena = (Get-ADComputer -Filter * | select Name)
$PC = Read-Host -Prompt "Zadejte email uživatele: "
#nalezení zařízení registrovaných uživatelem
$zarizeni = Get-MsolDevice -RegisteredOwnerUpn $PC | select DisplayName
#vybrání pouze nedoménových zařízení
$zobraz
foreach($DisplayName in $zarizeni)
{
foreach($Name in $domena)
{
if($DisplayName -ne $Name)
{
if($DisplayName -ne $zobraz)
{
$zobraz = $DisplayName
}
}
}
}
#$zobraz | Format-Table - kontrolní zobrazení
#finální zobrazení informace o zařízeních
Get-MsolDevice -All | where DisplayName -like $zobraz.DisplayName | select DisplayName, DeviceObjectVersion, DeviceOsType, DeviceOsVersion, LastDirSyncTime
#možnost zařízení zakázat
$volba = 0
Write-Host 'Pro zakázání zařízení zadejte 1'
Write-Host 'Pro ponechání povoleného zařízení zadejte 0'
$volba = Read-Host -Prompt 'Chcete zařízení zakázat? (1/0): '
$zakaz = Get-MsolDevice -All | where DisplayName -like $zobraz.DisplayName | select DeviceId
if($volba -eq 1)
{
foreach($DeviceId in $zakaz)
{
Disable-MsolDevice -DeviceId $zakaz.DeviceId -Force
}
Write-Host 'Zařízení byla zakázána'
}
else
{
Write-Host 'Žádná změna na zařízeních nebyla provedena'
}