Sdílet prostřednictvím


Příchozí zřizování řízené rozhraním API pomocí skriptu PowerShellu

Tento kurz popisuje, jak pomocí skriptu PowerShellu implementovat příchozí zřizování řízené rozhraním API microsoft Entra ID. Pomocí kroků v tomto kurzu můžete převést soubor CSV obsahující data lidských zdrojů na datovou část hromadného požadavku a odeslat ho do koncového bodu rozhraní API Microsoft Entra provisioning /bulkUpload . Článek obsahuje také pokyny k použití stejného modelu integrace s jakýmkoli systémem záznamů.

Scénář integrace

Obchodní požadavek

Váš systém záznamů pravidelně generuje exporty souborů CSV obsahující data pracovního procesu. Chcete implementovat integraci, která čte data ze souboru CSV a automaticky zřídí uživatelské účty ve vašem cílovém adresáři (místní Active Directory pro hybridní uživatele a Id Microsoft Entra pro uživatele jen v cloudu).

Požadavek na implementaci

Z hlediska implementace:

  • Chcete použít bezobslužný skript PowerShellu ke čtení dat z exportu souboru CSV a jeho odeslání do koncového bodu rozhraní API pro příchozí zřizování.
  • Ve skriptu PowerShellu nechcete implementovat složitou logiku porovnávání dat identity mezi systémem záznamů a cílovým adresářem.
  • Chcete použít službu zřizování Microsoft Entra k použití pravidel zřizování spravovaného IT pro automatické vytváření, aktualizaci, povolení nebo zakázání účtů v cílovém adresáři (místní Active Directory nebo ID Microsoft Entra).

Graphic of PowerShell-based integration.

Varianty scénářů integrace

I když tento kurz používá soubor CSV jako systém záznamů, můžete ukázkový skript PowerShellu přizpůsobit tak, aby četl data z libovolného systému záznamu. Tady je seznam variant scénářů podnikové integrace, ve kterých je možné implementovat příchozí zřizování řízené rozhraním API pomocí skriptu PowerShellu.

# Systém evidence Pokyny k integraci při použití PowerShellu ke čtení zdrojových dat
0 Tabulka databáze Pokud používáte databázi Azure SQL nebo místní SQL Server, můžete pomocí rutiny Read-SqlTableData číst data uložená v tabulce databáze SQL. Pomocí rutiny Invoke-SqlCmd můžete spouštět skripty Transact-SQL nebo XQuery.
Pokud používáte databázi Oracle / MySQL / Postgres, můžete najít modul PowerShellu publikovaný dodavatelem nebo dostupným v Galerie prostředí PowerShell. Pomocí modulu můžete číst data z databázové tabulky.
2 Server LDAP System.DirectoryServices.Protocols K dotazování serveru LDAP použijte rozhraní .NET API nebo jeden z modulů LDAP dostupných v Galerie prostředí PowerShell. Seznamte se se schématem a hierarchií PROTOKOLU LDAP pro načtení uživatelských dat ze serveru LDAP.
3 Jakýkoli systém, který zveřejňuje rozhraní REST API Ke čtení dat z koncového bodu rozhraní REST API pomocí PowerShellu můžete použít rutinu Invoke-RestMethod z Microsoft.PowerShell.Utility modulu. Projděte si dokumentaci k rozhraní REST API a zjistěte, jaké parametry a hlavičky očekává, jaký formát vrací a jakou metodu ověřování používá. Příkaz pak můžete odpovídajícím způsobem upravit Invoke-RestMethod .
4 Jakýkoli systém, který zveřejňuje rozhraní SOAP API Ke čtení dat z koncového bodu rozhraní SOAP API pomocí PowerShellu můžete použít rutinu New-WebServiceProxy z Microsoft.PowerShell.Management modulu. Projděte si dokumentaci k rozhraní SOAP API a zjistěte, jaké parametry a hlavičky očekává, jaký formát vrací a jakou metodu ověřování používá. Příkaz pak můžete odpovídajícím způsobem upravit New-WebServiceProxy .

Po přečtení zdrojových dat použijte pravidla předběžného zpracování a převeďte výstup z vašeho systému záznamu na hromadný požadavek, který lze odeslat do koncového bodu rozhraní API BulkUpload microsoft Entra.

Důležité

Pokud chcete sdílet svůj integrační skript PowerShellu s komunitou, publikujte ho na Galerie prostředí PowerShell a informujte nás o úložišti entra-id-inbound-provisioningGitHub, abychom mohli přidat odkaz.

