Bulk Deploy Microsoft Windows Nano Server 2016 and join domain

Jean-Yves Moschetto (ANVOLE) | 20 Mar, 2017 | PowerShell | Windows Server, Nano Server | View Counts (1894) |Return|
0 ( 0 reviews)


As I searched the web how to automatically deploy NANO server and join it to Active Directory, I could only find incomplete solutions.
I saw many things with manual copy of the blob generated with djoin.exe ...
I went deep dive into ":\NanoServer\NanoServerImageGenerator\NanoServerImageGenerator.psm1" and discovered everything is in the box.
For that I'm working with the last version of Windows 2016: Win_Svr_STD_Core_and_DataCtr_Core_2016_64Bit_English_-3_MLF_X21-30350.ISO
You can manually create your own unattend.xml thanks to WAIK10, but no need for that; As I said, everything is in the module NanoServerImageGenerator.psm1
Also, as I am quite lazy and want the simplest code, this is what I wrote and which generates my disk.vhdx


  Created with:  SAPIEN Technologies, Inc., PowerShell Studio 2017 v5.4.136
  Created on:    21/03/2017 08:11
  Created by:    Jean-Yves Moschetto jeanyves.moschetto@yoursystems.eu
 - Copy  to C:\EXPLOIT\NanoServer
 - BasePath doesn't support network drive or UNC path
 - To be executed from a member Windows 10/2016 computer, as 'Domain admin' for account provisioning 
 - Must have a DHCP with DNS to join domain

$Configurationdata = @{
 Global = @{ BasePath = 'C:\EXPLOIT\NanoServer'; MediaPath = 'D:\'; TargetPath = '\\\c$\VM\VHD'; Domain = 'dom2016.local'; }
 Servers = @(
  @{ ComputerName = 'Nano1'; Edition = 'Datacenter'; DeploymentType = 'Guest' },
  @{ ComputerName = 'Nano2'; Edition = 'Standard'; DeploymentType = 'Guest' }
Import-Module "$($Configurationdata.Global.BasePath)\NanoServerImageGenerator\NanoServerImageGenerator.psm1"
if ($Credential -eq $null) { $Credential = Get-Credential -Message 'Enter administrator password' -UserName Administrator }
ForEach ($Server in $Configurationdata.Servers)
 djoin.exe /provision /domain $($Configurationdata.Global.Domain) /machine $($Server.ComputerName) /savefile "$($Configurationdata.Global.BasePath)\$($Server.ComputerName).blob" /reuse
 New-NanoServerImage -DeploymentType $Server.DeploymentType `
      -Edition $Server.Edition `
      -MediaPath $Configurationdata.Global.MediaPath `
      -BasePath $Configurationdata.Global.BasePath `
      -TargetPath "$($Configurationdata.Global.TargetPath)\$($Server.ComputerName).vhdx" `
      -AdministratorPassword $Credential.Password `
      -DomainBlobPath "$($Configurationdata.Global.BasePath)\$($Server.ComputerName).blob" `

Just create your virtual machine manually or from script, attach the just created vhdx disk and boot.

It just takes 3 seconds to boot and here it is ... :


Logon into the domain, that's it :




Hard to replicate Exchange Connectors

When you have multiple Microsoft Exchange Servers receiving emails, you have to create exactly the s...

How to sign XML file with PowerShell

It often happened in my developments to have to protect my sources, and be sure that the configurati...

DSC myAdExchPrepareSchema.psm1

During some automatized deployments, as often, we have to deploy Microsoft Exchange 2016 automatical...

Authenticating users with smartcard and login/password

When a user opens an Active Directory session with his smartcard, it happens that some applications ...