Weboldal keresés

A Microsoft Forces Move from Azure AD-parancsmagok a licenckezeléshez


Egyes parancsmagok 2022-ben leállnak

Néha áldott serendipség tör elő, még a technika világában is. Ez volt a helyzet a TEC 2021 munkamenetemnél, amely a Microsoft Graph használatával foglalkozott az Office 365 bérlők kezelésében (online elérhető), amikor a Microsoft Graph PowerShell SDK-ról beszéltem. A szervezőcsapat előre rögzítette a TEC-munkameneteket a konferencia zökkenőmentes lebonyolítása érdekében, így nem tudtam használni azt a példát, amely az ölembe esett, amikor a Microsoft bejelentette, hogy a licenckezeléshez szükséges Azure AD-parancsmagok 2022. június 30-án leállnak. ( 2022. március 15-i frissítés: A Microsoft 2022. augusztus 26-ra tolta ki a nyugdíjba vonulást).

Ez a Microsoft júniusi, az Azure AD Graph jövőjével kapcsolatos felvilágosításának folytatása volt. Dióhéjban, az Azure AD Graph egy régebbi összetevő, amely elkülönül a Microsoft Graphtól, és megszűnik. Az Azure AD és a Microsoft Online Services modulok, amelyek az Azure AD Graphtól függenek, 2022-ben nem támogatott állapotba kerülnek. A modulokban található parancsmagok többsége továbbra is működik, de a licenckezelési parancsmagok 2022. június 30-án nem adnak vissza adatokat, mert a Microsoft áttérés egy új licenckezelési platformra.

Frissítés: A Microsoft 2022 végére tolta az Azure AD és MSOL modulok elavulási dátumát.

Nyilvánvaló, hogy az elavulás visszaüt a sok szkriptre, amelyet az emberek az Azure AD különböző aspektusainak kezeléséhez használnak, és azonnali szükség van a licenckezelési parancsmagok cseréjére, mielőtt leállnának. A Microsoft útmutatása szerint vagy az assignLicense Graph API-t vagy a Set-MgUserLicense parancsmagot kell használni a Microsoft Graph PowerShell SDK-ból.

Frissítés a Microsoft Graph PowerShell SDK-ra

Mennyire nehéz lehet kicserélni egy Azure AD-parancsmagot, és lecserélni egy SDK-parancsmagra? A felszínen a cserének egyszerűnek kell lennie, de mint általában, ez az észlelés körülbelül öt percig tart. Legalábbis erre jöttem rá, amikor frissítettem a szkriptemet, hogy eltávolítsam egyetlen szolgáltatási tervet egy Office 365 SKU-ból (termékből) több fiókhoz. Ez a szkript Azure AD-hívásokat használ a licencinformációk feldolgozásához, így jó példa arra, hogy milyen típusú szkripteket érint a jövő júniusi határidő.

Az első probléma, amellyel találkoztam, az SDK-parancsmagok dokumentációja. Ha jól értem a helyzetet, a Microsoft a dokumentáció nagy részét a kódból állítja elő, ami a szöveg néhány furcsa megfogalmazását és a szöveg teljes érthetetlenségét magyarázza. Természetesen keserűen felnyögtem, és némi tapogatózás után néhány hasznos tippet fedeztem fel, amelyek a helyes irányba mutatnak.

A frissítés lépései

A Microsoft Graph PowerShell SDK támogatja a delegált és a csak alkalmazásokra vonatkozó hitelesítést. Ebben a példában delegált hozzáférést fogunk használni a hozzáférési jogkivonat Azure AD-ből való lekéréséhez, főleg azért, mert ez történik a szkript Azure AD-alapú verziójában. Vázlatosan az alábbiakban ismertetjük a kód frissítéséhez szükséges lépéseket:

Csatlakozás a diagramhoz. A Connect-MgGraph parancsmag csatlakozik a Graphhoz. A csatlakozási kérelem megadhatja az adatokkal való interakcióhoz szükséges engedélyeket. Ez a kapcsolat például engedélyeket kér a címtárinformációk olvasásához és írásához.

Connect-MgGraph -Scopes "User.ReadWrite.All","Directory.ReadWrite.All"