Jak používat tento kurz

Ukázkový skript PowerShellu publikovaný v úložišti GitHub pro příchozí zřizování Microsoft Entra automatizuje několik úloh. Má logiku pro zpracování velkých souborů CSV a blokování hromadného požadavku tak, aby v každém požadavku odeslalo 50 záznamů. Tady je postup, jak ho můžete otestovat a přizpůsobit podle požadavků na integraci.

Poznámka:

Ukázkový skript PowerShellu je k dispozici "tak, jak je" pro referenční informace k implementaci. Pokud máte dotazy související se skriptem nebo pokud ho chcete vylepšit, použijte úložiště projektu GitHubu.

# Úloha Automatizace Průvodce implementací Rozšířené vlastní nastavení
0 Čtení dat pracovního procesu ze souboru CSV Stáhněte si skript PowerShellu. Má okamžitou logiku pro čtení dat z libovolného souboru CSV. Pokud se chcete seznámit s různými režimy spouštění tohoto skriptu, přečtěte si CSV2SCIM podrobnosti o použití PowerShellu. Pokud se váš systém záznamů liší, projděte si pokyny uvedené v části Varianty scénářů integrace, jak můžete přizpůsobit skript PowerShellu.
2 Předběžné zpracování a převod dat do formátu SCIM Skript PowerShellu ve výchozím nastavení převede každý záznam v souboru CSV na reprezentaci uživatele SCIM Core + Enterprise. Pokud se chcete seznámit s tímto procesem, postupujte podle kroků v části Vygenerování datové části hromadného požadavku se standardním schématem . Pokud soubor CSV obsahuje různá pole, upravte soubor AttributeMapping.psd tak, aby vygeneroval platného uživatele SCIM. Hromadný požadavek můžete také vygenerovat pomocí vlastního schématu SCIM. Aktualizujte skript PowerShellu tak, aby zahrnoval libovolnou vlastní logiku ověření dat CSV.
3 Použijte certifikát pro ověřování pro Microsoft Entra ID. Vytvořte instanční objekt, který má přístup k rozhraní API pro příchozí zřizování. V části Konfigurace klientského certifikátu pro ověřování instančního objektu najdete postup použití klientského certifikátu pro ověřování. Pokud chcete pro ověřování použít spravovanou identitu místo instančního objektu, zkontrolujte použití Connect-MgGraph v ukázkovém skriptu a aktualizujte ji tak, aby používala spravované identity.
4 Zřiďte účty v místní Active Directory nebo Microsoft Entra ID. Konfigurace příchozí aplikace příchozího zřizování řízeného rozhraním API Tím se vygeneruje jedinečný koncový bod rozhraní API /bulkUpload . Informace o nahrání dat do tohoto koncového bodu najdete v části Vygenerování a nahrání datové části hromadné žádosti jako uživatel s oprávněními správce. Ověřte tok atributu a přizpůsobte mapování atributů podle požadavků na integraci. Pokud chcete spustit skript pomocí instančního objektu s ověřováním na základě certifikátů, projděte si kroky v části Nahrání datové části hromadné žádosti pomocí ověřování pomocí klientského certifikátu. Pokud plánujete použít hromadný požadavek s vlastním schématem SCIM, rozšiřte schéma zřizovací aplikace tak, aby zahrnovalo vlastní prvky schématu SCIM.
5 Zkontrolujte protokoly zřizování a zopakujte zřizování neúspěšných záznamů. Informace o načtení a analýze dat protokolu zřizování najdete v části Získání protokolů zřizování nejnovějších cyklů synchronizace. Identifikujte neúspěšné záznamy uživatelů a zahrňte je do dalšího cyklu nahrávání. -
6 Nasaďte automatizaci založenou na PowerShellu do produkčního prostředí. Jakmile ověříte tok zřizování řízený rozhraním API a přizpůsobíte skript PowerShellu tak, aby splňoval vaše požadavky, můžete automatizaci nasadit jako runbook pracovního postupu PowerShellu ve službě Azure Automation nebo jako proces serveru naplánovaný tak, aby běžel na Windows Serveru. -

