Membuat skrip penginstalan tanpa pengawas untuk konektor jaringan privat Microsoft Entra

Artikel ini membantu Anda membuat skrip Windows PowerShell yang memungkinkan penginstalan dan pendaftaran tanpa pengawas untuk konektor jaringan privat Microsoft Entra Anda.

Penginstalan tanpa pengawas berguna saat Anda ingin:

  • Menginstal konektor pada server Windows yang tidak mengaktifkan antarmuka pengguna, atau yang tidak dapat Anda akses dengan Desktop Jarak Jauh.
  • Menginstal dan mendaftarkan banyak konektor sekaligus.
  • Mengintegrasikan penginstalan konektor dan pendaftaran sebagai bagian dari prosedur lain.
  • Buat gambar server standar yang berisi bit konektor tetapi tidak terdaftar.

Agar konektor jaringan privat berfungsi, Anda harus mendaftarkannya dengan ID Microsoft Entra. Pendaftaran dilakukan di antarmuka pengguna saat Anda menginstal konektor, tetapi Anda dapat menggunakan PowerShell untuk mengotomatiskan proses.

Ada dua langkah untuk penginstalan tanpa pengawasan. Pertama, instal konektor. Kedua, daftarkan konektor dengan ID Microsoft Entra.

Penting

Jika Anda menginstal konektor untuk cloud Microsoft Azure Government, tinjau prasyarat dan langkah-langkah penginstalan. Cloud Microsoft Azure Government memerlukan pengaktifan akses ke serangkaian URL yang berbeda dan parameter tambahan untuk menjalankan penginstalan.

Menginstal konektor

Gunakan langkah-langkah berikut untuk menginstal konektor tanpa mendaftarkannya:

  1. Buka prompt perintah.

  2. Jalankan perintah berikut, /q bendera berarti penginstalan diam. Instalasi yang tenang tidak meminta Anda untuk menerima Perjanjian Lisensi Pengguna Akhir.

    MicrosoftEntraPrivateNetworkConnectorInstaller.exe REGISTERCONNECTOR="false" /q
    

Mendaftarkan konektor dengan ID Microsoft Entra

Ada dua metode yang dapat Anda gunakan untuk mendaftarkan konektor:

  • Daftarkan konektor menggunakan objek kredensial Windows PowerShell.
  • Daftarkan konektor menggunakan token yang dibuat secara offline.

Mendaftarkan konektor menggunakan objek kredensial Windows PowerShell

  1. Buat objek Kredensial Windows PowerShell $cred yang berisi nama pengguna dan kata sandi administratif untuk direktori Anda. Jalankan perintah berikut, ganti <username>, , <password>dan <tenantid>:

    $User = "<username>"
    $PlainPassword = '<password>'
    $TenantId = '<tenantid>'
    $SecurePassword = $PlainPassword | ConvertTo-SecureString -AsPlainText -Force
    $cred = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList $User, $SecurePassword
    
  2. C:\Program Files\Microsoft Entra private network connector Buka dan jalankan skrip berikut menggunakan $cred objek yang Anda buat:

    .\RegisterConnector.ps1 -modulePath "C:\Program Files\Microsoft Entra private network connector\Modules\" -moduleName "MicrosoftEntraPrivateNetworkConnectorPSModule" -Authenticationmode Credentials -Usercredentials $cred -Feature ApplicationProxy -TenantId $TenantId
    
  3. Skrip berisi informasi kredensial sensitif. Simpan skrip di lokasi yang aman.