Válassza ki a béta profilt. A Graph API-k különböző verziókban állnak rendelkezésre (általában V1.0 a teljes éles verzióhoz és Béta a fejlesztéshez). A felhasználói fiókok licenckezelési információi csak akkor érhetők el a Get-MgUser parancsmag használatával, ha kiválasztja a Béta profilt. Ez a kód ellenőrzi a betöltött profilt, és kiválasztja a Bétát, ha nincs beállítva.

$Profile = (Get-MgProfile).Name
If ($Profile -ne "beta") { Select-MgProfile Beta }

Hozza le a terméklicenceket (SKU-kat) a bérlőben. A szkript lehetővé teszi a rendszergazdának, hogy egyéni szolgáltatási tervet (például Forms, Whiteboard vagy Planner) válasszon ki az SKU-ból (például Office 365 E3) való eltávolításhoz. A rendszergazda választásának lehetővé tételéhez lekérjük a bérlőben elérhető cikkszámok listáját a Get-MgSubscribedSku parancsmag segítségével.

[array]$Skus = (Get-MgSubscribedSku)

Ezt követően az SKU-adatok segítségével bemutathatjuk az SKU-k és a szolgáltatási tervek menüit a rendszergazdának, hogy kiválassza az eltávolítandó szolgáltatási tervet. Az eredmény egy kiválasztott SKU és kiválasztott szolgáltatási terv, mindkettő GUID-ként van azonosítva.

Válassza ki a feldolgozni kívánt felhasználói fiókokat. A Get-MgUser parancsmag jó módszer az Azure AD-fiókok készletének kiválasztására feldolgozásra. Például egy adott cikkszámhoz rendelt összes fiók megkereséséhez használhatja a következő parancsokat:

[array]$Users = Get-MgUser -Filter "assignedLicenses/any(x:x/skuId eq $SelectedSkuId)" -all

Ez a szkript azonban a Get-ExoMailbox alkalmazást használja, mivel szűrési képességei kiválóak. A fontos dolog az, hogy rendelkezzen fiók GUID-okkal vagy egyszerű felhasználói nevekkel, amelyeket bemenetként kell használni, amikor a kód frissíti a licencinformációkat. A Get-ExoMailbox megadhatja ezt az információt, ezért nem frissítettem a kód ezen részét.

A fiókok licencinformációinak feldolgozása. A szkript végigfut a kiválasztott fiókokon, és lekéri az aktuális licencinformációkat (a Get-MgUser használatával), majd létrehoz egy licencobjektumot (MicrosoftGraphAssignedLicense), amely a már meglévő szolgáltatási tervekre vonatkozó információkat tartalmaz. letiltva a fiókban, valamint a most eltávolítani kívánt szolgáltatási csomagban. A licencobjektum feltöltése után meghívjuk a Set-MgUserLicense parancsot a frissítés alkalmazásához.

$ExistingDisabledPlans = $Null
ForEach ($S in $User.AssignedLicenses) { # Check for existing disabled licenses
  If ($S.SkuId -eq $SelectedSkuId) {
    $ExistingDisabledPlans = $S.DisabledPlans }
  }
  $ExistingDisabledPlans += $ServicePlanId # Add the plan we want to remove to the set of disabled plans
  $LicenseToRemove = New-Object -TypeName Microsoft.Graph.PowerShell.Models.MicrosoftGraphAssignedLicense
  $LicenseToRemove.SkuId = $SelectedSkuId
  $LicenseToRemove.DisabledPlans = $ExistingDisabledPlans
  $Status = Set-MgUserLicense -UserId $User.id -AddLicenses $LicenseToRemove -RemoveLicenses @()
}

Én lennék az első, aki azt mondaná, hogy a Set-MgUserLicense szintaxisa kissé furcsa. Tekintettel arra, hogy az új SKU fiókhoz való hozzáadásának szintaxisa a következő:

$User = Get-MgUser -UserId Imran.Khan@office365itpros.com
$NewSkuId ="8c4ce438-32a7-4ac5-91a6-e22ae08d9c8b"
Set-MgUserLicense -UserId $User.id -AddLicenses @{SkuId = $NewSkuId} -RemoveLicenses @()

