myActiveDirectory.test.ps1
$ConfigurationData = @{ AllNodes = @(@{ NodeName = 'localhost'; PSDscAllowDomainUser = $true; PsDscAllowPlainTextPassword = $true; }) ADSites = @( @{ Name = 'A01'; Description = 'Site A01'; Location = 'Lille'; Protected = $false; Subnets = @( @{ Name = '10.10.10.0/24'; Description = 'Room 01'; Location = 'Building East'; Protected = $false; }, @{ Name = '10.10.11.0/24'; Description = 'Room 02'; Location = 'Building East'; Protected = $false; }, @{ Name = '10.10.12.0/24'; Description = 'Room 03'; Location = 'Building North'; Protected = $false; } ) }, @{ Name = 'A02'; Description = 'Site A02'; Location = 'Brussels'; Protected = $false; Subnets = @( @{ Name = '10.10.13.0/24'; Description = 'Room 04'; Location = 'Building South'; Protected = $false; }, @{ Name = '10.10.14.0/24'; Description = 'Room 05'; Location = 'Building West'; Protected = $false; } ) }, @{ Name = 'A03'; Description = 'Site A03'; Location = 'London'; Protected = $false; Subnets = @( @{ Name = '10.10.15.0/24'; Description = 'Room 06'; Location = 'Building West'; Protected = $false; } ) } ) #$ADSites } #$ConfigurationData Configuration myActiveDirectory01 { param ( [Parameter(Mandatory)] [PSCredential]$DomainAdminCreds ) Import-DscResource -ModuleName myActiveDirectory $ADSites = $ConfigurationData.ADSites node localhost { foreach ($ADSite in $ADSites) { Write-Verbose "Site: $($ADSite.Name) $($ADSite.Description) $($ADSite.Location) $($ADSite.Protected)" myAdSite "AdSite-$($ADSite.Name)" { Name = $ADSite.Name Location = $ADSite.Location Description = $ADSite.Description Protected = $ADSite.Protected DomainAdminCreds = $DomainAdminCreds } foreach ($Subnet in $ADSite.Subnets) { Write-Verbose " Subnet: $($Subnet.Name) $($Subnet.Description) $($Subnet.Location) $($Subnet.Protected)" myAdSubnet "AdSubnet-$($Subnet.Name)" { Name = $Subnet.Name Site = $ADSite.Name Location = $Subnet.Location Description = $Subnet.Description Protected = $Subnet.Protected DomainAdminCreds = $DomainAdminCreds } } #foreach ($Subnet in $ADSite.Subnets) } #foreach ($ADSite in $ADSites) } #node localhost } #Configuration Test01 if ($DomainAdminCreds -eq $null) { $DomainAdminCreds = Get-Credential -UserName 'DSCDOMAIN\administrator' -Message 'Domain Admin Credentials' } myActiveDirectory01 -ConfigurationData $ConfigurationData -Verbose -OutputPath 'C:\DSC\myActiveDirectory01' -DomainAdminCreds $DomainAdminCreds Start-DscConfiguration -Wait -Force -Verbose -Path 'C:\DSC\myActiveDirectory01' |