Stažení skriptu PowerShellu

  1. Přístup k úložišti entra-id-inbound-provisioningGitHub .
  2. Pomocí možnosti Kód ->Clone nebo Code ->Download ZIP zkopírujte obsah tohoto úložiště do místní složky.
  3. Přejděte do složky PowerShell/CSV2SCIM. Má následující adresářovou strukturu:
    • Src
      • CSV2SCIM.ps1 (hlavní skript)
      • ScimSchemaRepresentations (složka obsahující standardní definice schématu SCIM pro ověřování souborů AttributeMapping.psd1)
        • EnterpriseUser.json, Group.json, Schema.json, User.json
    • Vzorky
      • AttributeMapping.psd1 (ukázkové mapování sloupců v souboru CSV na standardní atributy SCIM)
      • csv-with-2-records.csv (ukázkový soubor CSV se dvěma záznamy)
      • csv-with-1000-records.csv (ukázkový soubor CSV s 1000 záznamy)
      • Test-ScriptCommands.ps1 (ukázkové příkazy použití)
      • UseClientCertificate.ps1 (skript pro vygenerování certifikátu podepsaného svým držitelem a jeho nahrání jako přihlašovací údaje instančního objektu pro použití v toku OAuth)
      • Sample1 (složka s dalšími příklady toho, jak se sloupce souborů CSV dají mapovat na standardní atributy SCIM. Pokud získáte různé soubory CSV pro zaměstnance, dodavatele, interny, můžete vytvořit samostatný soubor AttributeMapping.psd1 pro každou entitu.)
  4. Stáhněte a nainstalujte nejnovější verzi PowerShellu.
  5. Spuštěním příkazu povolte spouštění vzdálených podepsaných skriptů:
    set-executionpolicy remotesigned
    
  6. Nainstalujte následující požadované moduly:
    Install-Module -Name Microsoft.Graph.Applications,Microsoft.Graph.Reports
    

Generování datové části hromadného požadavku se standardním schématem

Tato část vysvětluje, jak vygenerovat datovou část hromadné žádosti se standardními atributy uživatele SCIM Core a podnikového uživatele ze souboru CSV. Pro ilustraci postupu použijeme soubor Samples/csv-with-2-records.csvCSV .

  1. Otevřete soubor Samples/csv-with-2-records.csv CSV v Poznámkový blok++ nebo Excelu a zkontrolujte sloupce, které jsou v souboru. Screenshot of columns in Excel.

  2. V Poznámkový blok++ nebo editoru zdrojového kódu, jako je Visual Studio Code, otevřete datový soubor Samples/AttributeMapping.psd1 PowerShellu, který umožňuje mapování sloupců souborů CSV na standardní atributy schématu SCIM. Předpřipravený soubor již obsahuje předem nakonfigurované mapování sloupců souborů CSV na odpovídající atributy schématu SCIM.

        @{
        externalId   = 'WorkerID'
        name         = @{
            familyName = 'LastName'
            givenName  = 'FirstName'
        }
        active       = { $_.'WorkerStatus' -eq 'Active' }
        userName     = 'UserID'
        displayName  = 'FullName'
        nickName     = 'UserID'
        userType     = 'WorkerType'
        title        = 'JobTitle'
        addresses    = @(
            @{
                type          = { 'work' }
                streetAddress = 'StreetAddress'
                locality      = 'City'
                postalCode    = 'ZipCode'
                country       = 'CountryCode'
            }
        )
        phoneNumbers = @(
            @{
                type  = { 'work' }
                value = 'OfficePhone'
            }
        )
        "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" = @{
            employeeNumber = 'WorkerID'
            costCenter     = 'CostCenter'
            organization   = 'Company'
            division       = 'Division'
            department     = 'Department'
            manager        = @{
                value = 'ManagerID'
            }
        }
    }
    
  3. Otevřete PowerShell a přejděte do adresáře CSV2SCIM\src.

  4. Spuštěním následujícího příkazu inicializujete proměnnou AttributeMapping .

    $AttributeMapping = Import-PowerShellDataFile '..\Samples\AttributeMapping.psd1'
    
  5. Spuštěním následujícího příkazu ověřte, jestli AttributeMapping má soubor platné atributy schématu SCIM. Tento příkaz vrátí hodnotu True , pokud je ověření úspěšné.

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ValidateAttributeMapping
    
  6. Řekněme, že AttributeMapping soubor má neplatný atribut SCIM s názvem userId a pak režim ValidateAttributeMapping zobrazí následující chybu.

    Screenshot of a mapping error.

  7. Jakmile ověříte, že AttributeMapping je soubor platný, spuštěním následujícího příkazu vygenerujte v souboru BulkRequestPayload.json hromadný požadavek, který obsahuje dva záznamy, které jsou v souboru CSV.

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping > BulkRequestPayload.json
    
  8. Obsah souboru BulkRequestPayload.json můžete otevřít a ověřit, zda jsou atributy SCIM nastaveny podle mapování definovaného v souboru AttributeMapping.psd1.

  9. Výše vygenerovaný soubor můžete publikovat do koncového bodu rozhraní API /bulkUpload přidruženého k vaší zřizovací aplikaci pomocí Graph Exploreru nebo Postmanu nebo cURL. Reference:

  10. Pokud chcete přímo nahrát vygenerovanou datovou část do koncového bodu rozhraní API pomocí stejného skriptu PowerShellu, přečtěte si další část.