Arra számítottam, hogy a licencobjektumot a RemoveLicenses paraméterrel használom az AddLicenses helyett, de nem így számítottam a licencobjektum frissítésére a RemoveLicenses-ben lévő információk átadásával. paramétert az AddLicenses helyett, de a dolgok nem így működnek. Ha új SKU-t ad hozzá egy fiókhoz, akkor az SKU-ban szereplő összes szolgáltatási csomagot engedélyezi. Ebben az esetben frissített licencinformációkat adunk át annak érdekében, hogy a Graph tiltsa le a megadott SKU-ból a megadott szolgáltatási terveket. Jó lenne, ha a dokumentáció világosabb lenne ebben a témában.

Vegye figyelembe, hogy a parancsmag boldogulásához üres tömb átadása szükséges a RemoveLicenses számára. A paraméter akkor is megköveteli az értéket, ha az üres, és tiltakozik, ha nem talál semmit.

Licencek eltávolítása a fiókokból

Egy vagy több terméklicenc (SKU) eltávolítása egy fiókból a következőképpen történik:

  • Hozzon létre egy tömböt az eltávolítandó terméklicencekből. Egyszerre több terméklicencet is eltávolíthat. A tömb tartalmazza az eltávolítandó termék cikkszámait azonosító GUID-ket.
  • Futtassa a Set-MgUserLicense programot, és adja át a tömböt RemoveLicenses paraméterként. Ezúttal egy üres tömböt adunk át az AddLicenses paraméternek, hogy létrehozzuk a parancsmag tartalmát. Ez a példa két terméket távolít el egy fiókból:
[array]$SkuToRemove = "1f2f344a-700d-42c9-9427-5cea1d5d7ba6", "4016f256-b063-4864-816e-d818aad600c9"
Set-MgUserLicense -UserId $User.id -RemoveLicenses $SkuToRemove -AddLicenses @()

Szolgáltatási terv eltávolításának érvényesítése

Annak tesztelésére, hogy minden működik-e, a szkript segítségével eltávolítottam a MyAnalytics szolgáltatási tervet (amelyet a Microsoft Viva Insights névre nevez át) egy csomó Office 365 E3-fiókból. Minden zökkenőmentesen ment a fiókok licenc-hozzárendelésének frissítése során. Ellenőrizheti a hozzárendeléseket a PowerShell segítségével, vagy megtekintheti a felhasználói információkat a Microsoft 365 felügyeleti központjában (1. ábra).

Mennyi ideig kell frissíteni

Biztos vagyok benne, hogy az emberek aggódni fognak a PowerShell-szkriptek frissítéséhez szükséges idő miatt, mielőtt a kalapács leállna június 30-án. Számos változó létezik, többek között:

  • A fejlesztők ismerik a Microsoft Graph PowerShell SDK-t.
  • Milyen gyorsan fejleszti a Microsoft az SDK-t és annak dokumentációját.
  • A meglévő szkriptek összetettsége és hány Azure AD vagy Microsoft Online Services licenckezelési parancsmagot kell cserélni.
  • A környezet, ahol a parancsfájlok futnak (például a használt hitelesítési módszer).

Alig több mint kilenc hónapunk van hátra, amíg a régebbi parancsmagok leállnak. Valószínűleg kicsi az érintett szkriptek száma egy bérlőben, és nem kell mindent a semmiből átírnia. Vagyis, hacsak nem hozta létre saját licenckezelési megoldását. Ha ez a helyzet, akkor van egy kis tennivalója. Ha nem, akkor a legtöbb szkript frissítése inkább napok, mint hetek kérdése.

Fedezze fel és fedezze fel a modul megszűnése előtt

Megkaphatja a szkriptem másolatát a GitHubból. Emlékeztetőül: ez a kód egy alapelv feltárására és bemutatására íródott, nem pedig termelési minőségű megoldás. Használja a kódot a Microsoft Graph PowerShell SDK-n keresztüli licenckezelés tanulására, felfedezésére és interakciójára. Az SDK-val való munka idővel könnyebbé válik. Legalábbis, ha nem, akkor a Microsoftnak lehetnek elégedetlen ügyfelei, amikor az elavulás megtörténik. Ideje kódolni.

Kapcsolódó cikkek