diff --git a/Deployment/ExecutionPlan/1.CreatePrimaryDC/CreatePrimaryDC.json b/Deployment/ExecutionPlan/1.CreatePrimaryDC/CreatePrimaryDC.json new file mode 100644 index 0000000..519da70 --- /dev/null +++ b/Deployment/ExecutionPlan/1.CreatePrimaryDC/CreatePrimaryDC.json @@ -0,0 +1,29 @@ +{ + "Scripts": [ + "DQpGdW5jdGlvbiBJbnN0YWxsLVJvbGVQcmltYXJ5RG9tYWluQ29udHJvbGxlcg0Kew0KPCMNCi5TWU5PUFNJUw0KQ29uZmlndXJlIG5vZGUncyBuZXR3b3JrIGFkYXB0ZXJzLg0KQ3JlYXRlIGZpcnN0IGRvbWFpbiBjb250cm9sbGVyIGluIHRoZSBmb3Jlc3QuDQoNCi5FWEFNUExFDQpQUz4gSW5zdGFsbC1Sb2xlUHJpbWFyeURvbWFpbkNvbnRyb2xsZXIgLURvbWFpbk5hbWUgYWNtZS5sb2NhbCAtU2FmZU1vZGVQYXNzd29yZCAiUEBzc3cwcmQiDQoNCkluc3RhbGwgRE5TIGFuZCBBRERTLCBjcmVhdGUgZm9yZXN0IGFuZCBkb21haW4gJ2FjbWUubG9jYWwnLg0KU2V0IERDIHJlY292ZXJ5IG1vZGUgcGFzc3dvcmQgdG8gJ1BAc3N3MHJkJy4NCiM+DQoJDQoJcGFyYW0NCgkoDQoJCVtTdHJpbmddDQoJCSMgTmV3IGRvbWFpbiBuYW1lLg0KCQkkRG9tYWluTmFtZSwNCgkJDQoJCVtTdHJpbmddDQoJCSMgRG9tYWluIGNvbnRyb2xsZXIgcmVjb3ZlcnkgbW9kZSBwYXNzd29yZC4NCgkJJFNhZmVNb2RlUGFzc3dvcmQNCgkpDQoNCgl0cmFwIHsgU3RvcC1FeGVjdXRpb24gJF8gfQ0KDQogICAgICAgICMgQWRkIHJlcXVpcmVkIHdpbmRvd3MgZmVhdHVyZXMNCglBZGQtV2luZG93c0ZlYXR1cmVXcmFwcGVyIGANCgkJLU5hbWUgIkROUyIsIkFELURvbWFpbi1TZXJ2aWNlcyIsIlJTQVQtREZTLU1nbXQtQ29uIiBgDQoJCS1JbmNsdWRlTWFuYWdlbWVudFRvb2xzIGANCiAgICAgICAgLU5vdGlmeVJlc3RhcnQNCg0KDQoJV3JpdGUtTG9nICJDcmVhdGluZyBmaXJzdCBkb21haW4gY29udHJvbGxlciAuLi4iDQoJCQ0KCSRTTUFQID0gQ29udmVydFRvLVNlY3VyZVN0cmluZyAtU3RyaW5nICRTYWZlTW9kZVBhc3N3b3JkIC1Bc1BsYWluVGV4dCAtRm9yY2UNCgkJDQoJSW5zdGFsbC1BRERTRm9yZXN0IGANCgkJLURvbWFpbk5hbWUgJERvbWFpbk5hbWUgYA0KCQktU2FmZU1vZGVBZG1pbmlzdHJhdG9yUGFzc3dvcmQgJFNNQVAgYA0KCQktRG9tYWluTW9kZSBEZWZhdWx0IGANCgkJLUZvcmVzdE1vZGUgRGVmYXVsdCBgDQoJCS1Ob1JlYm9vdE9uQ29tcGxldGlvbiBgDQoJCS1Gb3JjZSBgDQoJCS1FcnJvckFjdGlvbiBTdG9wIHwgT3V0LU51bGwNCg0KCVdyaXRlLUxvZyAiV2FpdGluZyBmb3IgcmVib290IC4uLiIJCQ0KIwlTdG9wLUV4ZWN1dGlvbiAtRXhpdENvZGUgMzAxMCAtRXhpdFN0cmluZyAiQ29tcHV0ZXIgbXVzdCBiZSByZXN0YXJ0ZWQgdG8gZmluaXNoIGRvbWFpbiBjb250cm9sbGVyIHByb21vdGlvbi4iDQojCVdyaXRlLUxvZyAiUmVzdGFyaW5nIGNvbXB1dGVyIC4uLiINCiMJUmVzdGFydC1Db21wdXRlciAtRm9yY2UNCn0NCg==" + ], + "Commands": [ + { + "Name": "Import-Module", + "Arguments": { + "Name": "CoreFunctions" + } + }, + { + "Name": "Set-LocalUserPassword", + "Arguments": { + "UserName": "Administrator", + "Password": "P@ssw0rd123", + "Force": true + } + }, + { + "Name": "Install-RolePrimaryDomainController", + "Arguments": { + "DomainName": "acme.local", + "SafeModePassword": "P@ssw0rd" + } + } + ], + "RebootOnCompletion": 1 +} \ No newline at end of file diff --git a/Deployment/ExecutionPlan/1.CreatePrimaryDC/ExecutionPlan.txt b/Deployment/ExecutionPlan/1.CreatePrimaryDC/ExecutionPlan.txt new file mode 100644 index 0000000..7452477 --- /dev/null +++ b/Deployment/ExecutionPlan/1.CreatePrimaryDC/ExecutionPlan.txt @@ -0,0 +1,9 @@ +include Install-RolePrimaryDomainController.ps1 + +call Import-Module Name="CoreFunctions" +call Set-LocalUserPassword UserName="Administrator" , Password="P@ssw0rd123" , Force=true +call Install-RolePrimaryDomainController DomainName="acme.local" , SafeModePassword="P@ssw0rd" + +reboot 1 + +out CreatePrimaryDC.json diff --git a/Deployment/ExecutionPlan/1.CreatePrimaryDC/GenerateJSON.bat b/Deployment/ExecutionPlan/1.CreatePrimaryDC/GenerateJSON.bat new file mode 100644 index 0000000..0b6aae7 --- /dev/null +++ b/Deployment/ExecutionPlan/1.CreatePrimaryDC/GenerateJSON.bat @@ -0,0 +1 @@ +..\ExecutionPlanGenerator.exe ExecutionPlan.txt \ No newline at end of file diff --git a/Deployment/ExecutionPlan/1.CreatePrimaryDC/Install-RolePrimaryDomainController.ps1 b/Deployment/ExecutionPlan/1.CreatePrimaryDC/Install-RolePrimaryDomainController.ps1 new file mode 100644 index 0000000..165b856 --- /dev/null +++ b/Deployment/ExecutionPlan/1.CreatePrimaryDC/Install-RolePrimaryDomainController.ps1 @@ -0,0 +1,53 @@ + +Function Install-RolePrimaryDomainController +{ +<# +.SYNOPSIS +Configure node's network adapters. +Create first domain controller in the forest. + +.EXAMPLE +PS> Install-RolePrimaryDomainController -DomainName acme.local -SafeModePassword "P@ssw0rd" + +Install DNS and ADDS, create forest and domain 'acme.local'. +Set DC recovery mode password to 'P@ssw0rd'. +#> + + param + ( + [String] + # New domain name. + $DomainName, + + [String] + # Domain controller recovery mode password. + $SafeModePassword + ) + + trap { Stop-Execution $_ } + + # Add required windows features + Add-WindowsFeatureWrapper ` + -Name "DNS","AD-Domain-Services","RSAT-DFS-Mgmt-Con" ` + -IncludeManagementTools ` + -NotifyRestart + + + Write-Log "Creating first domain controller ..." + + $SMAP = ConvertTo-SecureString -String $SafeModePassword -AsPlainText -Force + + Install-ADDSForest ` + -DomainName $DomainName ` + -SafeModeAdministratorPassword $SMAP ` + -DomainMode Default ` + -ForestMode Default ` + -NoRebootOnCompletion ` + -Force ` + -ErrorAction Stop | Out-Null + + Write-Log "Waiting for reboot ..." +# Stop-Execution -ExitCode 3010 -ExitString "Computer must be restarted to finish domain controller promotion." +# Write-Log "Restaring computer ..." +# Restart-Computer -Force +} diff --git a/Deployment/ExecutionPlan/2.JoinDomain/ExecutionPlan.txt b/Deployment/ExecutionPlan/2.JoinDomain/ExecutionPlan.txt new file mode 100644 index 0000000..dafdc21 --- /dev/null +++ b/Deployment/ExecutionPlan/2.JoinDomain/ExecutionPlan.txt @@ -0,0 +1,9 @@ +call Import-Module Name="CoreFunctions" +call Set-NetworkAdapterConfiguration FirstAvailable=true , DNSServer="10.0.102.2" +call Join-Domain DomainName="acme.local" , Username="Administrator" , Password="P@ssw0rd123" + +reboot 1 + +out out.json + + diff --git a/Deployment/ExecutionPlan/2.JoinDomain/GenerateJSON.bat b/Deployment/ExecutionPlan/2.JoinDomain/GenerateJSON.bat new file mode 100644 index 0000000..0b6aae7 --- /dev/null +++ b/Deployment/ExecutionPlan/2.JoinDomain/GenerateJSON.bat @@ -0,0 +1 @@ +..\ExecutionPlanGenerator.exe ExecutionPlan.txt \ No newline at end of file diff --git a/Deployment/ExecutionPlan/2.JoinDomain/out.json b/Deployment/ExecutionPlan/2.JoinDomain/out.json new file mode 100644 index 0000000..6905daa --- /dev/null +++ b/Deployment/ExecutionPlan/2.JoinDomain/out.json @@ -0,0 +1,27 @@ +{ + "Scripts": [], + "Commands": [ + { + "Name": "Import-Module", + "Arguments": { + "Name": "CoreFunctions" + } + }, + { + "Name": "Set-NetworkAdapterConfiguration", + "Arguments": { + "FirstAvailable": true, + "DNSServer": "10.0.102.2" + } + }, + { + "Name": "Join-Domain", + "Arguments": { + "DomainName": "acme.local", + "Username": "Administrator", + "Password": "P@ssw0rd123" + } + } + ], + "RebootOnCompletion": 1 +} \ No newline at end of file diff --git a/Deployment/ExecutionPlan/3.CreateSecondaryDC/ExecutionPlan.txt b/Deployment/ExecutionPlan/3.CreateSecondaryDC/ExecutionPlan.txt new file mode 100644 index 0000000..dcffeaa --- /dev/null +++ b/Deployment/ExecutionPlan/3.CreateSecondaryDC/ExecutionPlan.txt @@ -0,0 +1,8 @@ +include Install-RoleSecondaryDomainController.ps1 + +call Import-Module Name="CoreFunctions" +call Install-RoleSecondaryDomainController DomainName="acme.local" , UserName="Administrator" , Password="P@ssw0rd123" , SafeModePassword="P@ssw0rd" + +reboot 1 + +out out.json diff --git a/Deployment/ExecutionPlan/3.CreateSecondaryDC/GenerateJSON.bat b/Deployment/ExecutionPlan/3.CreateSecondaryDC/GenerateJSON.bat new file mode 100644 index 0000000..0b6aae7 --- /dev/null +++ b/Deployment/ExecutionPlan/3.CreateSecondaryDC/GenerateJSON.bat @@ -0,0 +1 @@ +..\ExecutionPlanGenerator.exe ExecutionPlan.txt \ No newline at end of file diff --git a/Deployment/ExecutionPlan/3.CreateSecondaryDC/Install-RoleSecondaryDomainController.ps1 b/Deployment/ExecutionPlan/3.CreateSecondaryDC/Install-RoleSecondaryDomainController.ps1 new file mode 100644 index 0000000..a638ce4 --- /dev/null +++ b/Deployment/ExecutionPlan/3.CreateSecondaryDC/Install-RoleSecondaryDomainController.ps1 @@ -0,0 +1,54 @@ +Function Install-RoleSecondaryDomainController +{ +<# +.SYNOPSIS +Install additional (secondary) domain controller. + +#> + param + ( + [String] + # Domain name to join to. + $DomainName, + + [String] + # Domain user who is allowed to join computer to domain. + $UserName, + + [String] + # User's password. + $Password, + + [String] + # Domain controller recovery mode password. + $SafeModePassword + ) + + trap { Stop-Execution $_ } + + $Credential = New-Credential -UserName "$DomainName\$UserName" -Password $Password + + # Add required windows features + Add-WindowsFeatureWrapper ` + -Name "DNS","AD-Domain-Services","RSAT-DFS-Mgmt-Con" ` + -IncludeManagementTools ` + -NotifyRestart + + + Write-Log "Adding secondary domain controller ..." + + $SMAP = ConvertTo-SecureString -String $SafeModePassword -AsPlainText -Force + + Install-ADDSDomainController ` + -DomainName $DomainName ` + -SafeModeAdministratorPassword $SMAP ` + -Credential $Credential ` + -NoRebootOnCompletion ` + -Force ` + -ErrorAction Stop | Out-Null + + Write-Log "Waiting for restart ..." +# Stop-Execution -ExitCode 3010 -ExitString "Computer must be restarted to finish domain controller promotion." +# Write-Log "Restarting computer ..." +# Restart-Computer -Force +} diff --git a/Deployment/ExecutionPlan/3.CreateSecondaryDC/out.json b/Deployment/ExecutionPlan/3.CreateSecondaryDC/out.json new file mode 100644 index 0000000..6f260a2 --- /dev/null +++ b/Deployment/ExecutionPlan/3.CreateSecondaryDC/out.json @@ -0,0 +1,23 @@ +{ + "Scripts": [ + "RnVuY3Rpb24gSW5zdGFsbC1Sb2xlU2Vjb25kYXJ5RG9tYWluQ29udHJvbGxlcg0Kew0KPCMNCi5TWU5PUFNJUw0KSW5zdGFsbCBhZGRpdGlvbmFsIChzZWNvbmRhcnkpIGRvbWFpbiBjb250cm9sbGVyLg0KDQojPg0KCXBhcmFtDQoJKA0KCQlbU3RyaW5nXQ0KCQkjIERvbWFpbiBuYW1lIHRvIGpvaW4gdG8uDQoJCSREb21haW5OYW1lLA0KCQkNCgkJW1N0cmluZ10NCgkJIyBEb21haW4gdXNlciB3aG8gaXMgYWxsb3dlZCB0byBqb2luIGNvbXB1dGVyIHRvIGRvbWFpbi4NCgkJJFVzZXJOYW1lLA0KCQkNCgkJW1N0cmluZ10NCgkJIyBVc2VyJ3MgcGFzc3dvcmQuDQoJCSRQYXNzd29yZCwNCgkJDQoJCVtTdHJpbmddDQoJCSMgRG9tYWluIGNvbnRyb2xsZXIgcmVjb3ZlcnkgbW9kZSBwYXNzd29yZC4NCgkJJFNhZmVNb2RlUGFzc3dvcmQNCgkpDQoNCgl0cmFwIHsgU3RvcC1FeGVjdXRpb24gJF8gfQ0KCQ0KCSRDcmVkZW50aWFsID0gTmV3LUNyZWRlbnRpYWwgLVVzZXJOYW1lICIkRG9tYWluTmFtZVwkVXNlck5hbWUiIC1QYXNzd29yZCAkUGFzc3dvcmQNCgkJDQoJIyBBZGQgcmVxdWlyZWQgd2luZG93cyBmZWF0dXJlcw0KCUFkZC1XaW5kb3dzRmVhdHVyZVdyYXBwZXIgYA0KCQktTmFtZSAiRE5TIiwiQUQtRG9tYWluLVNlcnZpY2VzIiwiUlNBVC1ERlMtTWdtdC1Db24iIGANCgkJLUluY2x1ZGVNYW5hZ2VtZW50VG9vbHMgYA0KICAgICAgICAgICAgICAgIC1Ob3RpZnlSZXN0YXJ0DQoJCQ0KCQ0KICAgICAgICBXcml0ZS1Mb2cgIkFkZGluZyBzZWNvbmRhcnkgZG9tYWluIGNvbnRyb2xsZXIgLi4uIg0KICAgIA0KCSRTTUFQID0gQ29udmVydFRvLVNlY3VyZVN0cmluZyAtU3RyaW5nICRTYWZlTW9kZVBhc3N3b3JkIC1Bc1BsYWluVGV4dCAtRm9yY2UNCg0KCUluc3RhbGwtQUREU0RvbWFpbkNvbnRyb2xsZXIgYA0KCQktRG9tYWluTmFtZSAkRG9tYWluTmFtZSBgDQoJCS1TYWZlTW9kZUFkbWluaXN0cmF0b3JQYXNzd29yZCAkU01BUCBgDQoJCS1DcmVkZW50aWFsICRDcmVkZW50aWFsIGANCgkJLU5vUmVib290T25Db21wbGV0aW9uIGANCgkJLUZvcmNlIGANCgkJLUVycm9yQWN0aW9uIFN0b3AgfCBPdXQtTnVsbA0KDQoJV3JpdGUtTG9nICJXYWl0aW5nIGZvciByZXN0YXJ0IC4uLiINCiMJU3RvcC1FeGVjdXRpb24gLUV4aXRDb2RlIDMwMTAgLUV4aXRTdHJpbmcgIkNvbXB1dGVyIG11c3QgYmUgcmVzdGFydGVkIHRvIGZpbmlzaCBkb21haW4gY29udHJvbGxlciBwcm9tb3Rpb24uIg0KIwlXcml0ZS1Mb2cgIlJlc3RhcnRpbmcgY29tcHV0ZXIgLi4uIg0KIwlSZXN0YXJ0LUNvbXB1dGVyIC1Gb3JjZQ0KfQ0K" + ], + "Commands": [ + { + "Name": "Import-Module", + "Arguments": { + "Name": "CoreFunctions" + } + }, + { + "Name": "Install-RoleSecondaryDomainController", + "Arguments": { + "DomainName": "acme.local", + "UserName": "Administrator", + "Password": "P@ssw0rd123", + "SafeModePassword": "P@ssw0rd" + } + } + ], + "RebootOnCompletion": 1 +} \ No newline at end of file diff --git a/Deployment/ExecutionPlan/4.JoinAndPromote/ExecutionPlan.txt b/Deployment/ExecutionPlan/4.JoinAndPromote/ExecutionPlan.txt new file mode 100644 index 0000000..076f569 --- /dev/null +++ b/Deployment/ExecutionPlan/4.JoinAndPromote/ExecutionPlan.txt @@ -0,0 +1,10 @@ +include Install-RoleSecondaryDomainController.ps1 + +call Import-Module Name="CoreFunctions" +call Set-NetworkAdapterConfiguration FirstAvailable=true , DNSServer="10.0.102.2" +call Join-Domain DomainName="acme.local" , Username="Administrator" , Password="P@ssw0rd123" , AllowRestart=true +call Install-RoleSecondaryDomainController DomainName="acme.local" , UserName="Administrator" , Password="P@ssw0rd123" , SafeModePassword="P@ssw0rd" + +reboot 1 + +out out.json diff --git a/Deployment/ExecutionPlan/4.JoinAndPromote/GenerateJSON.bat b/Deployment/ExecutionPlan/4.JoinAndPromote/GenerateJSON.bat new file mode 100644 index 0000000..0b6aae7 --- /dev/null +++ b/Deployment/ExecutionPlan/4.JoinAndPromote/GenerateJSON.bat @@ -0,0 +1 @@ +..\ExecutionPlanGenerator.exe ExecutionPlan.txt \ No newline at end of file diff --git a/Deployment/ExecutionPlan/4.JoinAndPromote/Install-RoleSecondaryDomainController.ps1 b/Deployment/ExecutionPlan/4.JoinAndPromote/Install-RoleSecondaryDomainController.ps1 new file mode 100644 index 0000000..a638ce4 --- /dev/null +++ b/Deployment/ExecutionPlan/4.JoinAndPromote/Install-RoleSecondaryDomainController.ps1 @@ -0,0 +1,54 @@ +Function Install-RoleSecondaryDomainController +{ +<# +.SYNOPSIS +Install additional (secondary) domain controller. + +#> + param + ( + [String] + # Domain name to join to. + $DomainName, + + [String] + # Domain user who is allowed to join computer to domain. + $UserName, + + [String] + # User's password. + $Password, + + [String] + # Domain controller recovery mode password. + $SafeModePassword + ) + + trap { Stop-Execution $_ } + + $Credential = New-Credential -UserName "$DomainName\$UserName" -Password $Password + + # Add required windows features + Add-WindowsFeatureWrapper ` + -Name "DNS","AD-Domain-Services","RSAT-DFS-Mgmt-Con" ` + -IncludeManagementTools ` + -NotifyRestart + + + Write-Log "Adding secondary domain controller ..." + + $SMAP = ConvertTo-SecureString -String $SafeModePassword -AsPlainText -Force + + Install-ADDSDomainController ` + -DomainName $DomainName ` + -SafeModeAdministratorPassword $SMAP ` + -Credential $Credential ` + -NoRebootOnCompletion ` + -Force ` + -ErrorAction Stop | Out-Null + + Write-Log "Waiting for restart ..." +# Stop-Execution -ExitCode 3010 -ExitString "Computer must be restarted to finish domain controller promotion." +# Write-Log "Restarting computer ..." +# Restart-Computer -Force +} diff --git a/Deployment/ExecutionPlan/4.JoinAndPromote/out.json b/Deployment/ExecutionPlan/4.JoinAndPromote/out.json new file mode 100644 index 0000000..cd6fe95 --- /dev/null +++ b/Deployment/ExecutionPlan/4.JoinAndPromote/out.json @@ -0,0 +1,39 @@ +{ + "Scripts": [ + "RnVuY3Rpb24gSW5zdGFsbC1Sb2xlU2Vjb25kYXJ5RG9tYWluQ29udHJvbGxlcg0Kew0KPCMNCi5TWU5PUFNJUw0KSW5zdGFsbCBhZGRpdGlvbmFsIChzZWNvbmRhcnkpIGRvbWFpbiBjb250cm9sbGVyLg0KDQojPg0KCXBhcmFtDQoJKA0KCQlbU3RyaW5nXQ0KCQkjIERvbWFpbiBuYW1lIHRvIGpvaW4gdG8uDQoJCSREb21haW5OYW1lLA0KCQkNCgkJW1N0cmluZ10NCgkJIyBEb21haW4gdXNlciB3aG8gaXMgYWxsb3dlZCB0byBqb2luIGNvbXB1dGVyIHRvIGRvbWFpbi4NCgkJJFVzZXJOYW1lLA0KCQkNCgkJW1N0cmluZ10NCgkJIyBVc2VyJ3MgcGFzc3dvcmQuDQoJCSRQYXNzd29yZCwNCgkJDQoJCVtTdHJpbmddDQoJCSMgRG9tYWluIGNvbnRyb2xsZXIgcmVjb3ZlcnkgbW9kZSBwYXNzd29yZC4NCgkJJFNhZmVNb2RlUGFzc3dvcmQNCgkpDQoNCgl0cmFwIHsgU3RvcC1FeGVjdXRpb24gJF8gfQ0KCQ0KCSRDcmVkZW50aWFsID0gTmV3LUNyZWRlbnRpYWwgLVVzZXJOYW1lICIkRG9tYWluTmFtZVwkVXNlck5hbWUiIC1QYXNzd29yZCAkUGFzc3dvcmQNCgkJDQoJIyBBZGQgcmVxdWlyZWQgd2luZG93cyBmZWF0dXJlcw0KCUFkZC1XaW5kb3dzRmVhdHVyZVdyYXBwZXIgYA0KCQktTmFtZSAiRE5TIiwiQUQtRG9tYWluLVNlcnZpY2VzIiwiUlNBVC1ERlMtTWdtdC1Db24iIGANCgkJLUluY2x1ZGVNYW5hZ2VtZW50VG9vbHMgYA0KICAgICAgICAgICAgICAgIC1Ob3RpZnlSZXN0YXJ0DQoJCQ0KCQ0KICAgICAgICBXcml0ZS1Mb2cgIkFkZGluZyBzZWNvbmRhcnkgZG9tYWluIGNvbnRyb2xsZXIgLi4uIg0KICAgIA0KCSRTTUFQID0gQ29udmVydFRvLVNlY3VyZVN0cmluZyAtU3RyaW5nICRTYWZlTW9kZVBhc3N3b3JkIC1Bc1BsYWluVGV4dCAtRm9yY2UNCg0KCUluc3RhbGwtQUREU0RvbWFpbkNvbnRyb2xsZXIgYA0KCQktRG9tYWluTmFtZSAkRG9tYWluTmFtZSBgDQoJCS1TYWZlTW9kZUFkbWluaXN0cmF0b3JQYXNzd29yZCAkU01BUCBgDQoJCS1DcmVkZW50aWFsICRDcmVkZW50aWFsIGANCgkJLU5vUmVib290T25Db21wbGV0aW9uIGANCgkJLUZvcmNlIGANCgkJLUVycm9yQWN0aW9uIFN0b3AgfCBPdXQtTnVsbA0KDQoJV3JpdGUtTG9nICJXYWl0aW5nIGZvciByZXN0YXJ0IC4uLiINCiMJU3RvcC1FeGVjdXRpb24gLUV4aXRDb2RlIDMwMTAgLUV4aXRTdHJpbmcgIkNvbXB1dGVyIG11c3QgYmUgcmVzdGFydGVkIHRvIGZpbmlzaCBkb21haW4gY29udHJvbGxlciBwcm9tb3Rpb24uIg0KIwlXcml0ZS1Mb2cgIlJlc3RhcnRpbmcgY29tcHV0ZXIgLi4uIg0KIwlSZXN0YXJ0LUNvbXB1dGVyIC1Gb3JjZQ0KfQ0K" + ], + "Commands": [ + { + "Name": "Import-Module", + "Arguments": { + "Name": "CoreFunctions" + } + }, + { + "Name": "Set-NetworkAdapterConfiguration", + "Arguments": { + "FirstAvailable": true, + "DNSServer": "10.0.102.2" + } + }, + { + "Name": "Join-Domain", + "Arguments": { + "DomainName": "acme.local", + "Username": "Administrator", + "Password": "P@ssw0rd123", + "AllowRestart": true + } + }, + { + "Name": "Install-RoleSecondaryDomainController", + "Arguments": { + "DomainName": "acme.local", + "UserName": "Administrator", + "Password": "P@ssw0rd123", + "SafeModePassword": "P@ssw0rd" + } + } + ], + "RebootOnCompletion": 1 +} \ No newline at end of file diff --git a/Deployment/ExecutionPlan/ExecutionPlanGenerator.exe b/Deployment/ExecutionPlan/ExecutionPlanGenerator.exe new file mode 100644 index 0000000..ef78c02 Binary files /dev/null and b/Deployment/ExecutionPlan/ExecutionPlanGenerator.exe differ diff --git a/Deployment/ExecutionPlan/Newtonsoft.Json.dll b/Deployment/ExecutionPlan/Newtonsoft.Json.dll new file mode 100644 index 0000000..81639f9 Binary files /dev/null and b/Deployment/ExecutionPlan/Newtonsoft.Json.dll differ