Scripts/Reskit9/All Resources/xSafeHarbor/ConfigurationData/SafeHarborConfigurationData.ps1

<#
    Configuration data for -
         - DHCP Server
         - Corporate Domain Controller
         - Corporate Client
         - SafeHarbor Domain Controller
         - SafeHarbor Management Server
         - SafeHarbor Pull Server
         - SafeHarbor File Server
         - Hyper-V Host
#>


param ([string]$BaseVhdPath, [string]$ADUserSid, [string]$VHDDestinationPath)

$ConfigDataLocation = Split-Path $MyInvocation.MyCommand.Definition
Import-Module $ConfigDataLocation\..\SafeHarborHelper.psm1

$xNetworkingModulePath         = Get-DscResourceModulePath -DscResourceName 'xFirewall'
$xComputerManagementModulePath = Get-DscResourceModulePath -DscResourceName 'xComputer'
$xDhcpServerModulePath         = Get-DscResourceModulePath -DscResourceName 'xDhcpServerReservation'
$xActiveDirectoryModulePath    = Get-DscResourceModulePath -DscResourceName 'xADDomain'
$xDnsServerModulePath          = Get-DscResourceModulePath -DscResourceName 'xDnsServerZoneTransfer'
$xPSDesiredStateConfigurationModulePath = Get-DscResourceModulePath -DscResourceName 'xDSCWebService'

