{"id":8602,"date":"2024-02-29T13:27:02","date_gmt":"2024-02-29T12:27:02","guid":{"rendered":"https:\/\/dev.xoap.io\/?p=8602"},"modified":"2026-02-03T13:20:19","modified_gmt":"2026-02-03T12:20:19","slug":"offline-domain-join-xoap-azure-blob","status":"publish","type":"post","link":"https:\/\/dev.xoap.io\/de\/offline-domain-join-xoap-azure-blob\/","title":{"rendered":"Offline Domain Join mit XOAP und Azure Blob Storage"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"8602\" class=\"elementor elementor-8602\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-311f07f2 e-flex e-con-boxed e-con e-parent\" data-id=\"311f07f2\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6187fbc3 elementor-widget elementor-widget-text-editor\" data-id=\"6187fbc3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Our module allows you to Domain Join a device that doesn&#8217;t have access to the Domain Controller (through the company network or via VPN). It&#8217;s an <strong>alternative<\/strong> to using <strong>Azure Hybrid Join<\/strong>.<\/p><p>While Azure Hybrid Join adds a device to Azure AD (Entra) and local AD, this option allows joining a device to local AD only. Meanwhile, Hybrid Join is limited regarding naming convention and only allows the defining of the prefix.<\/p><p>With this solution, it&#8217;s possible to define a prefix and to use a serial number of computers for the computer name.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ce27097 elementor-widget elementor-widget-text-editor\" data-id=\"ce27097\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>Who is this for?<\/h2>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-77fc1c9 elementor-widget elementor-widget-text-editor\" data-id=\"77fc1c9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>You can benefit from using this module whether you&#8217;re a XOAP user or not. Here&#8217;s how:<\/p><p><strong>a)<\/strong> If you&#8217;re a XOAP user, simply set up Windows clients for use of Offline Domain Join via Azure Blob Storage using this module and XOAP console.<\/p><p><strong>b)<\/strong> If you&#8217;re not a XOAP user, use this module in your own DSC environment, or use PowerShell scripts inside this module to create their own automation alternative for Offline Domain Join.<\/p><p>Want to experience everything XOAP has to offer? <a href=\"https:\/\/auth.dev.xoap.io\/auth\/realms\/my.dev.xoap.io\/protocol\/openid-connect\/registrations?client_id=portal&amp;response_type=code&amp;scope=openid%20email&amp;redirect_uri=https:\/\/my.dev.xoap.io&amp;kc_locale=en&amp;_ga=2.190779107.97889014.1728977515-2092130983.1728977514\" target=\"_blank\" rel=\"noopener\">Create your free account here<\/a>!<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9ab7f2d elementor-widget elementor-widget-text-editor\" data-id=\"9ab7f2d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>What does this module do?<\/h2>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-455c3f9 elementor-widget elementor-widget-text-editor\" data-id=\"455c3f9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>To explain further, this module will rename the computer using the serial number and defined prefix. Afterwards, it&#8217;ll make an Offline Domain Join of the device via Azure Blob storage; if wanted.<\/p><p>The computer creates a request and posts it on a defined location on Azure Blob. Then, the Domain Controller will take that request and post a response on Azure Blob. This response file is then read by a computer \u2013 and the computer makes Offline Domain Join. Furthermore, the certificate will be imported from Azure Blob.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-414a822 elementor-widget elementor-widget-text-editor\" data-id=\"414a822\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2>What do I need to know before I start?<\/h2>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3580c60 elementor-widget elementor-widget-text-editor\" data-id=\"3580c60\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>To understand how to use it, knowledge of PowerShell, Active Directory and Azure Storage is needed along with these 3 components:<\/p><ol><li>Server-side: modify Domain Controller to allow for Offline Domain Join<\/li><li>Azure Blob Storage: storage to host files needed for Offline Domain Join<\/li><li>XOAPOfflineDomainJoinViaBlobDSC: to set up Windows client to create request and fetch the answer for Offline Domain Join<\/li><\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c51a707 elementor-widget elementor-widget-text-editor\" data-id=\"c51a707\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>List of prerequisites:<\/h3>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-cd1f4f7 elementor-widget elementor-widget-text-editor\" data-id=\"cd1f4f7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<ul type=\"disc\"><li lang=\"de\">AzureAZ PowerShell Module (if not installed &#8216;Az.Accounts&#8217; and &#8216;Az.Storage&#8217; submodules are going to be installed while running this DSC module);\u00a0\u00a0<\/li><li lang=\"de\">ComputerManagementDsc in version 8.5.0;\u00a0<\/li><li lang=\"de\">Azure Blob storage;\u00a0<\/li><li lang=\"de\">Local Active Directory;\u00a0<\/li><li lang=\"de\">PowerShell script that reads the request from Azure Blob Storage and sets response file and machine certificate to Azure Blob storage (example below).<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c2b0b0f elementor-widget elementor-widget-code-highlight\" data-id=\"c2b0b0f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard word-wrap\">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>$WarningPreference = \"SilentlyContinue\" \r$Domain = \"test.local.com\" \r$OU = \"OU=Notebooks,OU=Koeln,DC=test,DC=local,DC=com\" \r \r$Tenant_ID = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" \r$Subscription_ID = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" \r$ResUsername = \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\" \r$SAccountname = 'xoapdeployments' \r$ContainerName = \"adjoin\" \r \r$FExt = \".blb\" \r$BlobFolder =\"adblob\" \r$RequestFolder = \"request\" \r$JoinName =\"\" \r \rSet-Location C:\\Scripts \r \r#SecPass.exe generetes password for Azure access \r$SecPassStr = cmd \/c .\\SecPass.exe $args 2`>`&1    \r$cred = New-Object System.Management.Automation.Pscredential($ResUsername, (ConvertTo-SecureString -String $SecPassStr)) \r \r$ARMA = Add-AzureRmAccount -ServicePrincipal -Credential $cred -TenantId $Tenant_ID -Subscription $Subscription_ID \r$ARMA \r \r$storageContainer = Get-AzureRmStorageAccount | where {$_.StorageAccountName -eq $SAccountname} | Get-AzureStorageContainer \r \r$ComputerFiles = $storageContainer | Get-AzureStorageBlob | where {$_.Name.Contains($RequestFolder) -and !($_.Name.Contains(\"flag.flg\"))}  | Select-Object \"Name\" ,\"LastModified\" \r \r# $ComputerFiles \r \rif($ComputerFiles) { \r    foreach($Computerfile in $ComputerFiles) { \r        $JoinName = $ComputerFile.Name.Replace(\"\/\",\"\\\") \r        # $JoinName \r        $storageContainer | Remove-AzureStorageBlob -Container $ContainerName -Blob ($JoinName) -Force \r        $JoinName = $JoinName.SubString(8) \r        $ADblobfile = $Computername + \".blob\" -f $computer \r        $BlobName = \".\\\" + $JoinName + $FExt \r        # $BlobName \r        $run = \"djoin.exe \/provision \/domain {0} \/MachineOU {1} \/machine {2} \/savefile {3} \/reuse \/rootcacerts\" -f $Domain, $OU, $JoinName, $BlobName \r        # $run \r        Invoke-Expression $run \r        $StorageBlob = $BlobFolder + \"\\\" + $JoinName + $FExt \r        # $Storage \r        $storageContainer | Set-AzureStorageBlobContent \u2013File $BlobName -Blob $StorageBlob -Properties @{\"ContentType\" = \"text\/plain\"} \r        $storageContainer | Remove-AzureStorageBlob -Blob ($RequestFolder + \"\\\" + $JoinName) -Force \r        Remove-Item -Path $BlobName \r    } \r} \rRemove-AzureRmAccount -Username $ResUsername  \r<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4c87420 elementor-widget elementor-widget-text-editor\" data-id=\"4c87420\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h3>Available resources and syntax<\/h3>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1b21125 elementor-widget elementor-widget-code-highlight\" data-id=\"1b21125\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"prismjs-okaidia copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>OfflineDomainJoinViaBlob [String] #ResourceName \r{ \r    [DependsOn = [String[]]] \r    [PsDscRunAsCredential = [PSCredential]] \r    Tenant_ID = [String] \r    Subscription_ID = [String] \r    Username = [String] \r    Password = [String] \r    SAccountname = [String] \r    ContainerName = [String] \r    RequestFolder = [String] \r    BlobFolder = [String] \r    CertFolder = [String] \r    [TimeoutInMinutes = [Int32]] \r    [RenameComputerUsingSerial = [Boolean]] \r    [ComputerNamePrefix = [String]] \r    [RebootAfterDomainJoin = [Boolean]] \r} \r    <\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fff0e5e elementor-widget elementor-widget-text-editor\" data-id=\"fff0e5e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p lang=\"de\">Saccountname\u00a0 = Storage Account Name<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e7249c8 elementor-widget elementor-widget-text-editor\" data-id=\"e7249c8\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Ready to get started? <strong>Download this module below! \ud83d\uddb1\ufe0f<\/strong><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-5469ff6 elementor-widget elementor-widget-spacer\" data-id=\"5469ff6\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-cac3a4c e-con-full e-flex e-con e-parent\" data-id=\"cac3a4c\" data-element_type=\"container\" data-e-type=\"container\" id=\"download\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t<div class=\"elementor-element elementor-element-5056cb4 e-flex e-con-boxed e-con e-child\" data-id=\"5056cb4\" data-element_type=\"container\" data-e-type=\"container\" id=\"download-fslogix\" data-settings=\"{&quot;background_background&quot;:&quot;gradient&quot;,&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-57f535b e-con-full e-flex e-con e-child\" data-id=\"57f535b\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e376ebc elementor-hidden-mobile elementor-widget elementor-widget-image\" data-id=\"e376ebc\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"996\" height=\"1024\" src=\"https:\/\/dev.xoap.io\/wp-content\/uploads\/2024\/01\/download-996x1024.png\" class=\"attachment-large size-large wp-image-5408\" alt=\"Download illustration\" srcset=\"https:\/\/dev.xoap.io\/wp-content\/uploads\/2024\/01\/download-996x1024.png 996w, https:\/\/dev.xoap.io\/wp-content\/uploads\/2024\/01\/download-292x300.png 292w, https:\/\/dev.xoap.io\/wp-content\/uploads\/2024\/01\/download-768x790.png 768w, https:\/\/dev.xoap.io\/wp-content\/uploads\/2024\/01\/download.png 1024w\" sizes=\"(max-width: 996px) 100vw, 996px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-ddda84d e-con-full e-flex e-con e-child\" data-id=\"ddda84d\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;jet_parallax_layout_list&quot;:[]}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a6995ad elementor-widget elementor-widget-heading\" data-id=\"a6995ad\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;none&quot;,&quot;_animation_tablet&quot;:&quot;fadeInDown&quot;}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Download Offline Domain Join<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-26891d2 animated-slow elementor-widget__width-initial elementor-mobile-button-align-stretch elementor-invisible elementor-widget elementor-widget-form\" data-id=\"26891d2\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;step_next_label&quot;:&quot;Next&quot;,&quot;step_previous_label&quot;:&quot;Previous&quot;,&quot;_animation&quot;:&quot;fadeIn&quot;,&quot;step_type&quot;:&quot;number_text&quot;,&quot;step_icon_shape&quot;:&quot;circle&quot;}\" data-widget_type=\"form.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<form class=\"elementor-form\" method=\"post\" name=\"Download\" aria-label=\"Download\">\n\t\t\t<input type=\"hidden\" name=\"post_id\" value=\"8602\"\/>\n\t\t\t<input type=\"hidden\" name=\"form_id\" value=\"26891d2\"\/>\n\t\t\t<input type=\"hidden\" name=\"referer_title\" value=\"XOAP\" \/>\n\n\t\t\t\n\t\t\t<div class=\"elementor-form-fields-wrapper elementor-labels-\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-text elementor-field-group elementor-column elementor-field-group-field_fullname elementor-col-50\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-field_fullname\" class=\"elementor-field-label elementor-screen-only\">\n\t\t\t\t\t\t\t\tFull name\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"text\" name=\"form_fields[field_fullname]\" id=\"form-field-field_fullname\" class=\"elementor-field elementor-size-md  elementor-field-textual\" placeholder=\"Full name\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-email elementor-field-group elementor-column elementor-field-group-email elementor-col-50 elementor-field-required\">\n\t\t\t\t\t\t\t\t\t\t\t\t<label for=\"form-field-email\" class=\"elementor-field-label elementor-screen-only\">\n\t\t\t\t\t\t\t\tEmail\t\t\t\t\t\t\t<\/label>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<input size=\"1\" type=\"email\" name=\"form_fields[email]\" id=\"form-field-email\" class=\"elementor-field elementor-size-md  elementor-field-textual\" placeholder=\"Email\" required=\"required\">\n\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-html elementor-field-group elementor-column elementor-field-group-field_b20a517 elementor-col-100\">\n\t\t\t\t\tBy downloading, you accept the XOAP <a href=\"https:\/\/dev.xoap.io\/data-protection\" target=\"_blank\"> privacy policy<\/a> and will receive product information from us.\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-type-recaptcha_v3 elementor-field-group elementor-column elementor-field-group-field_1eb3fa3 elementor-col-100 recaptcha_v3-bottomright\">\n\t\t\t\t\t<div class=\"elementor-field\" id=\"form-field-field_1eb3fa3\"><div class=\"elementor-g-recaptcha\" data-sitekey=\"6Ld61w4pAAAAAGfjGrvIDymMiqJJ6ghZ58D6BIro\" data-type=\"v3\" data-action=\"Form\" data-badge=\"bottomright\" data-size=\"invisible\"><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<div class=\"elementor-field-group elementor-column elementor-field-type-submit elementor-col-100 e-form__buttons\">\n\t\t\t\t\t<button class=\"elementor-button elementor-size-md\" type=\"submit\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-fas-file-download\" viewBox=\"0 0 384 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"><\/path><\/svg>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Download now<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/button>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/form>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Verwenden Sie das Modul Offline Domain Join, um ein Ger\u00e4t, das keinen Zugriff auf den Domain Controller hat, in die Dom\u00e4ne aufzunehmen. Hier kostenlos herunterladen!<\/p>","protected":false},"author":14,"featured_media":8710,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[37,1],"tags":[66,65,33],"class_list":["post-8602","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-library","category-tutorials","tag-azure-blob","tag-dsc","tag-xoap"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Offline Domain Join using XOAP and Azure Blob storage | XOAP<\/title>\n<meta name=\"description\" content=\"Use the Offline Domain Join module to Domain Join a device that doesn&#039;t have access to the Domain Controller. Download here for free!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dev.xoap.io\/de\/offline-domain-join-xoap-azure-blob\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Offline Domain Join using XOAP &amp; Azure Blob | XOAP\" \/>\n<meta property=\"og:description\" content=\"Use the Offline Domain Join module to Domain Join a device that doesn&#039;t have access to the Domain Controller. Download here for free!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dev.xoap.io\/de\/offline-domain-join-xoap-azure-blob\/\" \/>\n<meta property=\"og:site_name\" content=\"XOAP\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/XOAP.io\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-29T12:27:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-03T12:20:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/dev.xoap.io\/wp-content\/uploads\/2024\/02\/offline-domain-join-xoap-azure-blob.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"600\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Perica\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Offline Domain Join using XOAP &amp; Azure Blob | XOAP\" \/>\n<meta name=\"twitter:description\" content=\"Use the Offline Domain Join module to Domain Join a device that doesn&#039;t have access to the Domain Controller. Download here for free!\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/dev.xoap.io\/wp-content\/uploads\/2024\/02\/offline-domain-join-xoap-azure-blob.png\" \/>\n<meta name=\"twitter:creator\" content=\"@xoap_io\" \/>\n<meta name=\"twitter:site\" content=\"@xoap_io\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/\"},\"author\":{\"name\":\"Perica\",\"@id\":\"https:\/\/dev.xoap.io\/#\/schema\/person\/a314425eebac3ae03b0e6ae2632cfa8b\"},\"headline\":\"Offline Domain Join using XOAP and Azure Blob storage\",\"datePublished\":\"2024-02-29T12:27:02+00:00\",\"dateModified\":\"2026-02-03T12:20:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/\"},\"wordCount\":439,\"publisher\":{\"@id\":\"https:\/\/dev.xoap.io\/#organization\"},\"image\":{\"@id\":\"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/dev.xoap.io\/wp-content\/uploads\/2024\/02\/offline-domain-join-xoap-azure-blob.png\",\"keywords\":[\"azure blob\",\"dsc\",\"xoap\"],\"articleSection\":[\"Library\",\"Tutorials\"],\"inLanguage\":\"de\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/\",\"url\":\"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/\",\"name\":\"Offline Domain Join using XOAP and Azure Blob storage | XOAP\",\"isPartOf\":{\"@id\":\"https:\/\/dev.xoap.io\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/dev.xoap.io\/wp-content\/uploads\/2024\/02\/offline-domain-join-xoap-azure-blob.png\",\"datePublished\":\"2024-02-29T12:27:02+00:00\",\"dateModified\":\"2026-02-03T12:20:19+00:00\",\"description\":\"Use the Offline Domain Join module to Domain Join a device that doesn't have access to the Domain Controller. Download here for free!\",\"breadcrumb\":{\"@id\":\"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/#primaryimage\",\"url\":\"https:\/\/dev.xoap.io\/wp-content\/uploads\/2024\/02\/offline-domain-join-xoap-azure-blob.png\",\"contentUrl\":\"https:\/\/dev.xoap.io\/wp-content\/uploads\/2024\/02\/offline-domain-join-xoap-azure-blob.png\",\"width\":1024,\"height\":600,\"caption\":\"Offline Domain Join using XOAP and Azure Blob Storage\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/dev.xoap.io\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Offline Domain Join using XOAP and Azure Blob storage\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/dev.xoap.io\/#website\",\"url\":\"https:\/\/dev.xoap.io\/\",\"name\":\"XOAP\",\"description\":\"Platform for IT infrastructure and workplace automation\",\"publisher\":{\"@id\":\"https:\/\/dev.xoap.io\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/dev.xoap.io\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/dev.xoap.io\/#organization\",\"name\":\"XOAP\",\"url\":\"https:\/\/dev.xoap.io\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/dev.xoap.io\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/dev.xoap.io\/wp-content\/uploads\/2023\/11\/XOAP-no-lettering-transparent_no-boarder.svg\",\"contentUrl\":\"https:\/\/dev.xoap.io\/wp-content\/uploads\/2023\/11\/XOAP-no-lettering-transparent_no-boarder.svg\",\"width\":250,\"height\":90,\"caption\":\"XOAP\"},\"image\":{\"@id\":\"https:\/\/dev.xoap.io\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/XOAP.io\",\"https:\/\/x.com\/xoap_io\",\"https:\/\/www.linkedin.com\/company\/xoap_io\",\"https:\/\/www.youtube.com\/@xoap_io\",\"https:\/\/github.com\/xoap-io\",\"https:\/\/www.instagram.com\/xoap_io\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/dev.xoap.io\/#\/schema\/person\/a314425eebac3ae03b0e6ae2632cfa8b\",\"name\":\"Perica\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/dev.xoap.io\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/85de93ca8c8f0d61bca885a4134ba0fb?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/85de93ca8c8f0d61bca885a4134ba0fb?s=96&d=mm&r=g\",\"caption\":\"Perica\"},\"url\":\"https:\/\/dev.xoap.io\/de\/author\/perica\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Offline Domain Join using XOAP and Azure Blob storage | XOAP","description":"Verwenden Sie das Modul Offline Domain Join, um ein Ger\u00e4t, das keinen Zugriff auf den Domain Controller hat, in die Dom\u00e4ne aufzunehmen. Hier kostenlos herunterladen!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dev.xoap.io\/de\/offline-domain-join-xoap-azure-blob\/","og_locale":"de_DE","og_type":"article","og_title":"Offline Domain Join using XOAP & Azure Blob | XOAP","og_description":"Use the Offline Domain Join module to Domain Join a device that doesn't have access to the Domain Controller. Download here for free!","og_url":"https:\/\/dev.xoap.io\/de\/offline-domain-join-xoap-azure-blob\/","og_site_name":"XOAP","article_publisher":"https:\/\/www.facebook.com\/XOAP.io","article_published_time":"2024-02-29T12:27:02+00:00","article_modified_time":"2026-02-03T12:20:19+00:00","og_image":[{"width":1024,"height":600,"url":"https:\/\/dev.xoap.io\/wp-content\/uploads\/2024\/02\/offline-domain-join-xoap-azure-blob.png","type":"image\/png"}],"author":"Perica","twitter_card":"summary_large_image","twitter_title":"Offline Domain Join using XOAP & Azure Blob | XOAP","twitter_description":"Use the Offline Domain Join module to Domain Join a device that doesn't have access to the Domain Controller. Download here for free!","twitter_image":"https:\/\/dev.xoap.io\/wp-content\/uploads\/2024\/02\/offline-domain-join-xoap-azure-blob.png","twitter_creator":"@xoap_io","twitter_site":"@xoap_io","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/#article","isPartOf":{"@id":"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/"},"author":{"name":"Perica","@id":"https:\/\/dev.xoap.io\/#\/schema\/person\/a314425eebac3ae03b0e6ae2632cfa8b"},"headline":"Offline Domain Join using XOAP and Azure Blob storage","datePublished":"2024-02-29T12:27:02+00:00","dateModified":"2026-02-03T12:20:19+00:00","mainEntityOfPage":{"@id":"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/"},"wordCount":439,"publisher":{"@id":"https:\/\/dev.xoap.io\/#organization"},"image":{"@id":"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/#primaryimage"},"thumbnailUrl":"https:\/\/dev.xoap.io\/wp-content\/uploads\/2024\/02\/offline-domain-join-xoap-azure-blob.png","keywords":["azure blob","dsc","xoap"],"articleSection":["Library","Tutorials"],"inLanguage":"de"},{"@type":"WebPage","@id":"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/","url":"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/","name":"Offline Domain Join using XOAP and Azure Blob storage | XOAP","isPartOf":{"@id":"https:\/\/dev.xoap.io\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/#primaryimage"},"image":{"@id":"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/#primaryimage"},"thumbnailUrl":"https:\/\/dev.xoap.io\/wp-content\/uploads\/2024\/02\/offline-domain-join-xoap-azure-blob.png","datePublished":"2024-02-29T12:27:02+00:00","dateModified":"2026-02-03T12:20:19+00:00","description":"Verwenden Sie das Modul Offline Domain Join, um ein Ger\u00e4t, das keinen Zugriff auf den Domain Controller hat, in die Dom\u00e4ne aufzunehmen. Hier kostenlos herunterladen!","breadcrumb":{"@id":"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/#primaryimage","url":"https:\/\/dev.xoap.io\/wp-content\/uploads\/2024\/02\/offline-domain-join-xoap-azure-blob.png","contentUrl":"https:\/\/dev.xoap.io\/wp-content\/uploads\/2024\/02\/offline-domain-join-xoap-azure-blob.png","width":1024,"height":600,"caption":"Offline Domain Join using XOAP and Azure Blob Storage"},{"@type":"BreadcrumbList","@id":"https:\/\/dev.xoap.io\/offline-domain-join-xoap-azure-blob\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dev.xoap.io\/"},{"@type":"ListItem","position":2,"name":"Offline Domain Join using XOAP and Azure Blob storage"}]},{"@type":"WebSite","@id":"https:\/\/dev.xoap.io\/#website","url":"https:\/\/dev.xoap.io\/","name":"XOAP","description":"Plattform f\u00fcr IT-Infrastruktur und Arbeitsplatzautomatisierung","publisher":{"@id":"https:\/\/dev.xoap.io\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dev.xoap.io\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/dev.xoap.io\/#organization","name":"XOAP","url":"https:\/\/dev.xoap.io\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/dev.xoap.io\/#\/schema\/logo\/image\/","url":"https:\/\/dev.xoap.io\/wp-content\/uploads\/2023\/11\/XOAP-no-lettering-transparent_no-boarder.svg","contentUrl":"https:\/\/dev.xoap.io\/wp-content\/uploads\/2023\/11\/XOAP-no-lettering-transparent_no-boarder.svg","width":250,"height":90,"caption":"XOAP"},"image":{"@id":"https:\/\/dev.xoap.io\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/XOAP.io","https:\/\/x.com\/xoap_io","https:\/\/www.linkedin.com\/company\/xoap_io","https:\/\/www.youtube.com\/@xoap_io","https:\/\/github.com\/xoap-io","https:\/\/www.instagram.com\/xoap_io"]},{"@type":"Person","@id":"https:\/\/dev.xoap.io\/#\/schema\/person\/a314425eebac3ae03b0e6ae2632cfa8b","name":"Perica","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/dev.xoap.io\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/85de93ca8c8f0d61bca885a4134ba0fb?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/85de93ca8c8f0d61bca885a4134ba0fb?s=96&d=mm&r=g","caption":"Perica"},"url":"https:\/\/dev.xoap.io\/de\/author\/perica\/"}]}},"_links":{"self":[{"href":"https:\/\/dev.xoap.io\/de\/wp-json\/wp\/v2\/posts\/8602","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dev.xoap.io\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dev.xoap.io\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dev.xoap.io\/de\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/dev.xoap.io\/de\/wp-json\/wp\/v2\/comments?post=8602"}],"version-history":[{"count":95,"href":"https:\/\/dev.xoap.io\/de\/wp-json\/wp\/v2\/posts\/8602\/revisions"}],"predecessor-version":[{"id":18731,"href":"https:\/\/dev.xoap.io\/de\/wp-json\/wp\/v2\/posts\/8602\/revisions\/18731"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dev.xoap.io\/de\/wp-json\/wp\/v2\/media\/8710"}],"wp:attachment":[{"href":"https:\/\/dev.xoap.io\/de\/wp-json\/wp\/v2\/media?parent=8602"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dev.xoap.io\/de\/wp-json\/wp\/v2\/categories?post=8602"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dev.xoap.io\/de\/wp-json\/wp\/v2\/tags?post=8602"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}