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:
Open een opdrachtprompt.
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
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." }
Zodra u het token hebt, maakt u een
SecureString
met het token:$SecureToken = $Token | ConvertTo-SecureString -AsPlainText -Force
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
Sla het script of de code op een veilige locatie op omdat het gevoelige referentiegegevens bevat.