Dela via


Skapa ett obevakat installationsskript för den privata Nätverksanslutningen för Microsoft Entra

Den här artikeln hjälper dig att skapa ett Windows PowerShell-skript som möjliggör obevakad installation och registrering för ditt privata Microsoft Entra-nätverksanslutningsprogram.

Obevakad installation är användbar när du vill:

  • Installera anslutningsappen på Windows-servrar som inte har användargränssnittet aktiverat eller som du inte kan komma åt med Fjärrskrivbord.
  • Installera och registrera många anslutningsappar samtidigt.
  • Integrera anslutningsprogrammets installation och registrering som en del av en annan procedur.
  • Skapa en standardserverbild som innehåller anslutningsbitarna men inte är registrerad.

För att den privata nätverksanslutningen ska fungera måste du registrera den med Microsoft Entra-ID. Registreringen görs i användargränssnittet när du installerar anslutningsappen, men du kan använda PowerShell för att automatisera processen.

Det finns två steg för en obevakad installation. Installera först anslutningsappen. För det andra registrerar du anslutningsappen med Microsoft Entra-ID.

Viktigt!

Om du installerar anslutningsappen för Microsoft Azure Government-molnet läser du förutsättningarna och installationsstegen. Microsoft Azure Government-molnet kräver att du ger åtkomst till en annan uppsättning URL:er och ytterligare en parameter för att köra installationen.

Installera anslutningsappen

Använd följande steg för att installera anslutningsappen utan att registrera den:

  1. Öppna kommandotolken.

  2. Kör följande kommando, /q flaggan innebär tyst installation. En tyst installation uppmanar dig inte att godkänna licensavtalet för slutanvändare.

    MicrosoftEntraPrivateNetworkConnectorInstaller.exe REGISTERCONNECTOR="false" /q
    

Registrera anslutningsappen med Microsoft Entra-ID

Registrera anslutningsappen med en token som skapats offline.

Registrera anslutningsappen med en token som skapats offline

  1. Skapa en offlinetoken med hjälp av AuthenticationContext klassen med hjälp av värdena i det här kodfragmentet eller PowerShell-cmdletarna:

    Använda 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;
       }
    }
    

    Med 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. När du har token skapar du en SecureString med hjälp av token:

    $SecureToken = $Token | ConvertTo-SecureString -AsPlainText -Force
    
  3. Kör följande Windows PowerShell-kommando och <tenant GUID> ersätt med ditt katalog-ID:

    .\RegisterConnector.ps1 -modulePath "C:\Program Files\Microsoft Entra private network connector\Modules\" -moduleName "MicrosoftEntraPrivateNetworkConnectorPSModule" -Authenticationmode Token -Token $SecureToken -TenantId <tenant GUID> -Feature ApplicationProxy
    
  4. Lagra skriptet eller koden på en säker plats eftersom den innehåller känslig information om autentiseringsuppgifter.

Nästa steg