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:
Öppna kommandotolken.
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
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." }
När du har token skapar du en
SecureString
med hjälp av token:$SecureToken = $Token | ConvertTo-SecureString -AsPlainText -Force
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
Lagra skriptet eller koden på en säker plats eftersom den innehåller känslig information om autentiseringsuppgifter.