Microsoft Graph PowerShell SDK: Kullanıcı ve Grup İşlemleri


Ortak görevleri Grafiğe taşıma

Bu serinin ilk bölümünde Microsoft Graph PowerShell SDK'nın, API çağrılarını daha tanıdık PowerShell cmdlet'leriyle değiştirerek Microsoft Graph API'sini kullanmayı nasıl basitleştirdiğini anlattım. Ayrıca SDK'yı nasıl kuracağınızı ve ilk cmdlet'lerinizi çalıştırmak için nasıl bağlanacağınızı da gösterdim.

Yöneticilerin gerçekleştirmesi gereken en yaygın etkinliklerden bazıları kullanıcı ve grup yönetimini içerir. Bu makale, Graph aracılığıyla kullanıcıları ve grupları yönetmek için yaygın günlük görevleri gerçekleştirmek üzere SDK'nın kullanımını daha ayrıntılı bir şekilde ele almaktadır.

Microsoft 365'i Yönetmek için Tek Yer (Bir nevi…)

Microsoft Graph API ve SDK'nın en büyük avantajlarından biri, Microsoft 365'in birçok yönünü tek bir yerden yönetebilme yeteneğidir. Bu küçük bir şey gibi görünebilir ancak daha karmaşık senaryoları otomatikleştirmeye başladığınızda, gerekli modülleri takip etmek zahmetlidir ve ortamınızın hazırlandığından emin olmak zaman alır. Tüm farklı modülleri güncel tutmaktan bahsetmiyorum bile.

İlginç bir aykırı nokta, Exchange Online'ı yönetecek uç noktaların bulunmamasıdır. Posta kutusu verilerine Grafik aracılığıyla erişilebilir olsa da, çoğu Exchange Online yönetim görevinin (ör. Adres listeleri, posta akışı kuralları) yine de Exchange Online PowerShell modülü (yakın zamanda Sürüm 3'e güncellendi) aracılığıyla yapılması gerekir. Exchange'in henüz Grafik aracılığıyla kullanılamayan kendi dahili API'leri vardır. Bu, posta kutularını yönetmenin SDK'nın (veya aslında Graph API'nin) desteklediği bir şey olmadığı anlamına gelir.

Filtreleme ve Aramayı Kullanma

Çoğu yönetici için yaygın bir senaryo, kısmi bilgilere dayalı olarak verilerin döndürülmesidir. Örneğin, belirli bir departmandaki tüm kullanıcıları bulmak. -filter sorgu parametresi, sonuçları bilinen ölçütlere göre filtrelemek için kullanılır ve standart OData filtre operatörlerini destekler (equals, not equals, ) küçüktür, vs.) ve işlevler (startswith/endswith). Operatörlere yönelik destek, modüller ve uç noktalar arasında farklılık gösterdiğinden, komut dosyalarınızı planlarken belgeleri kontrol etmeye değer.

Filtreler, daha karmaşık sorguları derlemek için koşullu operatörleri (ve/veya) destekler. Örneğin, aşağıdaki komut, departmanları "Pazarlama" olarak ayarlanmış olan kullanıcıları sorgular:

Get-MgUser -Filter "department eq 'Marketing'"

Ardından, görünen adı 'A' ile başlayan pazarlama kullanıcılarını bulmak için başlangıç'ı ekleyin:

Get-MgUser -Filter "(department eq 'Marketing') and (startswith(DisplayName,'A'))"

Son olarak “AllanD@M365x18562375.OnMicrosoft.com” e-posta adresine sahip kullanıcı hesabını hariç tutmak için başka bir filtre ekliyoruz. notequals (ne) filtresinin bir Graph gelişmiş sorgusu olduğunu, dolayısıyla tutarlılık düzeyi (sonuç ) olduğunu unutmayın. ) ve countvariable parametrelerinin iletilmesi gerekir:

Get-MgUser -Filter "(department eq 'Marketing') and (startswith(DisplayName,'A')) and (Mail ne 'AllanD@M365x18562375.OnMicrosoft.com')" -ConsistencyLevel eventual -CountVariable count

Şekil 1'de bu filtreleri çalışırken görüyoruz.

Çok değerli özellikler için filtre, Lambda Operatörlerinin eklenmesiyle biraz daha fazla çalışma gerektirir. Lambda Operatörleri, bu özellikleri filtrelemek için kullanılır; örneğin, PowerShell ile Microsoft Graph API Sorgularında /Herhangi Bir Filtrenin Nasıl Kullanılacağına ilişkin bu makalede açıklandığı gibi belirli bir lisans için filtreleme yaparken.

Arama, veri bulmanın başka bir yöntemidir ve daha az spesifik bilgiye sahip olduğunuzda kullanışlıdır. Örneğin, görünen adında "Satış" kelimesi geçen tüm grupları aramak için aşağıdaki sözdizimini kullanın.

Get-MgGroup -Search "Displayname:Sales" -ConsistencyLevel eventual

Search parametresini kullanırken, bu gelişmiş bir sorgu olduğundan ConsistencyLevel parametresinin eventual olarak ayarlanması gerektiğini unutmayın. Arama ile CountVariable parametresi gerekli değildir. Şekil 2'de gösterildiği gibi sonuçları daha da daraltmak için arama ve filtre parametreleri de birlikte kullanılabilir.

PowerShell SDK ile filtreleme ve arama yapmak, API çağrısını elle oluşturmaktan daha kolay bir işlemdir. Tüm PowerShell SDK cmdlet'lerinde olduğu gibi, debug parametresinin eklenmesi, filtreleri uygulamak için kullanılan URI'yi gösterir (Şekil 3).

Microsoft Platform Geçiş Planlaması ve Konsolidasyonu

