Przejdź do treści
Powrót do Centrum Pomocy
Windows 11
Aplikacje Microsoft

PowerShell 7.x (zalecany, Windows 11 24H2/25H2)

Install-Module Microsoft.Graph -Scope CurrentUser

20 min czytania·Zaktualizowano 3 tyg. temu

Install-Module Microsoft.Graph -Scope CurrentUser

Tylko potrzebne podmoduły (oszczędność miejsca)

Install-Module Microsoft.Graph.Users, Microsoft.Graph.Groups, Microsoft.Graph.Identity.DirectoryManagement


### Krok 3: Mapowanie cmdletów i przepisanie skryptów

Dla każdego starego cmdletu znajdź odpowiednik w Graph SDK. Kluczowe różnice:
- `Get-AzureADUser -ObjectId x` → `Get-MgUser -UserId x` (parametr nazywa się inaczej)
- `Get-MsolUser -All` → `Get-MgUser -All` (to samo, ale obiekt wynikowy ma inne właściwości)
- `Set-MsolUserLicense` → `Set-MgUserLicense` (inna składnia parametrów `-AddLicenses`)
- `Connect-AzureAD` → `Connect-MgGraph -Scopes "User.Read.All", "Group.ReadWrite.All"` (jawne definiowanie scope'ów)

**Przykład migracji skryptu** — pobranie wszystkich nieaktywnych użytkowników i wyłączenie ich kont:

```powershell
# STARY KOD (AzureAD + MSOnline — NIE DZIAŁA)
Connect-AzureAD
$inactiveUsers = Get-AzureADUser -All | Where-Object { $_.AccountEnabled -and $_.LastDirSyncTime -eq $null }

# NOWY KOD (Microsoft Graph)
Connect-MgGraph -Scopes "User.ReadWrite.All"
$inactiveUsers = Get-MgUser -All -Filter "accountEnabled eq true" -Property "signInActivity"

Krok 4: Wdrożenie app-only authentication dla skryptów nienadzorowanych

Stare moduły praktycznie nie wspierały app-only auth (certyfikatami) — wszystko opierało się na interaktywnym logowaniu, co blokowało automatyzację w harmonogramach zadań (Task Scheduler), Azure Automation i CI/CD pipelines. W Graph SDK to priorytetowy scenariusz:

# App-only auth z certyfikatem
Connect-MgGraph -ClientId "00000000-0000-0000-0000-000000000000" `
    -TenantId "twojtenant.onmicrosoft.com" `
    -CertificateThumbprint "ABCD1234..."

Krok 5: Testy i walidacja

Uruchom przepisane skrypty w środowisku testowym z flagą -WhatIf (dostępną tylko w Remove-Mg* i Set-Mg*), sprawdź logi Get-MgAuditLogDirectoryAudit dla nieoczekiwanych zmian i porównaj wyniki ze starym wykonaniem.

Microsoft dostarczył narzędzie Microsoft Graph PowerShell Migration Analyzer jako część modułu Microsoft.Graph.Tools, które automatycznie skanuje skrypty i generuje raport z rekomendacjami zmiany każdego cmdletu.

Automatyzacja zarządzania użytkownikami i licencjami przez PowerShell

To najbardziej dochodowy scenariusz w administracji M365 — firma z 500 użytkownikami, która ręcznie klika onboard/offboard, traci średnio 4 godziny tygodniowo na powtarzalne czynności. PowerShell z Microsoft Graph automatyzuje ten proces do zera.

Scenariusz: automatyczny onboarding nowego pracownika

# 1. Utwórz użytkownika
$user = New-MgUser -DisplayName "Anna Nowak" `
    -MailNickname "anna.nowak" `
    -UserPrincipalName "anna.nowak@firma.pl" `
    -PasswordProfile @{ Password = "TempPass123!"; ForceChangePasswordNextSignIn = $true } `
    -AccountEnabled:$true `
    -UsageLocation "PL"

# 2. Przypisz licencję Microsoft 365 Business Premium
$sku = Get-MgSubscribedSku | Where-Object SkuPartNumber -eq "SPB"
Set-MgUserLicense -UserId $user.Id -AddLicenses @{ SkuId = $sku.SkuId } `
    -RemoveLicenses @()

# 3. Dodaj do grup działowych
$grupaIT = Get-MgGroup -Filter "displayName eq 'Dział IT'"
Add-MgGroupMember -GroupId $grupaIT.Id -DirectoryObjectId $user.Id

# 4. Wyślij powiadomienie do przełożonego (przez Teams webhook lub Exchange Online)

Scenariusz: masowe odnowienie licencji subskrypcyjnych

Przy subskrypcjach rocznych (np. Microsoft 365 Business Standard czy Exchange Online Plan 2 zakupione przez KluczeSoft.pl z fakturą VAT 23%) masz ograniczoną pulę licencji i musisz mieć pełną kontrolę nad ich przydziałem:

$licenses = Get-MgSubscribedSku
$license | Select-Object SkuPartNumber, ConsumedUnits, @{N="Available";E={$_.PrepaidUnits.Enabled - $_.ConsumedUnits}}

Bezpieczeństwo i raportowanie przez PowerShell

W 2026 roku Microsoft Graph PowerShell jest podstawowym narzędziem audytu bezpieczeństwa w środowiskach M365. Pięć kluczowych scenariuszy:

1. Analiza logów logowania (Sign-In Logs)

Get-MgAuditLogSignIn -Filter "createdDateTime ge 2026-05-01" `
    -Property "userPrincipalName,ipAddress,status,riskDetail" `
    -All | Where-Object { $_.Status.ErrorCode -ne 0 } `
    | Select-Object UserPrincipalName, IpAddress, Status, CreatedDateTime

2. Detekcja użytkowników bez MFA

$users = Get-MgUser -All -Property "id,userPrincipalName"
foreach ($u in $users) {
    $authMethods = Get-MgUserAuthenticationMethod -UserId $u.Id
    if ($authMethods.Count -eq 0) {
        Write-Warning "Brak MFA: $($u.UserPrincipalName)"
    }
}

3. Audyt przypisań ról uprzywilejowanych

Get-MgRoleManagementDirectoryRoleAssignment -All `
    -Filter "roleDefinitionId eq '62e90394-69f5-4237-9190-012177145e10'" # Global Admin

4. Wymuszenie rotacji certyfikatów aplikacji

$apps = Get-MgApplication -All
$apps | Where-Object { $_.KeyCredentials } | ForEach-Object {
    $_.KeyCredentials | Where-Object { $_.EndDateTime -lt (Get-Date).AddDays(30) } | ForEach-Object {
        Write-Warning "Certyfikat wygasa: $($_.DisplayName) — $($_.EndDateTime)"
    }
}

5. Sprawdzanie zgodności z Conditional Access

Get-MgPolicyConditionalAccessPolicy | Select-Object DisplayName, State, CreatedDateTime, ModifiedDateTime

Typowe problemy i pułapki

Administratorzy migrujący na Microsoft Graph PowerShell regularnie wpadają w te same problemy. Oto lista pięciu najczęstszych i ich rozwiązania:

  1. Insufficient privileges mimo roli Global Admin — Graph SDK wymaga jawnego zdefiniowania scope'ów przy Connect-MgGraph. Rola Global Admin nie daje automatycznie wszystkich uprawnień aplikacji. Rozwiązanie: Connect-MgGraph -Scopes "User.ReadWrite.All", "Group.ReadWrite.All", "Directory.ReadWrite.All".

  2. TooManyRequests (HTTP 429) przy dużych zapytaniach — Graph API nakłada limit 10 000 żądań na minutę na aplikację i 100 żądań na minutę na użytkownika. Rozwiązanie: używaj -PageSize 50 zamiast domyślnych 100, dodaj Start-Sleep -Milliseconds 500 między batchami, a dla krytycznych operacji użyj Invoke-MgGraphRequest z własną retry-logic.

  3. Parametr -Filter nie działa zgodnie z oczekiwaniami — Graph obsługuje tylko ograniczony podzbiór operatorów OData w zależności od endpointu. -Filter "startswith(displayName,'A')" działa w /users, ale nie w /groups. Rozwiązanie: sprawdź dokumentację konkretnego endpointu w Graph API reference, nie zakładaj pełnego OData.

  4. Nieoczekiwane usunięcie właściwości przez Update-MgUserUpdate-MgUser nadpisuje cały obiekt. Jeśli przekażesz tylko -City "Warszawa", wszystkie pozostałe pola zostaną wyczyszczone. Rozwiązanie: zawsze pobierz obiekt przez Get-MgUser, zmodyfikuj tylko potrzebne pola i przekaż go z powrotem, albo użyj -BodyParameter z hashtable zawierającym tylko zmieniane właściwości.

  5. App-only authentication nie działa mimo poprawnych uprawnień — Uprawnienia API (Application permissions) wymagają admin consent. W Azure Portal przejdź do API Permissions aplikacji, kliknij Grant admin consent for <tenant>. Bez tego Connect-MgGraph z certyfikatem zwróci Authorization_RequestDenied.

Częste pytania

Czy Microsoft Graph PowerShell jest darmowy?

Tak. Sam moduł PowerShell i Microsoft Graph API są darmowe — płacisz wyłącznie za licencje Microsoft 365, którymi zarządzasz (np. Business Basic, E3, E5). Nie ma dodatkowych opłat za używanie Graph API przez PowerShell.

Jaka wersja PowerShell jest wymagana?

Microsoft Graph PowerShell SDK działa na PowerShell 5.1 (wbudowany w Windows 10 i Windows 11) oraz PowerShell 7.x (zalecany). PowerShell 7.4 to wersja LTS (Long Term Support) rekomendowana przez Microsoft na 2026 rok i preinstalowana w Windows 11 24H2 i 25H2.

Czy muszę od razu migrować wszystkie skrypty?

Tak — stare moduły przestały działać 30 marca 2024 roku, gdy Microsoft wyłączył Azure AD Graph API. Jeśli masz skrypty, które nie były uruchamiane od tamtego czasu, rzucą błędem autoryzacji przy pierwszej próbie wykonania. Nie ma okresu przejściowego — migracja jest obowiązkowa.

Jak mapować stare cmdlety na nowe?

Microsoft Graph PowerShell SDK zawiera wbudowaną komendę Find-MgGraphCommand, która pozwala wyszukiwać cmdlety po słowach kluczowych. Find-MgGraphCommand -Command Get-AzureADUser podpowie Get-MgUser. Dodatkowo migracyjny przewodnik Microsoft zawiera tabelę mapowania dla 80 najczęstszych cmdletów.

Jakie uprawnienia Graph API są potrzebne do codziennej administracji?

Minimalny zestaw scope'ów dla administratora M365: User.ReadWrite.All, Group.ReadWrite.All, Directory.ReadWrite.All, Organization.Read.All, RoleManagement.ReadWrite.Directory, AuditLog.Read.All. Dla operacji tylko-do-odczytu (raporty, monitoring) wystarczą odpowiedniki .Read.All.

Czy Graph PowerShell obsługuje Exchange Online?

Tak — od 2026 roku zalecanym podejściem jest korzystanie z modułu ExchangeOnlineManagement V3, który wewnętrznie używa REST API (Graph), ale zachowuje znane cmdlety Exchange (Get-Mailbox, Set-Mailbox). Nie ma potrzeby przepisywania skryptów Exchange, wystarczy zaktualizować moduł do wersji 3.x.

Jak wydajnie pobrać wszystkich użytkowników w tenancie 50 000+ osób?

Użyj Get-MgUser -All -PageSize 50 z selekcją tylko potrzebnych pól (-Property "id,displayName,userPrincipalName"). Bez -Property Graph zwraca domyślny zestaw ~15 pól, co przy dużych tenantach generuje zbędny transfer i wydłuża wykonanie. Dla ekstremalnie dużych katalogów (100 000+) rozważ eksport przez Get-MgReport zamiast iterowania po użytkownikach.

Jak diagnozować błędy Graph API?

Włącz szczegółowe logowanie: Get-MgGraphRequest -Debug lub ustaw $DebugPreference = "Continue". Pełny komunikat błędu Graph API jest zawsze w $Error[0].ErrorDetails.Message jako JSON — parsuj go przez $_.Exception.Response dla uzyskania kodu błędu i korelacji request-id.

Czy mogę używać Graph PowerShell na serwerach bez GUI (Windows Server 2025 Core)?

Tak — Microsoft Graph PowerShell SDK działa w pełni na Windows Server 2025 Server Core i w kontenerach Windows. App-only authentication z certyfikatem jest wymagane, bo device code flow (fallback interaktywny) nie działa na headless.

Czy PowerShell Graph zastępuje portal admin.microsoft.com?

Nie w pełni. Graph PowerShell pokrywa ~95% operacji administracyjnych, ale niektóre zaawansowane konfiguracje (np. Microsoft Purview eDiscovery Premium, Teams Phone policies, zaawansowane reguły Microsoft Defender for Office 365) wciąż wymagają GUI. W codziennej administracji użytkownikami, grupami i licencjami Graph w pełni zastępuje portal.


Administratorzy Microsoft 365, którzy automatyzują zarządzanie przez PowerShell, oszczędzają średnio 15-20 godzin miesięcznie. Jeśli Twój zespół dopiero buduje kompetencje w tym obszarze, zacznij od środowiska deweloperskiego — każda subskrypcja Microsoft 365 Business Premium czy Microsoft 365 E5 zawiera deweloperski tenant testowy. Legalne klucze subskrypcyjne do wersji Business Standard, Business Premium i Enterprise znajdziesz w KluczeSoft.pl — z fakturą VAT 23%, automatycznym KSeF i dostawą e-mail w 1-3 minuty.

<!-- IL-V1 -->

Sklep KluczeSoft

Potrzebujesz licencji? KluczeSoft.pl oferuje legalne klucze z gwarancją autentyczności i wysyłką w 1-3 minuty na e-mail:

Powiązane artykuły

Powiązane produkty

<!-- SEO Growth Plan · batch31 -->

Powiązane tematy i warianty zapytań

powershell azure ad

Moduł AzureAD i AzureADPreview w PowerShellu, choć wciąż rozpoznawalne w skryptach legacy, od 2024 roku funkcjonują w trybie głębokiej deprecjacji. Microsoft oficjalnie zakończył ich rozwój, a od 30 marca 2024 roku nie są już wspierane w nowych tenantach komercyjnych. W praktyce oznacza to, że każde wywołanie Get-AzureADUser w środowisku produkcyjnym niesie ryzyko niekompatybilności z nowymi funkcjami Entra ID, takimi jak zaawansowane polityki dostępu warunkowego czy mechanizmy ochrony tożsamości oparte na uczeniu maszynowym. Migracja do Microsoft Graph PowerShell SDK nie jest już rekomendacją, lecz wymogiem architektonicznym. Inżynierowie automatyzujący zarządzanie tożsamością muszą przepisać logikę na cmdlety z prefiksem Mg, ponieważ tylko one obsługują endpointy API w wersji v1.0 i beta, gwarantując dostęp do pełnego spektrum zasobów, w tym do zaawansowanych atrybutów bezpieczeństwa. W kontekście licencjonowania i skalowania operacji, nowoczesne cmdlety powershell azure ad w wydaniu Graph SDK eliminują problem throttlingu charakterystyczny dla starego modułu, oferując natywną obsługę stronicowania i żądań wsadowych, co jest kluczowe przy przetwarzaniu dziesiątek tysięcy obiektów w dużych organizacjach.

powershell msgraph

W ekosystemie administracyjnym 2026 roku biegłość w powershell msgraph definiuje poziom automatyzacji przedsiębiorstwa. SDK Microsoft Graph to nie tylko zestaw cmdletów, ale przede wszystkim ustandaryzowany interfejs do wszystkich usług Microsoft 365, od Entra ID po Intune i Defender. Kluczową zmianą, która wpłynęła na wydajność skryptów, jest przejście na natywną obsługę PowerShell 7 i porzucenie zależności od Windows PowerShell 5.1. Oznacza to pełną kompatybilność z platformami Linux i macOS w scenariuszach DevOps, gdzie automatyzacja odbywa się w kontenerach. Pracując z modułem, administratorzy korzystają z automatycznego mapowania właściwości obiektów, ale prawdziwą moc ujawnia możliwość bezpośredniego wywoływania zapytań REST przez Invoke-MgGraphRequest. Ta technika jest niezbędna, gdy cmdlety wysokopoziomowe nie nadążają za tempem aktualizacji API. Warto podkreślić, że efektywne wykorzystanie powershell msgraph wymaga zrozumienia modelu uprawnień, gdzie zgoda na konkretne scope’y (np. User.Read.All) jest ściśle oddzielona od ról administracyjnych, co bezpośrednio przekłada się na bezpieczeństwo wykonywanych operacji.

msgraph install-module

Proces instalacji modułu w 2026 roku wymaga precyzji ze względu na rozwarstwienie wersji. Polecenie Install-Module Microsoft.Graph domyślnie pobiera pakiet zbiorczy (meta-module), który w najnowszej iteracji waży znacząco więcej niż jego poprzednicy, co może być problematyczne w środowiskach z ograniczeniami pamięci na maszynach wirtualnych. Architekci rozwiązań coraz częściej odchodzą od instalowania pełnego modułu na rzecz selektywnego wdrażania podmodułów, takich jak Microsoft.Graph.Authentication czy Microsoft.Graph.Users, co drastycznie skraca czas ładowania sesji. Warto pamiętać, że repozytorium PSGallery wymusza teraz TLS 1.3, a wszelkie próby instalacji z poziomu przestarzałych klientów kończą się błędem. Wykonując msgraph install-module, należy bezwzględnie uruchomić sesję z podniesionymi uprawnieniami w kontekście CurrentUser, chyba że wdrażamy moduł centralnie na serwerze automatyzacji. W przypadku korzystania z usług takich jak Azure Automation, gdzie środowisko wykonawcze jest zarządzane, wersja modułu jest często preinstalowana, ale jej aktualizacja do najnowszej wersji API wymaga ręcznego przeładowania zasobów.

msgraph connect-mggraph

Uwierzytelnianie w sesji PowerShell w 2026 roku opiera się na poleceniu Connect-MgGraph, które domyślnie korzysta z biblioteki MSAL (Microsoft Authentication Library) i wymusza nowoczesne metody potwierdzania tożsamości. W środowiskach korporacyjnych, gdzie wdrożono rygorystyczne zasady dostępu warunkowego, standardowe logowanie interaktywne jest często blokowane. W takich przypadkach msgraph connect-mggraph wymaga jawnego wskazania kontekstu za pomocą parametrów -ClientId, -TenantId i -CertificateThumbprint, aby przeprowadzić uwierzytelnienie aplikacji (service principal) z użyciem certyfikatu. Kluczową nowością jest natywna obsługa workload identity federation, co eliminuje konieczność rotacji sekretów klienckich w scenariuszach CI/CD. Administratorzy muszą być świadomi, że token dostępu uzyskany przez Connect-MgGraph ma domyślnie ograniczony czas życia, a jego odświeżanie w długotrwałych skryptach wymaga implementacji mechanizmu ponawiania połączenia. W kontekście bezpieczeństwa, każda sesja jest teraz domyślnie audytowana w logach Entra ID jako zdarzenie logowania interaktywnego lub nieinteraktywnego, co pozwala na pełną forensykę działań administracyjnych.

msgraph get-mguser

Pobieranie danych użytkowników za pomocą Get-MgUser to fundament operacji na tożsamościach, jednak w 2026 roku jego efektywność zależy od zrozumienia mechanizmów filtrowania po stronie serwera. Wysyłanie zapytania Get-MgUser -All bez odpowiednich filtrów w tenantach posiadających setki tysięcy kont prowadzi do timeoutów i przeciążenia pamięci klienta. Zamiast tego, msgraph get-mguser powinien być używany z parametrem -Filter, który wspiera zaawansowane operatory OData, takie jak startsWith, endsWith czy operatory lambda dla atrybutów wielowartościowych. Nowością jest rozszerzona obsługa właściwości związanych z EmployeeHireDate i EmployeeLeaveDateTime, które są kluczowe dla automatyzacji procesów HR. Warto podkreślić, że domyślny zestaw zwracanych właściwości jest minimalny; aby uzyskać dostęp do rozszerzeń katalogowych (extension attributes) lub menedżera użytkownika, konieczne jest jawne ich wskazanie przez -Property. W kontekście wydajności, przy masowym eksporcie danych, zaleca się wykorzystanie Invoke-MgGraphRequest z nagłówkiem ConsistencyLevel: eventual, co odciąża repliki bazy danych Entra ID i przyspiesza odczyt.

msgraph get-mggroup

Zarządzanie grupami w Entra ID przez Get-MgGroup wymaga dziś rozróżnienia między grupami Microsoft 365 a grupami zabezpieczeń na poziomie samego zapytania, co jest możliwe dzięki filtrowaniu po właściwości groupTypes. W 2026 roku, wraz z ewolucją usługi Entra ID Governance, msgraph get-mggroup jest nieodzowny przy inspekcji dynamicznych reguł członkostwa (membershipRule), które stały się niezwykle złożone i mogą zawierać zagnieżdżone warunki logiczne. Administratorzy często zapominają, że cmdlet domyślnie nie zwraca listy właścicieli ani członków grupy – te dane wymagają osobnych wywołań, co przy analizie tysięcy grup generuje ogromny narzut sieciowy. Rozwiązaniem jest agregacja zapytań przez batch requests, gdzie w jednym żądaniu HTTP pakujemy do 20 zapytań o członkostwo. Ponadto, w środowiskach z włączoną ochroną tożsamości, grupy oznaczone jako roleAssignable (czyli takie, którym można przypisać role administracyjne) są domyślnie ukrywane przed nieautoryzowanym odczytem, chyba że sesja posiada odpowiednie uprawnienia administracyjne.

msgraph get-mgapplication

Rejestracje aplikacji w Entra ID to krytyczny element powierzchni ataku, dlatego msgraph get-mgapplication jest podstawowym narzędziem audytora bezpieczeństwa. W 2026 roku Microsoft wymusza stosowanie silniejszych mechanizmów uwierzytelniania dla aplikacji, a cmdlet ten pozwala na masowe wykrywanie przestarzałych wpisów korzystających z symetrycznych sekretów klienckich zamiast certyfikatów czy federacji tożsamości obciążeń. Kluczową właściwością, którą należy monitorować, jest passwordCredentials oraz keyCredentials, gdzie przechowywane są informacje o dacie wygaśnięcia. Wykonując Get-MgApplication, warto łączyć to z filtrem OData, aby wyizolować aplikacje z nadmiernymi uprawnieniami (np. RoleId odpowiadający Directory.ReadWrite.All). Nowością jest możliwość odczytu właściwości authenticationBehaviors, która kontroluje, czy aplikacja akceptuje tokeny od użytkowników z silnym uwierzytelnianiem. W kontekście automatyzacji, regularne snapshoty konfiguracji aplikacji wykonywane tym poleceniem są niezbędne do spełnienia wymogów compliance i szybkiego reagowania na nieautoryzowane zmiany w konsoli Entra.

msgraph get-mgdevice

W erze pracy hybrydowej i Zero Trust, inwentaryzacja punktów końcowych przez msgraph get-mgdevice stała się kluczowa dla egzekwowania polityk dostępu warunkowego. Cmdlet ten w 2026 roku dostarcza szczegółowych informacji o statusie zgodności urządzenia (isCompliant), typie własności (ownership) oraz dacie ostatniej aktywności, co pozwala na automatyczne czyszczenie starych rekordów. Warto zwrócić uwagę na właściwość enrollmentProfileName, która wskazuje, czy urządzenie zostało dodane ręcznie, przez Autopilota, czy przez menedżera punktów końcowych. Przy dużych środowiskach, gdzie liczba urządzeń przekracza sto tysięcy, standardowe wywołanie Get-MgDevice -All jest nieefektywne. Należy stosować filtrowanie po operatingSystem lub trustType, aby odciążyć serwer. Ponadto, w kontekście bezpieczeństwa, cmdlet ten jest używany do identyfikacji urządzeń z przestarzałymi systemami operacyjnymi, które nie spełniają wymogów Windows 11 24H2, co bezpośrednio wiąże się z ryzykiem utraty zgodności i potencjalnym zablokowaniem dostępu do zasobów firmowych.

msgraph get-mgdirectoryrolescoped

Zarządzanie uprzywilejowanym dostępem (PIM) wymaga precyzyjnych narzędzi, a msgraph get-mgdirectoryrolescoped odpowiada na potrzebę audytu ról administracyjnych w zawężonym zakresie. W 2026 roku, wraz z rozwojem jednostek administracyjnych (Administrative Units), cmdlet ten pozwala sprawdzić, którzy administratorzy mają uprawnienia tylko do wybranego fragmentu katalogu, np. do użytkowników w konkretnym oddziale firmy. Jest to kluczowe dla wdrożenia zasady najmniejszych uprawnień (least privilege). Wykonanie tego polecenia bez parametrów zwraca listę przypisań ról ograniczonych zakresem, co pozwala odróżnić globalnego administratora od administratora działu. W praktyce, podczas audytu bezpieczeństwa, łączy się to z analizą RoleDefinitionId, aby zidentyfikować, czy wrażliwe role, takie jak User Administrator czy Groups Administrator, nie zostały przypadkowo przydzielone w zbyt szerokim zakresie. Należy pamiętać, że efektywne użycie tego cmdletu wymaga uprawnień RoleManagement.Read.Directory na poziomie całego katalogu, co samo w sobie jest uprawnieniem wysokiego ryzyka.

msgraph enable-mgpolicyauthenticationmethodfeature

Konfiguracja silnego uwierzytelniania w 2026 roku jest w pełni zautomatyzowana przez cmdlet msgraph enable-mgpolicyauthenticationmethodfeature, który zastąpił ręczne klikanie w portalach administracyjnych. To polecenie służy do zdalnego włączania lub wyłączania konkretnych metod, takich jak Microsoft Authenticator (w tym bezhasełkowe logowanie telefonem), klucze sprzętowe FIDO2 czy tymczasowe kody dostępu (TAP). W kontekście migracji z przestarzałych metod SMS, cmdlet ten umożliwia masowe egzekwowanie polityk na poziomie całego tenant-a. Kluczowym parametrem jest tutaj -Feature, który przyjmuje ściśle zdefiniowane wartości, a jego nieprawidłowe użycie może skutkować zablokowaniem dostępu użytkownikom. Warto podkreślić, że zmiany wprowadzane tym poleceniem podlegają natychmiastowej replikacji i są nadpisywane przez polityki dostępu warunkowego, jeśli te są skonfigurowane na poziomie aplikacji. Dlatego w dojrzałych środowiskach używa się go w połączeniu z cmdletami do zarządzania politykami CA, aby zapewnić spójność wymogów bezpieczeństwa.

msgraph new-mgriskyuserconfirm

Reagowanie na incydenty związane z tożsamością wymaga szybkości, a msgraph new-mgriskyuserconfirm to narzędzie do natychmiastowego zatwierdzania kompromitacji użytkownika w usłudze Identity Protection. W 2026 roku, gdy algorytmy wykrywają anomalie, takie jak niemożliwa podróż (impossible travel) czy wyciek tokena, administrator może użyć tego cmdletu, aby ręcznie oznaczyć użytkownika jako "skompromitowanego". Ta akcja uruchamia zdefiniowane wcześniej automatyzacje, takie jak wymuszenie resetu hasła, unieważnienie tokenów odświeżania czy tymczasowe wyłączenie konta. W przeciwieństwie do starego modułu AAD, tutaj potwierdzenie ryzyka jest operacją atomową, która wymaga podania konkretnego identyfikatora zdarzenia ryzyka lub ID użytkownika. Jest to kluczowy element w scenariuszach Security Orchestration, Automation and Response (SOAR), gdzie system SIEM wywołuje ten cmdlet przez webhooka. Należy pamiętać, że wykonanie tego polecenia wymaga uprawnień IdentityRiskyUser.ReadWrite.All, które są ściśle audytowane.

msgraph az login vs connect-mggraph

Rozróżnienie między az login a Connect-MgGraph jest fundamentalne dla architektury automatyzacji w 2026 roku. az login z Azure CLI uwierzytelnia do płaszczyzny zarządzania Azure Resource Manager (ARM), podczas gdy msgraph az login vs connect-mggraph to wybór między zarządzaniem infrastrukturą a zarządzaniem tożsamością i danymi Microsoft 365. Token uzyskany przez az login nie daje dostępu do endpointów Microsoft Graph, chyba że zostanie jawnie wymieniony na token dla Graph API, co jest operacją nieefektywną. Z drugiej strony, Connect-MgGraph z parametrem -Identity jest preferowaną metodą w Azure Automation i Azure Functions, gdzie wykorzystuje tożsamość zarządzaną (Managed Identity) bezpośrednio do Graph API. W praktyce, skrypty wdrażające maszyny wirtualne używają az login, natomiast skrypty przypisujące licencje Microsoft 365 użytkownikom muszą korzystać z Connect-MgGraph. Mylenie tych dwóch kontekstów prowadzi do błędów 401 Unauthorized, ponieważ token ARM nie jest ważny dla zasobów takich jak https://graph.microsoft.com.

msgraph beta vs v1

Wybór między endpointem beta a v1.0 w Microsoft Graph PowerShell SDK to decyzja o balansie między stabilnością a dostępem do najnowszych funkcji. msgraph beta vs v1 w 2026 roku to dylemat, który rozwiązuje się przez świadome zarządzanie profilem sesji za pomocą Select-MgProfile -Name Beta. Endpoint beta zawiera API będące w aktywnej fazie rozwoju, oferując dostęp do funkcji AI, takich jak Microsoft 365 Copilot, czy zaawansowanych mechanizmów ochrony danych, zanim trafią one do ogólnej dostępności. Jednak poleganie na beta w produkcji jest ryzykowne – Microsoft nie gwarantuje kompatybilności wstecznej, a zmiany w strukturze JSON mogą nastąpić bez okresu przejściowego. Wersja v1.0 jest natomiast objęta umową SLA i przeznaczona dla krytycznych obciążeń biznesowych. W praktyce eksperckiej, skrypty audytowe często korzystają z beta, aby wyciągnąć dodatkowe atrybuty bezpieczeństwa, podczas gdy automatyzacja procesów HR (tworzenie kont, przypisywanie licencji) jest bezwzględnie realizowana na v1.0, aby uniknąć awarii spowodowanych zmianą kontraktu API.

msgraph delegated vs application

Model uprawnień w Microsoft Graph definiuje dwa główne tryby dostępu, a zrozumienie msgraph delegated vs application jest kluczowe dla bezpieczeństwa. Uprawnienia delegowane (Delegated) działają w kontekście zalogowanego użytkownika – aplikacja lub skrypt może zrobić tylko to, do czego uprawniony jest ten konkretny człowiek. Jest to idealne dla interaktywnych skryptów administratora. Uprawnienia aplikacyjne (Application) pozwalają na działanie bez użytkownika, co jest niezbędne dla usług działających w tle (daemon apps). W 2026 roku, przy zaostrzeniu polityk Zero Trust, Microsoft domyślnie blokuje możliwość nadawania wysokich uprawnień aplikacyjnych bez zgody administratora globalnego. Podczas łączenia przez Connect-MgGraph, użycie certyfikatu lub sekretu klienckiego automatycznie wymusza tryb aplikacyjny, podczas gdy logowanie interaktywne lub z kodem urządzenia działa w trybie delegowanym. Eksperci unikają nadawania uprawnień Directory.ReadWrite.All w trybie aplikacyjnym, chyba że jest to absolutnie konieczne, preferując ograniczone scope’y do konkretnych zadań.

msgraph paging

Przetwarzanie dużych zbiorów danych w Microsoft Graph wymaga opanowania mechanizmu stronicowania, ponieważ API nigdy nie zwraca więcej niż określony limit rekordów w jednej odpowiedzi. msgraph paging w PowerShell SDK jest obsługiwane automatycznie przez parametr -All, który ukrywa przed użytkownikiem iterację po kolejnych stronach (@odata.nextLink). Jednak w 2026 roku, przy przetwarzaniu milionów obiektów, automatyczne stronicowanie może prowadzić do wyczerpania pamięci RAM, ponieważ cmdlet przechowuje całą kolekcję w zmiennej. Zaawansowane skrypty implementują ręczne stronicowanie za pomocą Invoke-MgGraphRequest i pętli while, co pozwala na przetwarzanie strumieniowe (streaming) i zapisywanie danych partiami na dysk. Kluczowe jest tutaj monitorowanie nagłówków odpowiedzi HTTP, szczególnie throttling, który wymusza implementację wykładniczego cofania (exponential backoff). Efektywne zarządzanie stronicowaniem jest szczególnie ważne przy raportowaniu, gdzie zapytania o zdarzenia logowania (signIns) mogą zwracać setki stron danych.

Aby skutecznie wdrożyć te zaawansowane techniki automatyzacji w swoim środowisku, warto oprzeć się na sprawdzonych rozwiązaniach licencyjnych i konsultacyjnych. Specjaliści z Microsoft 365 pomagają nie tylko w doborze odpowiednich planów subskrypcyjnych, ale także w projektowaniu bezpiecznej architektury uprawnień aplikacyjnych, co jest fundamentem dla stabilnego działania wszystkich opisanych cmdletów.

Zrozumienie niuansów między trybem delegowanym a aplikacyjnym oraz efektywne stronicowanie danych to kompetencje, które bezpośrednio przekładają się na wydajność operacyjną firmy. Profesjonalne wsparcie w zakresie Microsoft 365 umożliwia zespołom IT szybkie przejście przez proces migracji z przestarzałych modułów AzureAD do nowoczesnego Graph SDK, eliminując ryzyko przestojów i luk w bezpieczeństwie.

W kontekście dynamicznych zmian w API Microsoft Graph i ciągłego rozwoju funkcji bezpieczeństwa, utrzymanie wewnętrznych kompetencji na najwyższym poziomie bywa wyzwaniem. Współpraca z ekspertami od Microsoft 365 daje dostęp do wiedzy o najnowszych funkcjach, takich jak zaawansowane polityki uwierzytelniania czy automatyzacja reakcji na ryzykowne zdarzenia, zapewniając, że środowisko IT jest zawsze o krok przed potencjalnymi zagrożeniami.

Najczęściej zadawane pytania

Tak. Sam moduł PowerShell i Microsoft Graph API są darmowe — płacisz wyłącznie za licencje Microsoft 365, którymi zarządzasz (np. Business Basic, E3, E5). Nie ma dodatkowych opłat za używanie Graph API przez PowerShell.
Microsoft Graph PowerShell SDK działa na **PowerShell 5.1** (wbudowany w Windows 10 i Windows 11) oraz **PowerShell 7.x** (zalecany). PowerShell 7.4 to wersja LTS (Long Term Support) rekomendowana przez Microsoft na 2026 rok i preinstalowana w Windows 11 24H2 i 25H2.
Tak — stare moduły przestały działać 30 marca 2024 roku, gdy Microsoft wyłączył Azure AD Graph API. Jeśli masz skrypty, które nie były uruchamiane od tamtego czasu, rzucą błędem autoryzacji przy pierwszej próbie wykonania. Nie ma okresu przejściowego — migracja jest obowiązkowa.
Microsoft Graph PowerShell SDK zawiera wbudowaną komendę `Find-MgGraphCommand`, która pozwala wyszukiwać cmdlety po słowach kluczowych. `Find-MgGraphCommand -Command Get-AzureADUser` podpowie `Get-MgUser`. Dodatkowo migracyjny przewodnik Microsoft zawiera tabelę mapowania dla 80 najczęstszych cmdletów.
Minimalny zestaw scope'ów dla administratora M365: `User.ReadWrite.All`, `Group.ReadWrite.All`, `Directory.ReadWrite.All`, `Organization.Read.All`, `RoleManagement.ReadWrite.Directory`, `AuditLog.Read.All`. Dla operacji tylko-do-odczytu (raporty, monitoring) wystarczą odpowiedniki `.Read.All`.
Tak — od 2026 roku zalecanym podejściem jest korzystanie z modułu **ExchangeOnlineManagement V3**, który wewnętrznie używa REST API (Graph), ale zachowuje znane cmdlety Exchange (`Get-Mailbox`, `Set-Mailbox`). Nie ma potrzeby przepisywania skryptów Exchange, wystarczy zaktualizować moduł do wersji 3.x.
Użyj `Get-MgUser -All -PageSize 50` z selekcją tylko potrzebnych pól (`-Property "id,displayName,userPrincipalName"`). Bez `-Property` Graph zwraca domyślny zestaw ~15 pól, co przy dużych tenantach generuje zbędny transfer i wydłuża wykonanie. Dla ekstremalnie dużych katalogów (100 000+) rozważ eksport przez `Get-MgReport` zamiast iterowania po użytkownikach.
Włącz szczegółowe logowanie: `Get-MgGraphRequest -Debug` lub ustaw `$DebugPreference = "Continue"`. Pełny komunikat błędu Graph API jest zawsze w `$Error[0].ErrorDetails.Message` jako JSON — parsuj go przez `$_.Exception.Response` dla uzyskania kodu błędu i korelacji request-id.
Tak — Microsoft Graph PowerShell SDK działa w pełni na Windows Server 2025 Server Core i w kontenerach Windows. App-only authentication z certyfikatem jest wymagane, bo device code flow (fallback interaktywny) nie działa na headless.
Nie w pełni. Graph PowerShell pokrywa ~95% operacji administracyjnych, ale niektóre zaawansowane konfiguracje (np. Microsoft Purview eDiscovery Premium, Teams Phone policies, zaawansowane reguły Microsoft Defender for Office 365) wciąż wymagają GUI. W codziennej administracji użytkownikami, grupami i licencjami Graph w pełni zastępuje portal. --- **Administratorzy Microsoft 365, którzy automatyzują zarządzanie przez PowerShell, oszczędzają średnio 15-20 godzin miesięcznie.** Jeśli Twój zespół dopiero buduje kompetencje w tym obszarze, zacznij od środowiska deweloperskiego — każda subskrypcja Microsoft 365 Business Premium czy Microsoft 365 E5 zawiera deweloperski tenant testowy. Legalne kluc

Czy ten artykuł był pomocny?