Bagikan melalui


Provisi masuk berbasis API dengan skrip PowerShell

Tutorial ini menjelaskan cara menggunakan skrip PowerShell untuk mengimplementasikan provisi masuk berbasis API Microsoft Entra ID. Dengan menggunakan langkah-langkah dalam tutorial ini, Anda dapat mengonversi file CSV yang berisi data SDM menjadi payload permintaan massal dan mengirimkannya ke titik akhir API provisi /bulkUpload Microsoft Entra. Artikel ini juga memberikan panduan tentang bagaimana pola integrasi yang sama dapat digunakan dengan sistem catatan apa pun.

Skenario integrasi

Persyaratan bisnis

Sistem rekaman Anda secara berkala menghasilkan ekspor file CSV yang berisi data pekerja. Anda ingin menerapkan integrasi yang membaca data dari file CSV dan secara otomatis memprovisikan akun pengguna di direktori target Anda (Active Directory lokal untuk pengguna hibrid dan ID Microsoft Entra untuk pengguna khusus cloud).

Persyaratan implementasi

Dari perspektif implementasi:

  • Anda ingin menggunakan skrip PowerShell tanpa pengawas untuk membaca data dari ekspor file CSV dan mengirimkannya ke titik akhir API provisi masuk.
  • Dalam skrip PowerShell, Anda tidak ingin menerapkan logika kompleks membandingkan data identitas antara sistem rekaman dan direktori target Anda.
  • Anda ingin menggunakan layanan provisi Microsoft Entra untuk menerapkan aturan provisi terkelola TI Anda untuk membuat/memperbarui/mengaktifkan/menonaktifkan akun secara otomatis di direktori target (Active Directory lokal atau ID Microsoft Entra).

Graphic of PowerShell-based integration.

Variasi skenario integrasi

Meskipun tutorial ini menggunakan file CSV sebagai sistem rekaman, Anda dapat menyesuaikan sampel skrip PowerShell untuk membaca data dari sistem rekaman apa pun. Berikut adalah daftar variasi skenario integrasi perusahaan, di mana provisi masuk berbasis API dapat diimplementasikan dengan skrip PowerShell.

# Sistem rekaman Panduan integrasi tentang menggunakan PowerShell untuk membaca data sumber
1 Tabel database Jika Anda menggunakan database Azure SQL atau SQL Server lokal, Anda bisa menggunakan cmdlet Read-SqlTableData untuk membaca data yang disimpan dalam tabel database SQL. Anda dapat menggunakan cmdlet Invoke-SqlCmd untuk menjalankan skrip Transact-SQL atau XQuery.
Jika Anda menggunakan database Oracle / MySQL / Postgres, Anda dapat menemukan modul PowerShell yang diterbitkan oleh vendor atau tersedia di Galeri PowerShell. Gunakan modul untuk membaca data dari tabel database Anda.
2 Server LDAP System.DirectoryServices.Protocols Gunakan .NET API atau salah satu modul LDAP yang tersedia di Galeri PowerShell untuk mengkueri server LDAP Anda. Pahami skema dan hierarki LDAP untuk mengambil data pengguna dari server LDAP.
3 Sistem apa pun yang mengekspos REST API Untuk membaca data dari titik akhir REST API menggunakan PowerShell, Anda dapat menggunakan cmdlet Invoke-RestMethod dari Microsoft.PowerShell.Utility modul. Periksa dokumentasi REST API Anda dan cari tahu parameter dan header apa yang diharapkannya, format apa yang dikembalikannya, dan metode autentikasi apa yang digunakannya. Anda kemudian dapat menyesuaikan perintah Anda Invoke-RestMethod dengan sesuai.
4 Sistem apa pun yang mengekspos API SOAP Untuk membaca data dari titik akhir SOAP API menggunakan PowerShell, Anda dapat menggunakan cmdlet New-WebServiceProxy dari Microsoft.PowerShell.Management modul. Periksa dokumentasi SOAP API Anda dan cari tahu parameter dan header apa yang diharapkannya, format apa yang dikembalikannya, dan metode autentikasi apa yang digunakannya. Anda kemudian dapat menyesuaikan perintah Anda New-WebServiceProxy dengan sesuai.

