Azure VM - How can I join it to a domain via PowerShell?

kStropes 5 Reputation points


I'm working on a solution to automate the creation of Azure virtual machines and add them to my domain (Active Directory domain, not Azure AD). At this point, I can create the VM from a captured image and install the joindomain extension by using the Set-AzVMADDomainExtension cmdlet.

At first, I thought this cmdlet would also join the machine to the domain. Upon further reading, it seems like this cmdlet only gives me to ability to join a domain. So, how can I join a domain without having to log in locally to the machine? I've gone down the road of WinRM and I'm hoping that there's an easier solution.

Note: I'm attempting to run the script from my laptop, instead of Azure CLI. If I'm able to do this from the Azure CLI, then I would be more than happy to switch/figure out how to use that method.


Azure Virtual Machines
Azure Virtual Machines
An Azure service that is used to provision Windows and Linux virtual machines.
7,246 questions
Active Directory
Active Directory
A set of directory-based technologies included in Windows Server.
5,962 questions
Windows 11
Windows 11
A Microsoft operating system designed for productivity, creativity, and ease of use.
8,369 questions
A family of Microsoft task automation and configuration management frameworks consisting of a command-line shell and associated scripting language.
2,133 questions
0 comments No comments
{count} votes

2 answers

Sort by: Most helpful
  1. kStropes 5 Reputation points

    I used the following article to help configure the remote, stand-alone machine and my local, AD joined machine.

    Once the machines have been configured as described in the article, I was then able to verify that I could remotely join the machine to the domain using the commands below.

    $s = New-PSSession -ComputerName $IPAddress -Credential $localCreds #$localCreds being a local admin account for the remote machine.
    Invoke-Command -Session $s -ScriptBlock {Add-Computer -DomainName $using:domain -Credential $using:domainCred -OUPath $using:ouPath -Restart} #$domainCred being a domain account that has rights to join computers to the domain.
    Remove-PSSession -Session $s
    1 person found this answer helpful.

  2. v-vvellanki-MSFT 4,210 Reputation points Microsoft Vendor

    Hi @kStropes ,

    Yes, you are correct that the Set-AzVMADDomainExtension cmdlet only installs the extension that allows the VM to join a domain. To actually join the VM to the domain, you will need to use the Add-Computer cmdlet.

    To join the VM to the domain without logging in locally, you can use PowerShell remoting. Here are the high-level steps:

    • Enable PowerShell remoting on the VM.
    • Use the Invoke-Command cmdlet to run the Add-Computer cmdlet on the remote VM.

    Here is an example command to join a VM to a domain using PowerShell remoting:

    $cred = Get-Credential
    $vm = Get-AzVM -ResourceGroupName "myResourceGroup" -Name "myVM"
    Invoke-Command -ComputerName $vm.Name -Credential $cred -ScriptBlock {
        param (
        Add-Computer -DomainName $DomainName -Credential $Credentials -Restart
    } -ArgumentList "", $cred

    In this example, you will be prompted to enter the credentials for a user that has permission to join the VM to the domain. You will also need to replace "myResourceGroup", "myVM", and "" with the appropriate values for your environment.

    I hope this helps!