Share via


Een installatiescript voor installatie zonder toezicht maken voor de Microsoft Entra-privénetwerkconnector

Dit artikel helpt u bij het maken van een Windows PowerShell-script waarmee installatie en registratie zonder toezicht voor uw Microsoft Entra-privénetwerkconnector mogelijk is.

Installatie zonder toezicht is handig wanneer u het volgende wilt doen:

  • De connector installeren op Windows-servers waarvoor geen gebruikersinterface is ingeschakeld of waartoe u geen toegang hebt met Extern bureaublad.
  • Veel connectors tegelijk installeren en registreren.
  • De installatie en registratie van de connector integreren als onderdeel van een andere procedure.
  • Maak een standaardserverinstallatiekopieën die de connector-bits bevatten, maar die niet zijn geregistreerd.

De privénetwerkconnector werkt alleen als u deze registreert bij Microsoft Entra ID. De registratie wordt uitgevoerd in de gebruikersinterface wanneer u de connector installeert, maar u kunt PowerShell gebruiken om het proces te automatiseren.

Er zijn twee stappen voor installatie zonder toezicht. Installeer als eerste de connector. Registreer vervolgens de connector bij Microsoft Entra ID.

Belangrijk

Als u de connector voor de Microsoft Azure Government-cloud installeert, raadpleegt u de vereisten en installatiestappen. Voor de Microsoft Azure Government-cloud moet toegang tot een andere set URL's en een extra parameter worden ingeschakeld om de installatie uit te voeren.

Installeer de connector

Gebruik de volgende stappen om de connector te installeren zonder deze te registreren:

  1. Open een opdrachtprompt.

  2. Voer de volgende opdracht uit, de /q vlag betekent stille installatie. Bij installatie op de achtergrond wordt u niet gevraagd de Licentie-overeenkomst voor eindgebruikers te accepteren.

    MicrosoftEntraPrivateNetworkConnectorInstaller.exe REGISTERCONNECTOR="false" /q
    

De connector registreren bij Microsoft Entra-id

Registreer de connector met behulp van een token dat offline is gemaakt.

De connector registreren met een token dat offline is gemaakt

  1. Maak een offlinetoken met behulp van de AuthenticationContext klasse met behulp van de waarden in dit codefragment of PowerShell-cmdlets:

    C# gebruiken:

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

    Met PowerShell:

    # Loading DLLs
    
    Find-PackageProvider -Name NuGet| Install-PackageProvider -Force
    Register-PackageSource -Name nuget.org -Location https://www.nuget.org/api/v2 -ProviderName NuGet
    Install-Package Microsoft.IdentityModel.Abstractions  -ProviderName Nuget -RequiredVersion 6.22.0.0 
    Install-Module Microsoft.Identity.Client
    
    add-type -path "C:\Program Files\PackageManagement\NuGet\Packages\Microsoft.IdentityModel.Abstractions.6.22.0\lib\net461\Microsoft.IdentityModel.Abstractions.dll"
    add-type -path "C:\Program Files\WindowsPowerShell\Modules\Microsoft.Identity.Client\4.53.0\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. Zodra u het token hebt, maakt u een SecureString met het token:

    $SecureToken = $Token | ConvertTo-SecureString -AsPlainText -Force
    
  3. Voer de volgende Windows PowerShell-opdracht uit, waarbij u <tenant GUID> de map-id vervangt:

    .\RegisterConnector.ps1 -modulePath "C:\Program Files\Microsoft Entra private network connector\Modules\" -moduleName "MicrosoftEntraPrivateNetworkConnectorPSModule" -Authenticationmode Token -Token $SecureToken -TenantId <tenant GUID> -Feature ApplicationProxy
    
  4. Sla het script of de code op een veilige locatie op omdat het gevoelige referentiegegevens bevat.

Volgende stappen