Setelah membaca data sumber, terapkan aturan pra-pemrosesan Anda dan konversi output dari sistem rekaman Anda menjadi permintaan massal yang dapat dikirim ke titik akhir API bulkUpload provisi Microsoft Entra.

Penting

Jika Anda ingin membagikan skrip integrasi PowerShell Anda dengan komunitas, terbitkan di Galeri PowerShell dan beri tahu kami di repositori entra-id-inbound-provisioningGitHub , sehingga kami dapat menambahkan referensinya.

Cara menggunakan tutorial ini

Skrip sampel PowerShell yang diterbitkan di repositori GitHub provisi masuk Microsoft Entra mengotomatiskan beberapa tugas. Ini memiliki logika untuk menangani file CSV besar dan memotong permintaan massal untuk mengirim 50 rekaman di setiap permintaan. Berikut cara mengujinya dan menyesuaikannya sesuai persyaratan integrasi Anda.

Catatan

Sampel skrip PowerShell disediakan "apa adanya" untuk referensi implementasi. Jika Anda memiliki pertanyaan yang terkait dengan skrip atau jika Anda ingin meningkatkannya, silakan gunakan repositori proyek GitHub.

# Tugas automasi Panduan implementasi Kustomisasi tingkat lanjut
1 Membaca data pekerja dari file CSV. Unduh skrip PowerShell. Ini memiliki logika out-of-the-box untuk membaca data dari file CSV apa pun. Lihat CSV2SCIM detail penggunaan PowerShell untuk membiasakan diri dengan berbagai mode eksekusi skrip ini. Jika sistem rekaman Anda berbeda, periksa panduan yang disediakan di bagian Variasi skenario integrasi tentang bagaimana Anda dapat menyesuaikan skrip PowerShell.
2 Pra-proses dan konversi data ke format SCIM. Secara default, skrip PowerShell mengonversi setiap rekaman dalam file CSV menjadi representasi Pengguna Inti SCIM + Pengguna Perusahaan. Ikuti langkah-langkah di bagian Menghasilkan payload permintaan massal dengan skema standar untuk membiasakan diri dengan proses ini. Jika file CSV Anda memiliki bidang yang berbeda, sesuaikan file AttributeMapping.psd untuk menghasilkan pengguna SCIM yang valid. Anda juga dapat menghasilkan permintaan massal dengan skema SCIM kustom. Perbarui skrip PowerShell untuk menyertakan logika validasi data CSV kustom apa pun.
3 Gunakan sertifikat untuk autentikasi ke ID Microsoft Entra. Buat perwakilan layanan yang dapat mengakses API provisi masuk. Lihat langkah-langkah di bagian Mengonfigurasi sertifikat klien untuk autentikasi perwakilan layanan untuk mempelajari cara menggunakan sertifikat klien untuk autentikasi. Jika Anda ingin menggunakan identitas terkelola alih-alih perwakilan layanan untuk autentikasi, tinjau penggunaan Connect-MgGraph dalam skrip sampel dan perbarui untuk menggunakan identitas terkelola.
4 Memprovisikan akun di Active Directory lokal atau ID Microsoft Entra. Mengonfigurasi aplikasi provisi masuk berbasis API. Ini menghasilkan titik akhir API /bulkUpload yang unik. Lihat langkah-langkah di bagian Menghasilkan dan mengunggah payload permintaan massal sebagai pengguna admin untuk mempelajari cara mengunggah data ke titik akhir ini. Validasi alur atribut dan sesuaikan pemetaan atribut sesuai persyaratan integrasi Anda. Untuk menjalankan skrip menggunakan perwakilan layanan dengan autentikasi berbasis sertifikat, lihat langkah-langkah di bagian Mengunggah payload permintaan massal menggunakan autentikasi sertifikat klien Jika Anda berencana untuk menggunakan permintaan massal dengan skema SCIM kustom, maka perluas skema aplikasi provisi untuk menyertakan elemen skema SCIM kustom Anda.
5 Pindai log provisi dan coba lagi provisi untuk rekaman yang gagal. Lihat langkah-langkah di bagian Mendapatkan log provisi siklus sinkronisasi terbaru untuk mempelajari cara mengambil dan menganalisis data log provisi. Identifikasi rekaman pengguna yang gagal dan sertakan dalam siklus pengunggahan berikutnya. -
6 Sebarkan otomatisasi berbasis PowerShell Anda ke produksi. Setelah Memverifikasi alur provisi berbasis API dan menyesuaikan skrip PowerShell untuk memenuhi kebutuhan Anda, Anda dapat menyebarkan otomatisasi sebagai runbook PowerShell Workflow di Azure Automation atau sebagai proses server yang dijadwalkan untuk dijalankan di server Windows. -