Generování a nahrání datové části hromadné žádosti jako uživatel s rolí správce

Tato část vysvětluje, jak odeslat datovou část vygenerovaného hromadného požadavku do koncového bodu rozhraní API pro příchozí zřizování.

  1. Přihlaste se do centra pro správu Microsoft Entra jako alespoň aplikační Správa istrator.

  2. Přejděte na ID objektu vlastností>aplikace>zřizování a zkopírujte ServicePrincipalId přidružené k vaší aplikaci zřizování.

    Screenshot of the Object ID.

  3. Jako uživatel s rolí Globální Správa istrator spusťte následující příkaz zadáním správných hodnot pro ServicePrincipalId a TenantId. Pokud pro tohoto tenanta ještě neexistuje ověřená relace, zobrazí se výzva k ověření. Zadejte svůj souhlas s oprávněními, která se zobrazí při ověřování.

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ServicePrincipalId <servicePrincipalId> -TenantId "contoso.onmicrosoft.com"
    
  4. Pokud chcete ověřit zpracování výše uvedené žádosti, přejděte do okna Protokoly zřizování vaší aplikace pro zřizování.

Konfigurace klientského certifikátu pro ověřování instančního objektu

Poznámka:

Zde uvedené pokyny ukazují, jak vygenerovat certifikát podepsaný svým držitelem. Certifikáty podepsané svým držitelem nejsou ve výchozím nastavení důvěryhodné a jejich údržba může být obtížná. Mohou také používat zastaralé hash a šifrovací sady, které nemusí být silné. Kvůli lepšímu zabezpečení si kupte certifikát podepsaný dobře známou certifikační autoritou.

  1. Spuštěním následujícího skriptu PowerShellu vygenerujte nový certifikát podepsaný svým držitelem. Tento krok můžete přeskočit, pokud jste si koupili certifikát podepsaný dobře známou certifikační autoritou.
    $ClientCertificate = New-SelfSignedCertificate -Subject 'CN=CSV2SCIM' -KeyExportPolicy 'NonExportable' -CertStoreLocation Cert:\CurrentUser\My
    $ThumbPrint = $ClientCertificate.ThumbPrint
    
    Vygenerovaný certifikát je uložen aktuální uživatel\Osobní\Certifikáty. Můžete ho zobrazit pomocí možnosti Ovládací panely ->Spravovat uživatelské certifikáty.
  2. Pokud chcete tento certifikát přidružit k platnému instančnímu objektu, přihlaste se do centra pro správu Microsoft Entra jako application Správa istrator.
  3. Otevřete instanční objekt, který jste nakonfigurovali v části Registrace aplikací.
  4. Zkopírujte ID objektu z okna Přehled. Použijte hodnotu k nahrazení řetězce <AppObjectId>. Zkopírujte ID aplikace (klienta). Použijeme ho později a bude odkazován jako <AppClientId>.
  5. Spuštěním následujícího příkazu nahrajte certifikát do registrovaného instančního objektu.
    Connect-MgGraph -Scopes "Application.ReadWrite.All"
    Update-MgApplication -ApplicationId '<AppObjectId>' -KeyCredentials @{
       Type = "AsymmetricX509Cert"
       Usage = "Verify"
       Key = $ClientCertificate.RawData
    }
    
    V okně Certifikáty a tajné kódy registrované aplikace by se měl zobrazit certifikát. Screenshot of client certificate.
  6. Do aplikace instančního objektu přidejte následující dva obory oprávnění aplikace : Application.Read.All a Synchronization.Read.All. Ty jsou vyžadovány pro skript PowerShellu, aby vyhledaly zřizovací aplikaci ServicePrincipalId a načítaly zřizování JobId.

