Notre module vous permet de joindre un domaine à un appareil qui n'a pas accès au contrôleur de domaine (via le réseau de l'entreprise ou via un VPN). Il s'agit d'un alternative à l'utilisation Azure Hybrid Join.
Alors que Azure Hybrid Join ajoute un appareil à Azure AD (Entra) et à AD local, cette option permet de joindre un appareil à AD local uniquement. Par ailleurs, Hybrid Join est limité en ce qui concerne la convention de dénomination et ne permet de définir que le préfixe.
Avec cette solution, il est possible de définir un préfixe et d'utiliser un numéro de série d'ordinateurs pour le nom de l'ordinateur.
À qui cela s'adresse-t-il ?
Vous pouvez bénéficier de l'utilisation de ce module, que vous soyez ou non un utilisateur de XOAP. Voici comment :
a) Si vous êtes un utilisateur XOAP, il vous suffit de configurer les clients Windows pour l'utilisation de Offline Domain Join via Azure Blob Storage à l'aide de ce module et de la console XOAP.
b) Si vous n'êtes pas un utilisateur XOAP, utilisez ce module dans votre propre environnement DSC, ou utilisez des scripts PowerShell dans ce module pour créer leur propre alternative d'automatisation pour Offline Domain Join.
Vous voulez découvrir tout ce que XOAP a à offrir ? Créez votre compte gratuit ici!
Que fait ce module ?
Pour expliquer plus en détail, ce module renommera l'ordinateur en utilisant le numéro de série et le préfixe défini. Ensuite, il effectuera une jointure de domaine hors ligne de l'appareil via le stockage Azure Blob ; si vous le souhaitez.
L'ordinateur crée une demande et la publie à un emplacement défini sur Azure Blob. Ensuite, le contrôleur de domaine prend cette demande et publie une réponse sur Azure Blob. Ce fichier de réponse est ensuite lu par un ordinateur - et l'ordinateur effectue une connexion hors ligne au domaine. En outre, le certificat sera importé depuis Azure Blob.
Que dois-je savoir avant de commencer ?
Pour comprendre comment l'utiliser, il faut connaître PowerShell, Active Directory et Azure Storage, ainsi que ces trois composants :
- Côté serveur : modifier le contrôleur de domaine pour permettre la jonction de domaines hors ligne
- Azure Blob Storage : stockage pour héberger les fichiers nécessaires à la jonction de domaines hors ligne.
- XOAPOfflineDomainJoinViaBlobDSC : pour configurer le client Windows afin qu'il crée une requête et récupère la réponse pour la jonction de domaines hors ligne.
Liste des prérequis :
- AzureAZ PowerShell Module (si les sous-modules 'Az.Accounts' et 'Az.Storage' ne sont pas installés, ils le seront lors de l'exécution de ce module DSC) ;
- ComputerManagementDsc dans la version 8.5.0 ;
- Stockage Azure Blob ;
- Active Directory local ;
- Script PowerShell qui lit la demande depuis Azure Blob Storage et définit le fichier de réponse et le certificat de machine dans Azure Blob Storage (exemple ci-dessous).
$WarningPreference = "SilentlyContinue" $Domain = "test.local.com" $OU = "OU=Notebooks,OU=Koeln,DC=test,DC=local,DC=com" $Tenant_ID = "xxxxxxxx-xxxx-xxxx-xxxxxxxx"
$Subscription_ID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
$ResUsername = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
$SAccountname = 'xoapdeployments' $ContainerName = "adjoin" $FExt = ".blb" $BlobFolder = "adblob" $RequestFolder = "request" $JoinName =" Set-Location C:\Scripts #SecPass.exe génère le mot de passe pour l'accès Azure $SecPassStr = cmd /c .\SecPass.exe $args 2`>`&1 $cred = New-Object System.Management.Automation.Pscredential($ResUsername, (ConvertTo-SecureString -String $SecPassStr)) $ARMA = Add-AzureRmAccount -ServicePrincipal -Credential $cred -TenantId $Tenant_ID -Subscription $Subscription_ID $ARMA $storageContainer = Get-AzureRmStorageAccount | where {$_.StorageAccountName -eq $SAccountname} | Get-AzureStorageContainer $ComputerFiles = $storageContainer | Get-AzureStorageBlob | where {$_.Name.Contains($RequestFolder) -and !($_.Name.Contains("flag.flg"))} | Select-Object "Name" , "LastModified" # $ComputerFiles if($ComputerFiles) { foreach($Computerfile in $ComputerFiles) { $JoinName = $ComputerFile.Name.Replace("/", "\") # $JoinName $storageContainer | Remove-AzureStorageBlob -Container $ContainerName -Blob ($JoinName) -Force $JoinName = $JoinName.SubString(8) $ADblobfile = $Computername + ".blob" -f $computer $BlobName = ".\" + $JoinName = $ComputerFile + $JoinName. + $JoinName + $FExt # $BlobName $run = "djoin.exe /provision /domain {0} /MachineOU {1} /machine {2} /savefile {3} /reuse /rootcacerts" -f $Domain, $OU, $JoinName, $BlobName # $run Invoke-Expression $run $StorageBlob = $BlobFolder + "\" + $JoinName + $FExt # $Storage $storageContainer | Set-AzureStorageBlobContent -File $BlobName -Blob $StorageBlob -Properties @{"ContentType" = "text/plain"}
$storageContainer | Remove-AzureStorageBlob -Blob ($RequestFolder + "\" + $JoinName) -Force Remove-Item -Path $BlobName }
}
Remove-AzureRmAccount -Username $ResUsername
Ressources et syntaxe disponibles
OfflineDomainJoinViaBlob [String] #ResourceName { [DependsOn = [String[]]] [PsDscRunAsCredential = [PSCredential]] Tenant_ID = [String] Subscription_ID = [String] Username = [String] Password = [String] SAccountname = [String]
ContainerName = [String] RequestFolder = [String] BlobFolder = [String] CertFolder = [String] [TimeoutInMinutes = [Int32]] [RenameComputerUsingSerial = [Boolean]] [ComputerNamePrefix = [String]] [RebootAfterDomainJoin = [Boolean]] }
Saccountname = Nom du compte de stockage
Prêt à commencer ? Téléchargez ce module ci-dessous ! 🖱️