Mengunduh skrip PowerShell

  1. Akses repositori entra-id-inbound-provisioningGitHub .
  2. Gunakan opsi Kode -Kloning> atau Kode ->Unduh ZIP untuk menyalin konten repositori ini ke folder lokal Anda.
  3. Navigasi ke folder PowerShell/CSV2SCIM. Ini memiliki struktur direktori berikut:
    • Src
      • CSV2SCIM.ps1 (skrip utama)
      • ScimSchemaRepresentations (folder yang berisi definisi skema SCIM standar untuk memvalidasi file AttributeMapping.psd1)
        • EnterpriseUser.json, Group.json, Schema.json, User.json
    • Sampel
      • AttributeMapping.psd1 (pemetaan sampel kolom dalam file CSV ke atribut SCIM standar)
      • csv-with-2-records.csv (contoh file CSV dengan dua rekaman)
      • csv-with-1000-records.csv (sampel file CSV dengan 1000 rekaman)
      • Test-ScriptCommands.ps1 (contoh perintah penggunaan)
      • UseClientCertificate.ps1 (skrip untuk menghasilkan sertifikat yang ditandatangani sendiri dan mengunggahnya sebagai kredensial perwakilan layanan untuk digunakan dalam alur OAuth)
      • Sample1 (folder dengan lebih banyak contoh bagaimana kolom file CSV dapat dipetakan ke atribut standar SCIM. Jika Anda mendapatkan file CSV yang berbeda untuk karyawan, kontraktor, magang, Anda dapat membuat file AttributeMapping.psd1 terpisah untuk setiap entitas.)
  4. Unduh dan instal PowerShell versi terbaru.
  5. Jalankan perintah untuk mengaktifkan eksekusi skrip bertanda tangan jarak jauh:
    set-executionpolicy remotesigned
    
  6. Instal modul prasyarat berikut:
    Install-Module -Name Microsoft.Graph.Applications,Microsoft.Graph.Reports
    

Hasilkan payload permintaan massal dengan skema standar