Nahrání datové části hromadné žádosti pomocí ověřování klientských certifikátů

Tato část vysvětluje, jak odeslat datovou část vygenerovaného hromadného požadavku do koncového bodu rozhraní API pro příchozí zřizování pomocí důvěryhodného klientského certifikátu.

  1. Otevřete aplikaci zřizování řízenou rozhraním API, kterou jste nakonfigurovali. Zkopírujte přidruženou ServicePrincipalId aplikaci pro zřizování z ID objektu Zřizování vlastností>aplikace.>

    Screenshot of the Object ID.

  2. Spuštěním následujícího příkazu zadejte správné hodnoty pro ServicePrincipalIdClientId a TenantId.

    $ClientCertificate = Get-ChildItem -Path cert:\CurrentUser\my\ | Where-Object {$_.Subject -eq "CN=CSV2SCIM"}  
    $ThumbPrint = $ClientCertificate.ThumbPrint
    
    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -TenantId "contoso.onmicrosoft.com" -ServicePrincipalId "<ProvisioningAppObjectId>" -ClientId "<AppClientId>" -ClientCertificate (Get-ChildItem Cert:\CurrentUser\My\$ThumbPrint)
    
  3. Pokud chcete ověřit zpracování výše uvedené žádosti, přejděte do okna Protokoly zřizování vaší aplikace pro zřizování.

Generování hromadného požadavku s využitím vlastního schématu SCIM

Tato část popisuje, jak vygenerovat hromadný požadavek s vlastním oborem názvů schématu SCIM skládajícím se z polí v souboru CSV.

  1. V Poznámkový blok++ nebo editoru zdrojového kódu, jako je Visual Studio Code, otevřete datový soubor Samples/AttributeMapping.psd1 PowerShellu, který umožňuje mapování sloupců souborů CSV na standardní atributy schématu SCIM. Předpřipravený soubor již obsahuje předem nakonfigurované mapování sloupců souborů CSV na odpovídající atributy schématu SCIM.

  2. Otevřete PowerShell a přejděte do adresáře CSV2SCIM\src.

  3. Spuštěním následujícího příkazu inicializujete proměnnou AttributeMapping .

    $AttributeMapping = Import-PowerShellDataFile '..\Samples\AttributeMapping.psd1'
    
  4. Spuštěním následujícího příkazu ověřte, jestli AttributeMapping má soubor platné atributy schématu SCIM. Tento příkaz vrátí hodnotu True , pokud je ověření úspěšné.

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ValidateAttributeMapping
    
  5. Kromě atributů uživatele a podnikového uživatele SCIM Core získáte plochý seznam všech polí CSV v rámci vlastního oboru názvů urn:ietf:params:scim:schemas:extension:contoso:1.0:Userschématu SCIM, spusťte následující příkaz.

     .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ScimSchemaNamespace "urn:ietf:params:scim:schemas:extension:contoso:1.0:User"  > BulkRequestPayloadWithCustomNamespace.json
    

    Pole CSV se zobrazí v oboru názvů vlastního schématu SCIM. Screenshot of user details under custom schema.

Rozšíření schématu úlohy zřizování

Datový soubor odesílaný týmem lidských zdrojů často obsahuje více atributů, které nemají přímou reprezentaci ve standardním schématu SCIM. Pro reprezentaci takových atributů doporučujeme vytvořit schéma rozšíření SCIM a přidat atributy v rámci tohoto oboru názvů.

Skript CSV2SCIM poskytuje režim spuštění, který UpdateSchema čte všechny sloupce v souboru CSV, přidá je do oboru názvů schématu rozšíření a aktualizuje schéma zřizovací aplikace.

Poznámka:

Pokud už rozšíření atributů existují ve schématu zřizovací aplikace, tento režim vygeneruje upozornění, že rozšíření atributů již existuje. Proto není problém se spuštěním skriptu CSV2SCIM v režimu UpdateSchema , pokud se do souboru CSV přidají nová pole a chcete je přidat jako příponu.