Kullanıcılar için maliyetleri, riskleri ve kesintileri en aza indirirken geçiş planlamasını basitleştirin, geçiş zorluklarının üstesinden gelin ve projeleri daha hızlı tamamlayın.

Raporlama

Graph API, bir ortamdaki nesneler hakkında raporlama yapmak için kullanışlı bir araçtır. Örneğin, PowerShell için Microsoft Graph SDK'sını Kullanarak Microsoft 365 Lisanslama Raporu Oluşturma hakkındaki bu makale, raporların (göreceli) kolaylıkla ve az miktarda komut dosyasıyla nasıl oluşturulabileceğini ve tam olarak neye ihtiyaç duyulduğuna göre uyarlanabileceğini gösterir. Yerleşik raporlama size aradığınızı vermediğinde bu çok yardımcı olabilir.

Diğer bir yaygın görev ise Microsoft 365 Grupları hakkında raporlama yapmaktır. Microsoft 365 Grupları birçok iş yükünün önemli bir bileşenidir ve yönetici olarak hangi Grupların hangi bileşenlere bağlı olduğunu ayırt etmek kolay değildir. Graph API tarafından döndürülen Grup nesnesi, buna yardımcı olacak büyük miktarda bilgi içerir ve bunu SDK'daki diğer cmdlet'lerle birleştirerek bu özel raporları oluşturmak çok daha kolay bir süreçtir.

Örneğin, aşağıdaki kod ilk olarak kuruluştaki tüm Birleşik Grupları döndürür (groupTypes özniteliğindeki filtrelemeyi kullanarak) ve ardından URL'sini getirmek için Get-MgGroupDrive cmdlet'ini kullanır. Gruplarla ilişkili Belge Kitaplığı. Bu veriler, gerektiğinde dışa aktarılmaya hazır olarak grubun diğer bazı ayrıntılarıyla birlikte $Report değişkeninde saklanır.

##Return all Unified Groups
[array]$Groups = Get-MgGroup  -Filter "groupTypes/any(x:x eq 'Unified')" -All
##Create Report Array
$Report = @()
##Iterate each Group to retrieve the Drive URL and append to the Report
Foreach($Group in $Groups){
$Drive = Get-MgGroupDrive -GroupId $Group.id
$DriveDetails = [PSCustomObject]@{
GroupID = $Group.id
GroupName = $Group.displayname
Email = $Group.mail
URL = $Drive.webURL
}
$Report += $DriveDetails
}

Bu hızlı rapor (Şekil 4'te gösterilen çıktı), ihtiyacınız olan bilgiyi fazla çaba harcamadan almanın ne kadar kolay olduğunu gösterir.

Toplu Yönetim

Kullanıcıları ve grupları SDK aracılığıyla bulmak ve raporlamak güzeldir ancak Microsoft 365 ortamını yönetmenin büyük bir kısmı güncelleştirme ve yeni nesneler oluşturmadır. Lisanslama, Microsoft Graph PowerShell SDK'lı Azure AD Hesapları için Microsoft 365 Lisans Yönetimi hakkındaki bu makalede özetlendiği gibi burada bir kez daha iyi bir örnektir.

Diğer bir yaygın kullanım durumu, toplu kullanıcı oluşturma gibi nesnelerin toplu olarak oluşturulmasıdır. Buradaki tipik bir senaryo, kullanıcılara bir İK veritabanından çıkarılan bir CSV dosyasından yetki vermektir. Genel olarak kullanıcıları tedarik edip bir lisans ekliyoruz; bu durumda onları bir Azure AD Lisanslama Grubuna ekliyoruz.

Aşağıdaki komut dosyası, Şekil 5'te gösterilen CSV dosyasını kullanarak, ad.soyadı@alanadi.com biçimini kullanarak kullanıcıların temel hazırlığını yapar, geçici bir şifre belirler ve kullanıcıyı lisans grubuna ekler:

##Retrieve the Licensing Group
$LicenseGroup = Get-MgGroup -Filter "Displayname eq 'M365-E3-License'"

##Import the CSV
$csv = Import-Csv C:\temp\NewStaff.csv

##Set the Domain Suffix
$DomainSuffix = "M365x18562375.onmicrosoft.com"

##Loop through each user
foreach($user in $csv){
$PasswordProfile = @{
Password = $user.'Temporary Password'
}
##Provision the user
$UserObject = New-MgUser -DisplayName "$($user.'first name') $($user.surname)" -PasswordProfile $PasswordProfile -AccountEnabled -MailNickname "$($user.'first name').$($user.surname)" -UserPrincipalName "$($user.'first name').$($user.surname)@$DomainSuffix"

##Add the user to the license group
New-MgGroupMember -GroupId $LicenseGroup.id -DirectoryObjectId $UserObject.id
}

Özet

Bu makalede, Microsoft Graph PowerShell SDK'nın kiracı yöneticilerinin ortak süreçleri otomatikleştirmesine yardımcı olabileceği bazı yaygın senaryolara baktım. Her şeyin tek bir modülde mevcut olmasının avantajları olmasına rağmen, bir süredir kiracısını yönetmek için PowerShell kullanan herkes için burada çok yeni bir şey yok. Temel bilgileri öğrendikten sonra diğer modüllerdeki kodları uyarlamak çok da zor olmayacaktır. Bu serinin bir sonraki bölümünde Teams ve Exchange gibi bireysel hizmetlerle etkileşime girip Graph kullanmanın bazı ilginç avantajlarını keşfederken işler biraz daha karmaşıklaşıyor.

Active Directory için Siber Güvenlik Risk Yönetimi

Bu Siber Güvenlik Risk Yönetimi Çözümleri aracılığıyla AD saldırılarını nasıl önleyeceğinizi ve bu saldırılardan nasıl kurtulacağınızı keşfedin.

İlgili makaleler