Bagian ini menjelaskan cara membuat payload permintaan massal dengan atribut Pengguna Inti SCIM dan Pengguna Perusahaan standar dari file CSV. Untuk mengilustrasikan prosedur, mari kita gunakan file Samples/csv-with-2-records.csvCSV .

  1. Buka file Samples/csv-with-2-records.csv CSV di Notepad++ atau Excel untuk memeriksa kolom yang ada dalam file. Screenshot of columns in Excel.

  2. Di Notepad++ atau editor kode sumber seperti Visual Studio Code, buka file Samples/AttributeMapping.psd1 data PowerShell yang memungkinkan pemetaan kolom file CSV ke atribut skema standar SCIM. File yang dikirim secara langsung sudah memiliki pemetaan kolom file CSV yang telah dikonfigurasi sebelumnya ke atribut skema SCIM yang sesuai.

        @{
        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. Buka PowerShell dan ubah ke direktori CSV2SCIM\src.

  4. Jalankan perintah berikut untuk menginisialisasi AttributeMapping variabel.

    $AttributeMapping = Import-PowerShellDataFile '..\Samples\AttributeMapping.psd1'
    
  5. Jalankan perintah berikut untuk memvalidasi apakah AttributeMapping file memiliki atribut skema SCIM yang valid. Perintah ini mengembalikan True jika validasi berhasil.

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ValidateAttributeMapping
    
  6. Katakanlah AttributeMapping file memiliki atribut SCIM yang tidak valid yang disebut userId, lalu ValidateAttributeMapping mode menampilkan kesalahan berikut.

    Screenshot of a mapping error.

  7. Setelah Anda memverifikasi bahwa AttributeMapping file valid, jalankan perintah berikut untuk menghasilkan permintaan massal dalam file BulkRequestPayload.json yang menyertakan dua rekaman yang ada dalam file CSV.

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping > BulkRequestPayload.json
    
  8. Anda dapat membuka konten file BulkRequestPayload.json untuk memverifikasi apakah atribut SCIM diatur sesuai pemetaan yang ditentukan dalam file AttributeMapping.psd1.

  9. Anda dapat memposting file yang dihasilkan di atas apa adanya ke titik akhir /bulkUpload API yang terkait dengan aplikasi provisi Anda menggunakan Graph Explorer atau Postman atau cURL. Referensi:

  10. Untuk langsung mengunggah payload yang dihasilkan ke titik akhir API menggunakan skrip PowerShell yang sama, lihat bagian berikutnya.

Membuat dan mengunggah payload permintaan massal sebagai pengguna admin

Bagian ini menjelaskan cara mengirim payload permintaan massal yang dihasilkan ke titik akhir API provisi masuk Anda.

  1. Masuk ke pusat admin Microsoft Entra Anda setidaknya sebagai Administrator Aplikasi.

  2. Telusuri KE ID Objek Properti>Aplikasi>Provisi dan salin yang ServicePrincipalId terkait dengan aplikasi provisi Anda.

    Screenshot of the Object ID.

  3. Sebagai pengguna dengan peran Administrator Global, jalankan perintah berikut dengan memberikan nilai yang benar untuk ServicePrincipalId dan TenantId. Ini akan meminta autentikasi jika sesi terautentikasi belum ada untuk penyewa ini. Berikan persetujuan Anda untuk izin yang diminta selama autentikasi.

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ServicePrincipalId <servicePrincipalId> -TenantId "contoso.onmicrosoft.com"
    
  4. Kunjungi bilah Log provisi aplikasi provisi Anda untuk memverifikasi pemrosesan permintaan di atas.

Mengonfigurasi sertifikat klien untuk autentikasi perwakilan layanan

Catatan

Instruksi di sini menunjukkan cara membuat sertifikat yang ditandatangani sendiri. Sertifikat yang ditandatangani sendiri tidak dipercaya secara default dan mungkin sulit dipertahankan. Selain itu, mereka dapat menggunakan hash kedaluwarsa dan cipher suite yang mungkin tidak kuat. Untuk keamanan yang lebih baik, beli sertifikat yang ditandatangani oleh otoritas sertifikat terkenal.

  1. Jalankan skrip PowerShell berikut untuk menghasilkan sertifikat baru yang ditandatangani sendiri. Anda dapat melewati langkah ini jika Anda telah membeli sertifikat yang ditandatangani oleh otoritas sertifikat terkenal.
    $ClientCertificate = New-SelfSignedCertificate -Subject 'CN=CSV2SCIM' -KeyExportPolicy 'NonExportable' -CertStoreLocation Cert:\CurrentUser\My
    $ThumbPrint = $ClientCertificate.ThumbPrint
    
    Sertifikat yang dihasilkan disimpan Pengguna Saat Ini\Pribadi\Sertifikat. Anda dapat melihatnya menggunakan opsi Panel Kontrol ->Kelola sertifikat pengguna.
  2. Untuk mengaitkan sertifikat ini dengan perwakilan layanan yang valid, masuk ke pusat admin Microsoft Entra Anda sebagai Administrator Aplikasi.
  3. Buka perwakilan layanan yang Anda konfigurasi di bawah Pendaftaran Aplikasi.
  4. Salin ID Objek dari bilah Gambaran Umum. Gunakan nilai untuk mengganti string <AppObjectId>. Salin Id Aplikasi (klien). Kami akan menggunakannya nanti dan dirujuk sebagai <AppClientId>.
  5. Jalankan perintah berikut untuk mengunggah sertifikat Anda ke perwakilan layanan terdaftar.
    Connect-MgGraph -Scopes "Application.ReadWrite.All"
    Update-MgApplication -ApplicationId '<AppObjectId>' -KeyCredentials @{
       Type = "AsymmetricX509Cert"
       Usage = "Verify"
       Key = $ClientCertificate.RawData
    }
    
    Anda akan melihat sertifikat di bawah bilah Sertifikat & rahasia aplikasi terdaftar Anda. Screenshot of client certificate.
  6. Tambahkan dua cakupan izin Aplikasi berikut ke aplikasi perwakilan layanan: Application.Read.All dan Synchronization.Read.All. Ini diperlukan agar skrip PowerShell mencari aplikasi provisi dengan ServicePrincipalId dan mengambil provisi JobId.

Mengunggah payload permintaan massal menggunakan autentikasi sertifikat klien

Bagian ini menjelaskan cara mengirim payload permintaan massal yang dihasilkan ke titik akhir API provisi masuk Anda menggunakan sertifikat klien tepercaya.

  1. Buka aplikasi provisi berbasis API yang Anda konfigurasikan. Salin yang ServicePrincipalId terkait dengan aplikasi provisi Anda dari Penyediaan ID Objek Properti>Aplikasi.>

    Screenshot of the Object ID.

  2. Jalankan perintah berikut dengan memberikan nilai yang benar untuk ServicePrincipalId, ClientId dan 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. Kunjungi bilah Log provisi aplikasi provisi Anda untuk memverifikasi pemrosesan permintaan di atas.

Hasilkan permintaan massal dengan skema SCIM kustom

Bagian ini menjelaskan cara membuat permintaan massal dengan namespace layanan skema SCIM kustom yang terdiri dari bidang dalam file CSV.

  1. Di Notepad++ atau editor kode sumber seperti Visual Studio Code, buka file Samples/AttributeMapping.psd1 data PowerShell yang memungkinkan pemetaan kolom file CSV ke atribut skema standar SCIM. File yang dikirim secara langsung sudah memiliki pemetaan kolom file CSV yang telah dikonfigurasi sebelumnya ke atribut skema SCIM yang sesuai.

  2. Buka PowerShell dan ubah ke direktori CSV2SCIM\src.

  3. Jalankan perintah berikut untuk menginisialisasi AttributeMapping variabel.

    $AttributeMapping = Import-PowerShellDataFile '..\Samples\AttributeMapping.psd1'
    
  4. Jalankan perintah berikut untuk memvalidasi apakah AttributeMapping file memiliki atribut skema SCIM yang valid. Perintah ini mengembalikan True jika validasi berhasil.

    .\CSV2SCIM.ps1 -Path '..\Samples\csv-with-2-records.csv' -AttributeMapping $AttributeMapping -ValidateAttributeMapping
    
  5. Selain atribut Pengguna SCIM Core dan Pengguna Perusahaan, untuk mendapatkan daftar datar semua bidang CSV di bawah namespace urn:ietf:params:scim:schemas:extension:contoso:1.0:Userlayanan skema SCIM kustom , jalankan perintah berikut.

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

    Bidang CSV akan muncul di bawah namespace skema SCIM kustom. Screenshot of user details under custom schema.

Memperluas skema pekerjaan provisi

Seringkali file data yang dikirim oleh tim SDM berisi lebih banyak atribut yang tidak memiliki representasi langsung dalam skema SCIM standar. Untuk mewakili atribut tersebut, sebaiknya buat skema ekstensi SCIM dan tambahkan atribut di bawah namespace layanan ini.

Skrip CSV2SCIM menyediakan mode eksekusi yang disebut UpdateSchema yang membaca semua kolom dalam file CSV, menambahkannya di bawah namespace skema ekstensi, dan memperbarui skema aplikasi provisi.

Catatan

Jika ekstensi atribut sudah ada dalam skema aplikasi provisi, mode ini hanya memancarkan peringatan bahwa ekstensi atribut sudah ada. Jadi, tidak ada masalah dalam menjalankan skrip CSV2SCIM dalam mode UpdateSchema jika bidang baru ditambahkan ke file CSV dan Anda ingin menambahkannya sebagai ekstensi.

Untuk mengilustrasikan prosedur, kita akan menggunakan file Samples/csv-with-2-records.csv CSV yang ada di folder CSV2SCIM .

  1. Buka file Samples/csv-with-2-records.csv CSV di Notepad, Excel, atau TextPad untuk memeriksa kolom yang ada dalam file.

    Screenshot of how to check CSV columns.

  2. Jalankan perintah berikut:

    .\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. Anda dapat memverifikasi pembaruan ke skema aplikasi provisi Anda dengan membuka halaman Pemetaan Atribut dan mengakses opsi Edit daftar atribut untuk API di bawah Opsi tingkat lanjut.

  4. Daftar Atribut menampilkan atribut di bawah namespace baru.

Mendapatkan log provisi dari siklus sinkronisasi terbaru

Setelah mengirim permintaan massal, Anda dapat mengkueri log siklus sinkronisasi terbaru yang diproses oleh ID Microsoft Entra. Anda dapat mengambil statistik sinkronisasi dan detail pemrosesan dengan skrip PowerShell dan menyimpannya untuk analisis.

  1. Untuk melihat detail log dan statistik sinkronisasi di konsol, jalankan perintah berikut:

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

    Screenshot of sync statistics.

    Catatan

    NumberOfCycles adalah 1 secara default. Tentukan angka untuk mengambil siklus sinkronisasi lainnya.

  2. Untuk melihat statistik sinkronisasi di konsol dan menyimpan detail log ke variabel, jalankan perintah berikut:

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

    Untuk menjalankan perintah menggunakan autentikasi sertifikat klien, jalankan perintah dengan menyediakan nilai yang benar untuk ServicePrincipalId, ClientId dan TenantId:

    $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
    
    • Untuk melihat detail rekaman tertentu, kita dapat mengulang ke dalam koleksi atau memilih indeks tertentu, misalnya: $logs[0]

      Screenshot of a selected index.

    • Kita juga dapat menggunakan where-object pernyataan untuk mencari rekaman tertentu menggunakan sourceID atau DisplayName. Di properti ProvisioningLogs, kita dapat menemukan semua detail operasi yang dilakukan untuk rekaman tertentu tersebut.

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

      Screenshot of provisioning logs.

    • Kita dapat melihat properti tertentu yang terpengaruh pengguna pada atribut ModifiedProperties . $user.ProvisioningLogs.ModifiedProperties

      Screenshot of properties.

Lampiran

CSV2SCIM detail penggunaan PowerShell

Berikut adalah daftar parameter baris perintah yang diterima oleh skrip PowerShell 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]