Pro ilustraci postupu použijeme soubor Samples/csv-with-2-records.csv CSV, který je ve složce CSV2SCIM .

  1. Otevřete soubor Samples/csv-with-2-records.csv CSV v Poznámkový blok, Excelu nebo TextPadu a zkontrolujte sloupce v souboru.

    Screenshot of how to check CSV columns.

  2. Spusťte následující příkaz:

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -UpdateSchema -ServicePrincipalId <servicePrincipalId> -TenantId "contoso.onmicrosoft.com" -ScimSchemaNamespace "urn:ietf:params:scim:schemas:extension:contoso:1.0:User"
    
  3. Aktualizaci schématu zřizovací aplikace můžete ověřit otevřením stránky Mapování atributů a přístupem k seznamu upravit atribut pro rozhraní API v části Upřesnit možnosti.

  4. Seznam atributů zobrazuje atributy v novém oboru názvů.

Získání protokolů zřizování nejnovějších cyklů synchronizace

Po odeslání hromadné žádosti můžete dotazovat protokoly nejnovějších cyklů synchronizace zpracovávaných id Microsoft Entra. Pomocí skriptu PowerShellu můžete načíst statistiky synchronizace a podrobnosti o zpracování a uložit je pro analýzu.

  1. Pokud chcete zobrazit podrobnosti protokolu a statistiku synchronizace v konzole, spusťte následující příkaz:

    .\CSV2SCIM.ps1 -ServicePrincipalId <servicePrincipalId> -TenantId "contoso.onmicrosoft.com" -GetPreviousCycleLogs -NumberOfCycles 1
    

    Screenshot of sync statistics.

    Poznámka:

    NumberOfCycles je ve výchozím nastavení 1. Zadejte číslo pro načtení dalších cyklů synchronizace.

  2. Pokud chcete zobrazit statistiku synchronizace v konzole a uložit podrobnosti protokolů do proměnné, spusťte následující příkaz:

    $logs=.\CSV2SCIM.ps1 -ServicePrincipalId <servicePrincipalId> -TenantId "contoso.onmicrosoft.com" -GetPreviousCycleLogs
    

    Pokud chcete příkaz spustit pomocí ověřování klientským certifikátem, spusťte příkaz zadáním správných hodnot pro ServicePrincipalIdaTenantIdClientId:

    $ClientCertificate = Get-ChildItem -Path cert:\CurrentUser\my\ | Where-Object {$_.Subject -eq "CN=CSV2SCIM"}  
    $ThumbPrint = $ClientCertificate.ThumbPrint
    
    $logs=.\CSV2SCIM.ps1 -ServicePrincipalId "<ProvisioningAppObjectId>" -TenantId "contoso.onmicrosoft.com" -ClientId "<AppClientId>" -ClientCertificate (Get-ChildItem Cert:\CurrentUser\My\$ThumbPrint) -GetPreviousCycleLogs -NumberOfCycles 1
    
    • Pokud chcete zobrazit podrobnosti konkrétního záznamu, můžeme se smyčce připojit do kolekce nebo vybrat konkrétní index, například: $logs[0]

      Screenshot of a selected index.

    • Příkaz můžeme použít where-object také k vyhledání konkrétního záznamu pomocí id zdroje nebo displayName. Ve vlastnosti ProvisioningLogs můžeme najít všechny podrobnosti operace provedené pro daný záznam.

      $user = $logs | where sourceId -eq '1222'
      $user.ProvisioningLogs | fl
      

      Screenshot of provisioning logs.

    • U atributu ModifiedProperties vidíme konkrétní vlastnosti ovlivněné uživatelem. $user.ProvisioningLogs.ModifiedProperties

      Screenshot of properties.

Dodatek

CSV2SCIM podrobností o využití PowerShellu

Tady je seznam parametrů příkazového řádku přijatých skriptem powershellu CSV2SCIM.

PS > CSV2SCIM.ps1 -Path <path-to-csv-file> 
[-ScimSchemaNamespace <customSCIMSchemaNamespace>] 
[-AttributeMapping $AttributeMapping] 
[-ServicePrincipalId <spn-guid>] 
[-ValidateAttributeMapping]
[-UpdateSchema]
[-ClientId <client-id>]
[-ClientCertificate <certificate-object>]
[-RestartService]

Poznámka:

ValidateAttributeMapping Parametry AttributeMapping příkazového řádku odkazují na mapování atributů sloupce CSV na standardní prvky schématu SCIM. Neodkazuje na mapování atributů, která provádíte v centru pro správu Microsoft Entra zřizování aplikace mezi zdrojovými prvky schématu SCIM a cílovými atributy Microsoft Entra / místní Active Directory.