Mendaftarkan konektor menggunakan token yang dibuat secara offline

  1. Buat token offline menggunakan AuthenticationContext kelas menggunakan nilai dalam cuplikan kode atau cmdlet PowerShell ini:

    Menggunakan C#:

    using System;
    using System.Linq;
    using System.Collections.Generic;
    using Microsoft.Identity.Client;
    
    class Program
    {
       #region constants
       /// <summary>
       /// The AAD authentication endpoint uri
       /// </summary>
       static readonly string AadAuthenticationEndpoint = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize";
    
       /// <summary>
       /// The application ID of the connector in AAD
       /// </summary>
       static readonly string ConnectorAppId = "55747057-9b5d-4bd4-b387-abf52a8bd489";
    
       /// <summary>
       /// The AppIdUri of the registration service in AAD
       /// </summary>
       static readonly string RegistrationServiceAppIdUri = "https://proxy.cloudwebappproxy.net/registerapp/user_impersonation";
    
       #endregion
    
       #region private members
       private string token;
       private string tenantID;
       #endregion
    
       public void GetAuthenticationToken()
       {
          IPublicClientApplication clientApp = PublicClientApplicationBuilder
             .Create(ConnectorAppId)
             .WithDefaultRedirectUri() // will automatically use the default Uri for native app
             .WithAuthority(AadAuthenticationEndpoint)
             .Build();
    
          AuthenticationResult authResult = null;
    
          IAccount account = null;
    
          IEnumerable<string> scopes = new string[] { RegistrationServiceAppIdUri };
    
          try
          {
          authResult = await clientApp.AcquireTokenSilent(scopes, account).ExecuteAsync();
          }
          catch (MsalUiRequiredException ex)
          {
          authResult = await clientApp.AcquireTokenInteractive(scopes).ExecuteAsync();
          }
    
          if (authResult == null || string.IsNullOrEmpty(authResult.AccessToken) || string.IsNullOrEmpty(authResult.TenantId))
          {
          Trace.TraceError("Authentication result, token or tenant id returned are null");
          throw new InvalidOperationException("Authentication result, token or tenant id returned are null");
          }
    
          token = authResult.AccessToken;
          tenantID = authResult.TenantId;
       }
    }
    

    Menggunakan PowerShell:

    # Load MSAL (Tested with version 4.7.1) 
    
    Add-Type -Path "..\MSAL\Microsoft.Identity.Client.dll"
    
    # The AAD authentication endpoint uri
    
    $authority = "https://login.microsoftonline.com/common/oauth2/v2.0/authorize"
    
    #The application ID of the connector in AAD
    
    $connectorAppId = "55747057-9b5d-4bd4-b387-abf52a8bd489";
    
    #The AppIdUri of the registration service in AAD
    $registrationServiceAppIdUri = "https://proxy.cloudwebappproxy.net/registerapp/user_impersonation"
    
    # Define the resources and scopes you want to call
    
    $scopes = New-Object System.Collections.ObjectModel.Collection["string"] 
    
    $scopes.Add($registrationServiceAppIdUri)
    
    $app = [Microsoft.Identity.Client.PublicClientApplicationBuilder]::Create($connectorAppId).WithAuthority($authority).WithDefaultRedirectUri().Build()
    
    [Microsoft.Identity.Client.IAccount] $account = $null
    
    # Acquiring the token
    
    $authResult = $null
    
    $authResult = $app.AcquireTokenInteractive($scopes).WithAccount($account).ExecuteAsync().ConfigureAwait($false).GetAwaiter().GetResult()
    
    # Check AuthN result
    If (($authResult) -and ($authResult.AccessToken) -and ($authResult.TenantId)) {
    
       $token = $authResult.AccessToken
       $tenantId = $authResult.TenantId
    
       Write-Output "Success: Authentication result returned."
    }
    Else {
    
       Write-Output "Error: Authentication result, token or tenant id returned with null."
    
    } 
    
  2. Setelah Anda memiliki token, buat SecureString menggunakan token:

    $SecureToken = $Token | ConvertTo-SecureString -AsPlainText -Force
    
  3. Jalankan perintah Windows PowerShell berikut ini, mengganti <tenant GUID> dengan ID direktori Anda:

    .\RegisterConnector.ps1 -modulePath "C:\Program Files\Microsoft Entra private network connector\Modules\" -moduleName "MicrosoftEntraPrivateNetworkConnectorPSModule" -Authenticationmode Token -Token $SecureToken -TenantId <tenant GUID> -Feature ApplicationProxy
    
  4. Simpan skrip atau kode di lokasi aman karena berisi informasi kredensial sensitif.

Langkah berikutnya