Catatan

Parameter AttributeMapping baris perintah dan ValidateAttributeMapping mengacu pada pemetaan atribut kolom CSV ke elemen skema SCIM standar. Ini tidak merujuk ke pemetaan atribut yang Anda lakukan di aplikasi provisi pusat admin Microsoft Entra antara elemen skema SCIM sumber dan atribut Microsoft Entra / Active Directory lokal target.

Parameter Deskripsi Memproses keterangan
Jalur Jalur lengkap atau relatif ke file CSV. Misalnya: .\Samples\csv-with-1000-records.csv Wajib: Ya
ScimSchemaNamespace Namespace layanan Skema SCIM kustom yang akan digunakan untuk mengirim semua kolom dalam file CSV sebagai atribut SCIM kustom milik namespace layanan tertentu. Misalnya: urn:ietf:params:scim:schemas:extension:csv:1.0:User Wajib: Hanya saat Anda ingin:
- Perbarui skema aplikasi provisi atau
Saat Anda ingin menyertakan atribut SCIM kustom dalam payload.
AttributeMapping Menunjuk ke file Data PowerShell (ekstensi.psd1) yang memetakan kolom dalam file CSV ke atribut Pengguna ScIM Core dan Pengguna Perusahaan.
Lihat contoh: file AttributeMapping.psd untuk skrip CSV2SCIM.
Misalnya: powershell $AttributeMapping = Import-PowerShellDataFile '.\Samples\AttributeMapping.psd1'`-AttributeMapping $AttributeMapping
Wajib: Ya
Satu-satunya skenario saat Anda tidak perlu menentukan ini adalah saat menggunakan sakelar UpdateSchema .
ValidateAttributeMapping Gunakan bendera Switch ini untuk memvalidasi bahwa file AttributeMapping berisi atribut yang mematuhi skema pengguna SCIM Core dan Enterprise. Wajib: Tidak
Disarankan menggunakannya untuk memastikan kepatuhan.
ServicePrincipalId Nilai GUID dari ID perwakilan layanan aplikasi provisi yang dapat Anda ambil dari ID Objek Properti>Aplikasi>Provisi Wajib: Hanya saat Anda ingin:
- Perbarui skema aplikasi provisi, atau
- Kirim permintaan massal yang dihasilkan ke titik akhir API.
UpdateSchema Gunakan sakelar ini untuk menginstruksikan skrip untuk membaca kolom CSV dan menambahkannya sebagai atribut SCIM kustom dalam skema aplikasi provisi Anda.
ClientId ID Klien aplikasi terdaftar Microsoft Entra yang akan digunakan untuk alur autentikasi OAuth. Aplikasi ini harus memiliki kredensial sertifikat yang valid. Wajib: Hanya saat melakukan autentikasi berbasis sertifikat.
ClientCertificate Sertifikat Autentikasi Klien yang akan digunakan selama alur OAuth. Wajib: Hanya saat melakukan autentikasi berbasis sertifikat.
GetPreviousCycleLogs Untuk mendapatkan log provisi siklus sinkronisasi terbaru.
NumberOfCycles Untuk menentukan berapa banyak siklus sinkronisasi yang harus diambil. Nilai ini adalah 1 secara default.
RestartService Dengan opsi ini, skrip untuk sementara menjeda pekerjaan provisi sebelum mengunggah data, skrip mengunggah data dan kemudian memulai pekerjaan lagi untuk memastikan pemrosesan payload segera. Gunakan opsi ini hanya selama pengujian.

file AttributeMapping.psd

File ini digunakan untuk memetakan kolom dalam file CSV ke elemen skema atribut ScIM Core User dan Enterprise User standar. File ini juga menghasilkan representasi yang sesuai dari konten file CSV sebagai payload permintaan massal.

Dalam contoh berikutnya, kami memetakan kolom berikut dalam file CSV ke atribut Pengguna Inti SCIM dan Pengguna Perusahaan.

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'
        }
    }
}

Langkah berikutnya