Die Microsoft.Graph PowerShell Module ausprobiert
Hallo zusammen,
Da das Azure AD PowerShell Modul wohl längerfristig nicht weiterentwickelt wird, habe ich mir mal die neue Alternative dazu angeschaut.
Microsoft Lays Out Future for Azure AD PowerShell Module
https://office365itpros.com/2021/06/03/microsoft-lays-out-future-azure-ad-powershell-module/
Get started with the Microsoft Graph PowerShell SDK
https://docs.microsoft.com/en-us/graph/powershell/get-started
Find-Module Microsoft.Graph
Wie viel da zur Verfügung steht, sieht man anhand von folgendem command
Get-Command -Module Microsoft.Graph.* | Measure
Es gibt fast für alles ein PowerShell Modul
Get-Module -Name Microsoft.Graph.* -ListAvailable
Verbinden kann ich mich ganz einfach mit
Connect-MgGraph
Die Vorhandenen Endpoints kann ich mir mit folgendem Befehl anzeigen lassen
Get-MgEnvironment
Man kann sich auch über einen spezifischen Scope verbinden
Und über ein Zertifikat kann man sich ebenfalls verbinden
$TenantId = "icewolfch.onmicrosoft.com"
$AppID = "c1a5903b-cd73-48fe-ac1f-e71bde968412" #DelegatedMail
$CertificateThumbprint = "3B42F63204F0F54F6E4CB9CF96E365513C913C2B"
Connect-MgGraph -ClientId $AppId -CertificateThumbprint $CertificateThumbprint -TenantId $TenantId
Um auf die Beta Befehle zu wechseln, gibt man folgendes ein
Select-MgProfile -Name "beta"
Get-MgProfile
Wie man verbunden ist und welche Scopes zur Verfügung stehen sieht man mit folgendem Befehl
Get-MgContext
Mit dem Get-MgUser kann ich beispielsweise nach Guest Accounts oder nach einem bestimmten Vornamen suchen
Get-MgUser -Filter "userType eq 'Guest'"
Get-MgUser -Search "givenName:Andres" -ConsistencyLevel "eventual"
Dasselbe gilt auch für Contacts
Get-MgContact -Search "givenName:Andres" -ConsistencyLevel "eventual"
Get-MgContact -Search "givenName:Andres" -ConsistencyLevel "eventual" | fl
Bei den Filtern hat mir folgende Seite geholfen https://docs.microsoft.com/en-us/graph/query-parameters#encoding-query-parameters
Get-MgGroup -Filter "startswith(Displayname,'AAD')"
Get-MgGroup -Filter "groupTypes/any(c:c eq 'Unified')"
Get-MgGroup -Filter "startswith(displayName,'Demo')"
Allerdings haben bei mir die "endswith" und "contains" Filterparameter nicht funktioniert
Get-MgGroup -Filter "endswith(displayName,'Team')"
Get-MgGroup -Filter "contains(displayName,'Demo')"
Bei Gruppen will man ja häufig die GroupMembers auflisten
Get-MgGroupmember -GroupId c9da2027-a296-4ba4-abb7-4bf88d1a9849 | fl
(Get-MgGroupmember -GroupId c9da2027-a296-4ba4-abb7-4bf88d1a9849).AdditionalProperties
Get-MgGroupmember -GroupId c9da2027-a296-4ba4-abb7-4bf88d1a9849 | ForEach-Object { Get-MgUser -UserId $_.Id }
Auch die Lizenz eines Benutzers lässt sich einfach herausfinden
Get-MgUserLicenseDetail -UserId a.bohren@icewolf.ch
Zum Schluss muss man sich natürlich abmelden
Disconnect-MgGraph
Fazit:
Die meisten Dinge sind einfach. Wenn man schon ein bisschen mit Microsoft Graph gearbeitet hat kommt man mit den meisten Commands recht schnell zurecht. Denke mit dem Filtern und Suchen muss ich mich noch ein bisschen näher beschäftigen. Wenn jemand Tipps dazu hat - nur her damit!
Weitere infos:
- Managing with Microsoft Graph (and PowerShell) - John Savill
https://www.youtube.com/watch?v=bF8vkzXJsAY - Exploring the new Microsoft Graph PowerShell Module(s) - Nicola Suter
https://tech.nicolonsky.ch/exploring-the-new-microsoft-graph-powershell-modules/