Mit unserem Modul können Sie einem Gerät, das keinen Zugang zum Domain Controller hat (über das Firmennetzwerk oder über VPN), einen Domain Join ermöglichen. Es ist ein alternativ zu verwenden Azure Hybrid Join.
Während Azure Hybrid Join ein Gerät zu Azure AD (Entra) und lokalem AD hinzufügt, ermöglicht diese Option nur den Beitritt eines Geräts zum lokalen AD. In der Zwischenzeit ist Hybrid Join hinsichtlich der Namenskonvention eingeschränkt und erlaubt nur die Definition des Präfixes.
Mit dieser Lösung ist es möglich, ein Präfix zu definieren und eine Seriennummer von Computern für den Computernamen zu verwenden.
Für wen ist das?
Sie können von diesem Modul profitieren, egal ob Sie XOAP-Nutzer sind oder nicht. So geht's:
a) Wenn Sie ein XOAP-Benutzer sind, können Sie mit diesem Modul und der XOAP-Konsole einfach Windows-Clients für die Verwendung von Offline Domain Join über Azure Blob Storage einrichten.
b) Wenn Sie kein XOAP-Benutzer sind, verwenden Sie dieses Modul in Ihrer eigenen DSC-Umgebung, oder verwenden Sie PowerShell-Skripte in diesem Modul, um eine eigene Automatisierungsalternative für Offline Domain Join zu erstellen.
Möchten Sie alles erleben, was XOAP zu bieten hat? Erstellen Sie hier Ihr kostenloses Konto!
Wozu dient dieses Modul?
Zur weiteren Erläuterung: Dieses Modul benennt den Computer anhand der Seriennummer und des definierten Präfixes um. Anschließend wird ein Offline Domain Join des Geräts über Azure Blob Storage erstellt, falls gewünscht.
Der Computer erstellt eine Anforderung und stellt sie an einem bestimmten Ort auf Azure Blob bereit. Dann nimmt der Domänencontroller diese Anforderung entgegen und stellt eine Antwort auf Azure Blob ein. Diese Antwortdatei wird dann von einem Computer gelesen - und der Computer führt einen Offline-Domänenbeitritt durch. Außerdem wird das Zertifikat aus Azure Blob importiert.
Was muss ich wissen, bevor ich anfange?
Um zu verstehen, wie man es verwendet, sind neben diesen 3 Komponenten auch Kenntnisse in PowerShell, Active Directory und Azure Storage erforderlich:
- Serverseitig: Modifizierung des Domain Controllers, um Offline Domain Join zu ermöglichen
- Azure Blob Storage: Speicher zum Hosten von Dateien, die für Offline Domain Join benötigt werden
- XOAPOfflineDomainJoinViaBlobDSC: zum Einrichten eines Windows-Clients zum Erstellen einer Anfrage und Abrufen der Antwort für Offline Domain Join
Liste der Voraussetzungen:
- AzureAZ PowerShell-Modul (falls nicht installiert, werden die Untermodule "Az.Accounts" und "Az.Storage" bei der Ausführung dieses DSC-Moduls installiert);
- ComputerManagementDsc in Version 8.5.0;
- Azure Blob-Speicher;
- Lokales Active Directory;
- PowerShell-Skript, das die Anforderung von Azure Blob Storage liest und die Antwortdatei und das Maschinenzertifikat auf Azure Blob Storage setzt (Beispiel unten).
$WarningPreference = "SilentlyContinue" $Domain = "test.local.com" $OU = "OU=Notebooks,OU=Koeln,DC=test,DC=local,DC=com" $TTenant_ID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$Subscription_ID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$ResBenutzername = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$SAccountname = "xoapdeployments" $ContainerName = "adjoin" $FExt = ".blb" $BlobFolder ="adblob" $RequestFolder = "request" $JoinName ="" Set-Location C:\Scripts #SecPass.exe generiert Passwort für Azure-Zugang $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) -und !($_.Name.Contains("flag.flg"))} | Select-Objekt "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 + $FExt # $BlobName $run = "djoin.exe /provision /domain {0} /MachineOU {1} /Maschine {2} /savefile {3} /wiederverwenden /rootcacerts" -f $Domain, $OU, $JoinName, $BlobName # $run Invoke-Ausdruck $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
Verfügbare Ressourcen und Syntax
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 = Name des Speicherkontos
Sind Sie bereit, loszulegen? Laden Sie dieses Modul unten herunter! 🖱️