Parametr Popis Zpracování poznámek
Cesta Úplná nebo relativní cesta k souboru CSV. Příklad: .\Samples\csv-with-1000-records.csv Povinné: Ano
ScimSchemaNamespace Vlastní obor názvů schématu SCIM, který se má použít k odeslání všech sloupců v souboru CSV jako vlastní atributy SCIM patřící do konkrétního oboru názvů. Například urn:ietf:params:scim:schemas:extension:csv:1.0:User Povinné: Pouze pokud chcete:
- Aktualizujte schéma zřizovací aplikace nebo
Pokud chcete do datové části zahrnout vlastní atributy SCIM.
AtributMapping Odkazuje na soubor PowerShell Data (přípona .psd1), který mapuje sloupce v souboru CSV na atributy uživatele SCIM Core a podnikového uživatele.
Viz příklad: AttributeMapping.psd soubor pro CSV2SCIM skript.
Příklad: powershell $AttributeMapping = Import-PowerShellDataFile '.\Samples\AttributeMapping.psd1'`-AttributeMapping $AttributeMapping
Povinné: Ano
, jediný scénář v případě, že toto není nutné zadat, je při použití UpdateSchema přepínače.
ValidateAttributeMapping Pomocí tohoto příznaku Switch ověřte, že soubor AttributeMapping obsahuje atributy, které odpovídají schématu uživatele SCIM Core a Enterprise. Povinné: Nedoporučujeme
ho používat k zajištění dodržování předpisů.
ServicePrincipalId Hodnota GUID id instančního objektu vaší aplikace zřizování, které můžete načíst z ID objektu vlastností>zřizovací aplikace> Povinné: Pouze v případě, že chcete:
– Aktualizujte schéma zřizovací aplikace nebo
odešlete vygenerovaný hromadný požadavek do koncového bodu rozhraní API.
UpdateSchema Pomocí tohoto přepínače dejte skriptu pokyn ke čtení sloupců CSV a přidejte je jako vlastní atributy SCIM ve schématu zřizovací aplikace.
ClientId ID klienta registrované aplikace Microsoft Entra, která se má použít pro tok ověřování OAuth. Tato aplikace musí mít platné přihlašovací údaje certifikátu. Povinné: Pouze při ověřování na základě certifikátů.
ClientCertificate Ověřovací certifikát klienta, který se má použít během toku OAuth. Povinné: Pouze při ověřování na základě certifikátů.
GetPreviousCycleLogs Pokud chcete získat protokoly zřizování nejnovějších cyklů synchronizace.
NumberOfCycles Chcete-li určit, kolik synchronizačních cyklů se má načíst. Tato hodnota je ve výchozím nastavení 1.
RestartService Pomocí této možnosti skript dočasně pozastaví úlohu zřizování před nahráním dat, nahraje data a pak znovu spustí úlohu, aby se zajistilo okamžité zpracování datové části. Tuto možnost použijte pouze během testování.

AttributeMapping.psd soubor

Tento soubor slouží k mapování sloupců v souboru CSV na standardní prvky schématu atributů uživatele SCIM Core a podnikového uživatele. Soubor také vygeneruje odpovídající reprezentaci obsahu souboru CSV jako datovou část hromadné žádosti.

V dalším příkladu jsme namapovali následující sloupce v souboru CSV na jejich protějšky SCIM Core User a Enterprise User atributy.

Screenshot of CSV columns for mapped attributes.

    @{
    externalId   = 'WorkerID'
    name         = @{
        familyName = 'LastName'
        givenName  = 'FirstName'
    }
    active       = { $_.'WorkerStatus' -eq 'Active' }
    userName     = 'UserID'
    displayName  = 'FullName'
    nickName     = 'UserID'
    userType     = 'WorkerType'
    title        = 'JobTitle'
    addresses    = @(
        @{
            type          = { 'work' }
            streetAddress = 'StreetAddress'
            locality      = 'City'
            postalCode    = 'ZipCode'
            country       = 'CountryCode'
        }
    )
    phoneNumbers = @(
        @{
            type  = { 'work' }
            value = 'OfficePhone'
        }
    )
    "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User" = @{
        employeeNumber = 'WorkerID'
        costCenter     = 'CostCenter'
        organization   = 'Company'
        division       = 'Division'
        department     = 'Department'
        manager        = @{
            value = 'ManagerID'
        }
    }
}

Další kroky