@{
    AllNodes = @(

        # Certificate ID for password encryption
        @{
            NodeName                    = "*"
            CertificateID               = "497258FCCFFFA0F38268BBD970B337D25C871D6D"
        }

        # DHCP Server configuration data
        @{
            NodeName              = "0df6ddb0-a958-406b-9694-9994928fa0d8" 
            MachineName           = "DHCPServer"
            Role                  = "DHCPServer"              
            DHCPAdminCredFile     =  "$ConfigDataLocation\VMData\DHCPSrvCred.clixml"
            IPAddress             = "192.168.10.5"
            InterfaceAlias        = "*Ethernet*"
            PrefixLength          = 24
            ScopeName             = "SafeHarborDemo"
            ScopeId               = "192.168.10.0"
            StartRange            = "192.168.10.7"
            EndRange              = "192.168.10.254"
            SubnetMask            = "255.255.255.0"
            LeaseDurationDays     = "1"
            DNSServerIP           = "192.168.10.2","192.168.10.1"
            IPReservations        = @(
                @{
                    Name          = "CorpDC"
                    Mac           = "00155D8A54A0"
                    IP            = "192.168.10.1"
                }
                @{
                    Name          = "SHDC"
                    Mac           = "00155D8A54A1"
                    IP            = "192.168.10.2"
                }
                @{
                    Name          = "SHMgmtSrv"
                    Mac           = "00155D8A54A2"
                    IP            = "192.168.10.3"
                }
                @{
                    Name          = "SHPullServer"
                    Mac           = "00155D8A54A3"
                    IP            = "192.168.10.4"
                }                
            )
        };

        # Corporate Domain Controller configuration data
        @{
            NodeName              = "41120e02-7e85-4a89-bae3-2e4443424b62"
            MachineName           = "CorpDC"
            Role                  = "CorpDC"
            DomainName            = "corporate.contoso.com"
            SecondaryDNSServer    = "192.168.10.2"
            SecondaryZoneDomain   = "safeharbor.contoso.com"
            DomainCredFile        = "$ConfigDataLocation\VMData\CORPDomainCred.clixml"
            Users = @(
                @{
                    UserName      = "User1"
                    UserCredFile  = "$ConfigDataLocation\VMData\CORPUserCred.clixml"
                }
                @{
                    UserName      = "PAPA"
                    UserCredFile  = "$ConfigDataLocation\VMData\CORPPapaCred.clixml"
                }
                @{
                    UserName      = "DeptHead"
                    UserCredFile  = "$ConfigDataLocation\VMData\CORPDeptHeadCred.clixml"
                }
            )
        };

        # Corporate Domain Client configuration data
        @{
            NodeName              = "3b748ea1-cda5-4a68-aa4d-c88fbf03dd33"
            MachineName           = "CorpClient"
            Role                  = "CorpClient"
            DomainName            = "corporate.contoso.com"
            DomainCredFile        = "$ConfigDataLocation\VMData\CORPDomainCred.clixml"
        };

        # SafeHarbor Domain Controller configuration data
        @{
            NodeName              = "85ec034b-f343-4e26-bb60-6d564e9865e0"
            MachineName           = "SHDC"
            Role                  = "SHDC"
            DomainName            = "safeharbor.contoso.com"
            SecondaryDNSServer    = "192.168.10.1"
            SecondaryZoneDomain   = "corporate.contoso.com"
            DomainCredFile        = "$ConfigDataLocation\VMData\SHDomainCred.clixml"
            Users = @(
                @{
                    UserName      = "MATA"
                    UserCredFile  = "$ConfigDataLocation\VMData\SHMataCred.clixml"
                }
            )
            SourceDomainName      = "safeharbor.contoso.com"         
            TrustDomainName       = "corporate.contoso.com"
            TrustDomainCred       = "$ConfigDataLocation\VMData\CORPDomainCred.clixml"
            TrustDirection        = "Outbound"
            TrustType             = "External"
        };

        # SafeHarbor Pull Server configuration data
        @{
            NodeName              = "85ec034b-f343-4e26-bb60-6d564e986561"
            Role                  = "SHPullServer"
            MachineName           = "SHPullServer"                        
            DomainName            = "safeharbor.contoso.com"
            DomainCredFile        = "$ConfigDataLocation\VMData\SHDomainCred.clixml"
            PullCert              = "9FE0BB64E4790CFFCFEB84C95C136BEB70B5F93B"
            ModulePath            = "$env:PROGRAMFILES\DscService\Modules"
            ConfigurationPath     = "$env:PROGRAMFILES\DscService\Configuration"  
        };

        # SafeHarbor Management Server configuration data
        @{
            NodeName              = "15dde6d1-6a1c-4b15-858a-51d703bfed29"
            MachineName           = "SHMgmtSrv"
            Role                  = "DelegatedAdmin"
            DomainName            = "safeharbor.contoso.com"
            DomainCredFile        = "$ConfigDataLocation\VMData\SHDomainCred.clixml"
            EPName                = "secure"
            RunAsCredFile         = "$ConfigDataLocation\VMData\SHMataCred.clixml"
            SDDL                  = "O:NSG:BAD:P(A;;GA;;;BA)(A;;GA;;;$ADUserSid)(A;;GA;;;RM)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)"
            StartupScript         = "$env:SystemDrive\Scripts\Startup.ps1"
        };

        # SafeHarbor File Server VM configuration data
        @{
            NodeName              = "8cac052d-d3d4-423e-b088-f93979094d11"
            Role                  = "FileServer"
            MachineName           = "SHFileServer"
            DomainName            = "safeharbor.contoso.com"
            DomainCredFile        = "$ConfigDataLocation\VMData\SHDomainCred.clixml"
            AbsentInRules         = @(
                @{
                    Name          = "CoreNet ICMPv6-In"
                    DisplayName   = "Core Networking - Destination Unreachable (ICMPv6-In)"; 
                    Protocol      = "ICMPv6"
                }
                @{
                    Name          = "CoreNet ICMPv4-In"
                    DisplayName   = "Core Networking - Destination Unreachable Fragmentation Needed (ICMPv4-In)"; 
                    Protocol      = "ICMPv4"
                }
                @{
                    Name          = "CoreNet DHCP-In"
                    DisplayName   = "Core Networking - Dynamic Host Configuration Protocol (DHCP-In)"; 
                    Protocol      = "UDP"
                }
                @{
                    Name          = "CoreNet DHCPv6-In"
                    DisplayName   = "Core Networking - Dynamic Host Configuration Protocol for IPv6(DHCPV6-In)"; 
                    Protocol      = "UDP"
                }
                @{
                    Name          = "CoreNet IGMP-In"
                    DisplayName   = "Core Networking - Internet Group Management Protocol (IGMP-In)"; 
                    Protocol      = "2"
                }
                @{
                    Name          = "CoreNet TCP-In"
                    DisplayName   = "Core Networking - IPHTTPS (TCP-In)"; 
                    Protocol      = "TCP"
                }
                @{
                    Name          = "CoreNet IPv6-In"
                    DisplayName   = "Core Networking - IPv6 (IPv6-In)"; 
                    Protocol      = "41"
                }
                @{
                    Name          = "CoreNet MultiListener-In"
                    DisplayName   = "Core Networking - Multicast Listener Done (ICMPv6-In)"; 
                    Protocol      = "ICMPv6"
                }
                @{
                    Name          = "CoreNet MultiListener-Query-In"
                    DisplayName   = "Core Networking - Multicast Listener Query (ICMPv6-In)"; 
                    Protocol      = "ICMPv6"
                }
                @{
                    Name          = "CoreNet MultiListener-Report-In"
                    DisplayName   = "Core Networking - Multicast Listener Report (ICMPv6-In)"; 
                    Protocol      = "ICMPv6"
                }
                @{
                    Name          = "CoreNet MultiListener-Reportv2-In"
                    DisplayName   = "Core Networking - Multicast Listener Report v2 (ICMPv6-In)"; 
                    Protocol      = "ICMPv6"
                }
                @{
                    Name          = "CoreNet NeighborDisc-Ad-In"
                    DisplayName   = "Core Networking - Neighbor Discovery Advertisement (ICMPv6-In)"; 
                    Protocol      = "ICMPv6"
                }
                @{
                    Name          = "CoreNet NeighborDisc-Sol-In"
                    DisplayName   = "Core Networking - Neighbor Discovery Solicitation (ICMPv6-In)"; 
                    Protocol      = "ICMPv6"
                }
                @{
                    Name          = "CoreNet PacketBig-In"
                    DisplayName   = "Core Networking - Packet Too Big (ICMPv6-In)"; 
                    Protocol      = "ICMPv6"
                }
                @{
                    Name          = "CoreNet Parameter-In"
                    DisplayName   = "Core Networking - Parameter Problem (ICMPv6-In)"; 
                    Protocol      = "ICMPv6"
                }
                @{
                    Name          = "CoreNet Router-Ad-In"
                    DisplayName   = "Core Networking - Router Advertisement (ICMPv6-In)"; 
                    Protocol      = "ICMPv6"
                }
                @{
                    Name          = "CoreNet Router-Sol-In"
                    DisplayName   = "Core Networking - Router Solicitation (ICMPv6-In)"; 
                    Protocol      = "ICMPv6"
                }
                @{
                    Name          = "CoreNet Teredo-In"
                    DisplayName   = "Core Networking - Teredo (UDP-In)"; 
                    Protocol      = "UDP"
                }
                @{
                    Name          = "CoreNet TimeExceed-In"
                    DisplayName   = "Core Networking - Time Exceeded (ICMPv6-In)"; 
                    Protocol      = "ICMPv6"
                }
            )
            AbsentInFileRules     = @(
                @{
                    Name          = "File DCOM-In"
                    DisplayName   = "File Server Remote Management (DCOM-In)"; 
                    Protocol      = "TCP"
                }
                @{
                    Name          = "File WMI-In"
                    DisplayName   = "File Server Remote Management (WMI-In)"; 
                    Protocol      = "TCP"
                }
            )
            AllowedInRules        = @(
                @{    
                    Name          = "File SMB-In"
                    DisplayName   = "File Server Remote Management (SMB-In)"
                    Port          = "445";
                    Protocol      = "TCP";
                }
                @{
                    Name          = "WSMan HTTP-In"
                    DisplayName   = "Windows Remote Management (HTTP-In)"
                    Port          = "5985";
                    Protocol      = "TCP";
                }
                @{
                    Name          = "WSMan HTTPS-In"
                    DisplayName   = "Windows Remote Management (HTTPS-In)"
                    Port          = "5986";
                    Protocol      = "TCP";
                }
            )
        }

        # Hyper-V Host configuration data
        @{
            NodeName              = "localhost";
            Role                  = "HyperVHost";
            VHDDestinationPath    = "$VHDDestinationPath\{0}.vhd";
            SwitchName            = "Contoso"
            SwitchType            = "Internal" 
            VMState               = "Running"
            BaseVhdPath           = $BaseVhdPath;
            IPAddress             = "192.168.10.6"
            InterfaceAlias        = "*vethernet*"
            PrefixLength          = 24
            RetryintervalSec      = 10
            RetryCount            = 300
            CertificateID         = "497258FCCFFFA0F38268BBD970B337D25C871D6D"

            DHCPServer = @{                       
                MachineName       = "DHCPServer"                      
                MemorySizeofVM    = 1024MB;
                AdminUserCredFile = "$ConfigDataLocation\VMData\DHCPSrvCred.clixml"
                FilesToCopy = @(
                    @{
                        Source = "$ConfigDataLocation\VMData\unattend.xml";
                        Destination = "unattend.xml"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\SHVmSetup.cmd";
                        Destination = "Scripts\SHVmSetup.cmd"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\ConfigureVM.ps1";
                        Destination = "Scripts\ConfigureVM.ps1"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\ImportCerts.ps1";
                        Destination = "Scripts\ImportCerts.ps1"
                    } 
                    @{
                        Source = "$ConfigDataLocation\VMData\DHCPServer\*.mof";
                        Destination = "Windows\System32\Configuration\Pending.mof"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\DSCTestRootAuthority.pfx";
                        Destination = "Scripts\DSCTestRootAuthority.pfx"
                    } 
                    @{
                        Source = "$ConfigDataLocation\VMData\DSCDemo.pfx";
                        Destination = "Scripts\DSCDemo.pfx"
                    } 
                    @{
                        Source = $xNetworkingModulePath;
                        Destination = "Program Files\WindowsPowerShell\Modules\xNetworking"
                    }
                    @{
                        Source = $xComputerManagementModulePath;
                        Destination = "Program Files\WindowsPowerShell\Modules\xComputerManagement"
                    }
                    @{
                        Source = $xDhcpServerModulePath;
                        Destination = "Program Files\WindowsPowerShell\Modules\xDhcpServer"
                    }
                );
            };

            CorpDC = @{                     
                DomainName         = "corporate.contoso.com"
                MachineName        = "CorpDC"                        
                MemorySizeofVM     = 2048MB;
                MACAddress         = "00155D8A54A0" 
                AdminUserCredFile  = "$ConfigDataLocation\VMData\CORPDomainCred.clixml"
                FilesToCopy = @(
                    @{
                        Source = "$ConfigDataLocation\VMData\unattend.xml";
                        Destination = "unattend.xml"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\CorpDC\*.mof";
                        Destination = "Windows\System32\Configuration\Pending.mof"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\SHVmSetup.cmd";
                        Destination = "Scripts\SHVmSetup.cmd"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\ConfigureVM.ps1";
                        Destination = "Scripts\ConfigureVM.ps1"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\ImportCerts.ps1";
                        Destination = "Scripts\ImportCerts.ps1"
                    } 
                    @{
                        Source = "$ConfigDataLocation\VMData\DSCTestRootAuthority.pfx";
                        Destination = "Scripts\DSCTestRootAuthority.pfx"
                    } 
                    @{
                        Source = "$ConfigDataLocation\VMData\DSCDemo.pfx";
                        Destination = "Scripts\DSCDemo.pfx"
                    } 
                    @{
                        Source = $xNetworkingModulePath;
                        Destination = "Program Files\WindowsPowerShell\Modules\xNetworking"
                    }
                    @{
                        Source = $xComputerManagementModulePath;
                        Destination = "Program Files\WindowsPowerShell\Modules\xComputerManagement"
                    }
                    @{
                        Source = $xActiveDirectoryModulePath;
                        Destination = "Program Files\WindowsPowerShell\Modules\xActiveDirectory"
                    }
                    @{
                        Source = $xDnsServerModulePath;
                        Destination = "Program Files\WindowsPowerShell\Modules\xDnsServer"
                    }
                );
            };

            CorpClient = @{                       
                DomainName         = "corporate.contoso.com"
                MachineName        = "CorpClient"                        
                MemorySizeofVM     = 1024MB;
                AdminUserCredFile  = "$ConfigDataLocation\VMData\CORPDomainCred.clixml"
                FilesToCopy = @(
                    @{
                        Source = "$ConfigDataLocation\VMData\unattend.xml";
                        Destination = "unattend.xml"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\CorpClient\*.mof";
                        Destination = "Windows\System32\Configuration\Pending.mof"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\SHVmSetup.cmd";
                        Destination = "Scripts\SHVmSetup.cmd"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\ConfigureVM.ps1";
                        Destination = "Scripts\ConfigureVM.ps1"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\ImportCerts.ps1";
                        Destination = "Scripts\ImportCerts.ps1"
                    } 
                    @{
                        Source = "$ConfigDataLocation\VMData\DSCTestRootAuthority.pfx"; 
                        Destination = "Scripts\DSCTestRootAuthority.pfx"
                    } 
                    @{
                        Source = "$ConfigDataLocation\VMData\DSCDemo.pfx";
                        Destination = "Scripts\DSCDemo.pfx"
                    } 
                    @{
                        Source = $xComputerManagementModulePath;
                        Destination = "Program Files\WindowsPowerShell\Modules\xComputerManagement"
                    }
                );
            };

            SHDC = @{
                MachineName        = "SHDC"                        
                MemorySizeofVM     = 2048MB;
                MACAddress         = "00155D8A54A1" 
                AdminUserCredFile  = "$ConfigDataLocation\VMData\SHDomainCred.clixml"
                FilesToCopy = @(
                    @{
                        Source = "$ConfigDataLocation\VMData\unattend.xml";
                        Destination = "unattend.xml"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\SHDC\*.mof";
                        Destination = "Windows\System32\Configuration\Pending.mof"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\SHVmSetup.cmd";
                        Destination = "Scripts\SHVmSetup.cmd"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\ConfigureVM.ps1";
                        Destination = "Scripts\ConfigureVM.ps1"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\ImportCerts.ps1";
                        Destination = "Scripts\ImportCerts.ps1"
                    } 
                    @{
                        Source = "$ConfigDataLocation\VMData\DSCTestRootAuthority.pfx";
                        Destination = "Scripts\DSCTestRootAuthority.pfx"
                    } 
                    @{
                        Source = "$ConfigDataLocation\VMData\DSCDemo.pfx";
                        Destination = "Scripts\DSCDemo.pfx"
                    } 
                    @{
                        Source = $xNetworkingModulePath;
                        Destination = "Program Files\WindowsPowerShell\Modules\xNetworking"
                    }
                    @{
                        Source = $xComputerManagementModulePath;
                        Destination = "Program Files\WindowsPowerShell\Modules\xComputerManagement"
                    }
                    @{
                        Source = $xActiveDirectoryModulePath;
                        Destination = "Program Files\WindowsPowerShell\Modules\xActiveDirectory"
                    }
                    @{
                        Source = $xDnsServerModulePath;
                        Destination = "Program Files\WindowsPowerShell\Modules\xDnsServer"
                    }
                );
            };

            SHPullServer = @{
                MachineName        = "SHPullServer"                        
                MemorySizeofVM     = 2048MB;
                MACAddress         = "00155D8A54A3" 
                DomainName         = "safeharbor.contoso.com"
                DomainCredFile     = "$ConfigDataLocation\VMData\SHDomainCred.clixml"
                PullCert           = "9FE0BB64E4790CFFCFEB84C95C136BEB70B5F93B"
                AdminUserCredFile  = "$ConfigDataLocation\VMData\SHDomainCred.clixml"
                FilesToCopy = @(
                    @{
                        Source = "$ConfigDataLocation\VMData\unattend.xml";
                        Destination = "unattend.xml"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\SHPullServer\*.mof";
                        Destination = "Windows\System32\Configuration\Pending.mof"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\SHVmSetup.cmd";
                        Destination = "Scripts\SHVmSetup.cmd"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\ConfigureVM.ps1";
                        Destination = "Scripts\ConfigureVM.ps1"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\ImportCerts.ps1";
                        Destination = "Scripts\ImportCerts.ps1"
                    } 
                    @{
                        Source = "$ConfigDataLocation\VMData\DSCTestRootAuthority.pfx";
                        Destination = "Scripts\DSCTestRootAuthority.pfx"
                    } 
                    @{
                        Source = "$ConfigDataLocation\VMData\DSCDemo.pfx";
                        Destination = "Scripts\DSCDemo.pfx"
                    } 
                    @{
                        Source = "$ConfigDataLocation\VMData\PullServer.pfx";
                        Destination = "Scripts\PullServer.pfx"
                    } 
                    @{
                        Source = "$ConfigDataLocation\VMData\SHPullServer\Configuration";
                        Destination = "Program Files\DscService\Configuration"
                    }
                    @{
                        Source = $xComputerManagementModulePath;
                        Destination = "Program Files\WindowsPowerShell\Modules\xComputerManagement"
                    }
                    @{
                        Source = $xPSDesiredStateConfigurationModulePath;
                        Destination = "Program Files\WindowsPowerShell\Modules\xPSDesiredStateConfiguration"
                    }
                );
            };

            SHMgmtSrv = @{
                MachineName        = "SHMgmtSrv"                        
                MemorySizeofVM     = 1024MB;
                MACAddress         = "00155D8A54A2" 
                DomainName         = "safeharbor.contoso.com"
                DomainCredFile     = "$ConfigDataLocation\VMData\SHDomainCred.clixml"
                AdminUserCredFile  = "$ConfigDataLocation\VMData\SHDomainCred.clixml"
                FilesToCopy = @(
                    @{
                        Source = "$ConfigDataLocation\VMData\unattend.xml";
                        Destination = "unattend.xml"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\SHMgmtSrv\*.mof";
                        Destination = "Windows\System32\Configuration\Pending.mof"
                    }
                    @{
                        Source = "$ConfigDataLocation\VMData\SHVmSetup.cmd"; 
                        Destination = "Scripts\SHVmSetup.cmd"
                    }
                    @{ 
                        Source = "$ConfigDataLocation\VMData\ConfigureVM.ps1"; 
                        Destination = "Scripts\ConfigureVM.ps1"
                    }
                    @{ 
                        Source = "$ConfigDataLocation\VMData\ImportCerts.ps1";
                        Destination = "Scripts\ImportCerts.ps1"
                    } 
                    @{ 
                        Source = "$ConfigDataLocation\VMData\DSCTestRootAuthority.pfx"; 
                        Destination = "Scripts\DSCTestRootAuthority.pfx"
                    } 
                    @{ 
                        Source = "$ConfigDataLocation\VMData\DSCDemo.pfx"; 
                        Destination = "Scripts\DSCDemo.pfx"
                    } 
                    @{ 
                        Source = "$ConfigDataLocation\VMData\Permission.csv"; 
                        Destination = "Scripts\Permission.csv"
                    } 
                    @{ 
                        Source = "$ConfigDataLocation\VMData\ProxyFunctions.psm1"; 
                        Destination = "Scripts\ProxyFunctions.psm1"
                    } 
                    @{ 
                        Source = "$ConfigDataLocation\VMData\Startup.ps1"; 
                        Destination = "Scripts\Startup.ps1"
                    } 
                    @{ 
                        Source = $xComputerManagementModulePath; 
                        Destination = "Program Files\WindowsPowerShell\Modules\xComputerManagement"
                    }
                    @{ 
                        Source = $xPSDesiredStateConfigurationModulePath; 
                        Destination = "Program Files\WindowsPowerShell\Modules\xPSDesiredStateConfiguration"
                    }
                );
            };

            SHFileServer = @{
                MachineName        = "SHFileServer"                        
                MemorySizeofVM     = 1024MB;
                DomainName         = "safeharbor.contoso.com"
                DomainCredFile     = "$ConfigDataLocation\VMData\SHDomainCred.clixml"
                AdminUserCredFile  = "$ConfigDataLocation\VMData\SHDomainCred.clixml"
                FilesToCopy = @(
                    @{ 
                        Source = "$ConfigDataLocation\VMData\unattendFS.xml"; 
                        Destination = "unattend.xml"
                    }
                    @{ 
                        Source = "$ConfigDataLocation\VMData\metaconfigFS.mof"; 
                        Destination = "Windows\System32\Configuration\metaconfig.mof"
                    }
                    @{ 
                        Source = "$ConfigDataLocation\VMData\FileServerSetup.cmd"; 
                        Destination = "Scripts\FileServerSetup.cmd"
                    }
                    @{ 
                        Source = "$ConfigDataLocation\VMData\ImportCerts.ps1"; 
                        Destination = "Scripts\ImportCerts.ps1"
                    } 
                    @{ 
                        Source = "$ConfigDataLocation\VMData\ConfigureFSVM.ps1"; 
                        Destination = "Scripts\ConfigureFSVM.ps1"
                    } 
                    @{ 
                        Source = "$ConfigDataLocation\VMData\DSCTestRootAuthority.pfx"; 
                        Destination = "Scripts\DSCTestRootAuthority.pfx"
                    } 
                    @{ 
                        Source = "$ConfigDataLocation\VMData\DSCDemo.pfx"; 
                        Destination = "Scripts\DSCDemo.pfx"
                    } 
                    @{ 
                        Source = $xComputerManagementModulePath; 
                        Destination = "Program Files\WindowsPowerShell\Modules\xComputerManagement"
                    }
                    @{ 
                        Source = $xNetworkingModulePath;
                        Destination = "Program Files\WindowsPowerShell\Modules\xNetworking"
                    }
                );
            };
        }
    );
}