vagrant-uplift 0.2.1902.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/console +13 -0
- data/bin/setup +8 -0
- data/lib/scripts/vagrant/uplift.vagrant.core/uplift.fix-second-network.ps1 +59 -0
- data/lib/scripts/vagrant/uplift.vagrant.dc12/dc.dsc.ps1 +128 -0
- data/lib/scripts/vagrant/uplift.vagrant.dc12/dc.replica.dsc.ps1 +117 -0
- data/lib/scripts/vagrant/uplift.vagrant.dc12/dc.users.dsc.ps1 +147 -0
- data/lib/scripts/vagrant/uplift.vagrant.dc12/tests/dc.dsc.Tests.ps1 +165 -0
- data/lib/scripts/vagrant/uplift.vagrant.dcjoin/dc.join.dsc.ps1 +125 -0
- data/lib/scripts/vagrant/uplift.vagrant.dcjoin/dc.join.hostname.ps1 +13 -0
- data/lib/scripts/vagrant/uplift.vagrant.dcjoin/tests/dc.join.dsc.Tests.ps1 +12 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/shared/sp.helpers.ps1 +155 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/sp2013.dsc.ps1 +248 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/sp2013.post_setup.dsc.ps1 +117 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/sp2016.dsc.ps1 +246 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/sp2016.farm-only.dsc.ps1 +281 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/sp2016.info.ps1 +36 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/sp2016.post_setup.dsc.ps1 +125 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/sp2016.pre_setup1.dsc.ps1 +28 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/sp2016.pre_setup2.dsc.ps1 +75 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/tests/sp2013.dsc.wfe.Tests.ps1 +68 -0
- data/lib/scripts/vagrant/uplift.vagrant.sharepoint/tests/sp2016.dsc.wfe.Tests.ps1 +68 -0
- data/lib/scripts/vagrant/uplift.vagrant.sql12/sql.complete.dsc.ps1 +186 -0
- data/lib/scripts/vagrant/uplift.vagrant.sql12/sql.dsc.ps1 +66 -0
- data/lib/scripts/vagrant/uplift.vagrant.sql12/sql.optimize.dsc.ps1 +50 -0
- data/lib/scripts/vagrant/uplift.vagrant.sql12/sql.prepare.dsc.ps1 +60 -0
- data/lib/scripts/vagrant/uplift.vagrant.sql12/tests/sql.dsc.Tests.ps1 +23 -0
- data/lib/scripts/vagrant/uplift.vagrant.sql12/tests/sql12.dsc.Tests.ps1 +45 -0
- data/lib/scripts/vagrant/uplift.vagrant.sql12/tests/sql16.dsc.Tests.ps1 +22 -0
- data/lib/scripts/vagrant/uplift.vagrant.visual_studio13/tests/vs13.dsc.Tests.ps1 +61 -0
- data/lib/scripts/vagrant/uplift.vagrant.visual_studio13/vs13.dsc.post_deploy.ps1 +32 -0
- data/lib/scripts/vagrant/uplift.vagrant.visual_studio13/vs13.dsc.ps1 +69 -0
- data/lib/scripts/vagrant/uplift.vagrant.visual_studio17/tests/vs17.dsc.Tests.ps1 +61 -0
- data/lib/scripts/vagrant/uplift.vagrant.visual_studio17/vs17.dsc.post_deploy.ps1 +34 -0
- data/lib/scripts/vagrant/uplift.vagrant.visual_studio17/vs17.dsc.ps1 +134 -0
- data/lib/scripts/vagrant/uplift.vagrant.win12soe/soe.dsc.ps1 +115 -0
- data/lib/scripts/vagrant/uplift.vagrant.win12soe/soe.shortcuts.dsc.ps1 +41 -0
- data/lib/scripts/vagrant/uplift.vagrant.win12soe/tests/soe.dsc.modules.Tests.ps1 +71 -0
- data/lib/scripts/vagrant/uplift.vagrant.win12soe/tests/soe.dsc.os.Tests.ps1 +89 -0
- data/lib/vagrant-uplift.rb +8 -0
- data/lib/vagrant-uplift/config_builder.rb +819 -0
- data/lib/vagrant-uplift/log.rb +146 -0
- data/lib/vagrant-uplift/plugin-vagrant-uplift-checkpoint.rb +41 -0
- data/lib/vagrant-uplift/plugin.rb +16 -0
- data/lib/vagrant-uplift/version.rb +10 -0
- metadata +131 -0
@@ -0,0 +1,134 @@
|
|
1
|
+
# fail on errors and include uplift helpers
|
2
|
+
$ErrorActionPreference = "Stop"
|
3
|
+
|
4
|
+
Import-Module Uplift.Core
|
5
|
+
|
6
|
+
Write-UpliftMessage "Installing Visual Studio..."
|
7
|
+
Write-UpliftEnv
|
8
|
+
|
9
|
+
$execPath = Get-UpliftEnvVariable "UPLF_VS_EXECUTABLE_PATH"
|
10
|
+
Write-UpliftMessage "Using VS install file: $execPath"
|
11
|
+
|
12
|
+
$vsPackageIdsValue = Get-UpliftEnvVariable "UPLF_VS_PACKAGE_IDS"
|
13
|
+
|
14
|
+
Write-UpliftMessage "Using product name: $productName "
|
15
|
+
Write-UpliftMessage "Using package IDs:"
|
16
|
+
Write-UpliftMessage " - $vsPackageIdsValue"
|
17
|
+
|
18
|
+
$expectPackageCount = [int](Get-UpliftEnvVariable "UPLF_VS_PACKAGE_COUNT")
|
19
|
+
|
20
|
+
Write-UpliftMessage "Using VS install file: $execPath"
|
21
|
+
Write-UpliftMessage "Expecting $expectPackageCount packages installed"
|
22
|
+
|
23
|
+
$installLogFolder = $env:TEMP
|
24
|
+
$installLogFilter = "dd_setup*_*_*"
|
25
|
+
$vs17LogsFilter = "dd_*"
|
26
|
+
|
27
|
+
$enterprisePackageName = "Microsoft.VisualStudio.Product.Enterprise"
|
28
|
+
|
29
|
+
Write-UpliftMessage "Cleaning up previous logs, filter: $vs17LogsFilter, path: $installLogFolder"
|
30
|
+
$logFiles = Get-ChildItem $installLogFolder -Filter $vs17LogsFilter
|
31
|
+
Write-UpliftMessage "Found $($logFiles.Count) files, will remove them"
|
32
|
+
|
33
|
+
$logFiles | foreach { Remove-Item -Path $_.FullName }
|
34
|
+
|
35
|
+
# TODO, move layout and other configs into variables
|
36
|
+
# --noWeb fails with the following errors so that it is not possible to make fully offline install
|
37
|
+
# * Package 'Microsoft.VisualStudio.Branding.Enterprise,version=15.6.27413.0,language=en-US' failed to download from
|
38
|
+
# * Package 'Microsoft.VisualStudio.MinShell.Resources,version=15.7.27703.2018,language=en-US' failed to download from
|
39
|
+
|
40
|
+
# https://docs.microsoft.com/en-us/visualstudio/install/create-a-network-installation-of-visual-studio
|
41
|
+
# https://docs.microsoft.com/en-us/visualstudio/install/use-command-line-parameters-to-install-visual-studio
|
42
|
+
# https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-community?view=vs-2017
|
43
|
+
|
44
|
+
$splitOptions = [System.StringSplitOptions]::RemoveEmptyEntries
|
45
|
+
$packageIds = $vsPackageIdsValue.Split(";", $splitOptions)
|
46
|
+
|
47
|
+
$workloadArgument = @()
|
48
|
+
|
49
|
+
foreach($packageId in $packageIds) {
|
50
|
+
$workloadArgument += ("--add " + $packageId)
|
51
|
+
}
|
52
|
+
|
53
|
+
$workloadCmd = [string]::Join(" ", $workloadArgument )
|
54
|
+
Write-UpliftMessage " - workloadCmd: $workloadCmd"
|
55
|
+
|
56
|
+
Write-UpliftMessage "Executing install..."
|
57
|
+
Write-UpliftMessage " - path: $execPath"
|
58
|
+
|
59
|
+
$modifyCmd = ""
|
60
|
+
$installPath = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise"
|
61
|
+
if(Test-Path $installPath) {
|
62
|
+
Write-UpliftMessage "VS install path exists, adding --modify flag"
|
63
|
+
$modifyCmd = "modify --installPath ""$installPath"" "
|
64
|
+
Write-UpliftMessage " - cmd: $modifyCmd"
|
65
|
+
}
|
66
|
+
|
67
|
+
$finalCmd = "$modifyCmd $workloadCmd --quiet --wait"
|
68
|
+
Write-UpliftMessage "Final arg cmd:"
|
69
|
+
Write-UpliftMessage " - cmd: $finalCmd "
|
70
|
+
|
71
|
+
$process = Start-Process -FilePath $execPath `
|
72
|
+
-ArgumentList "$finalCmd" `
|
73
|
+
-Wait `
|
74
|
+
-PassThru
|
75
|
+
|
76
|
+
# logs will be at %TEMP% folder
|
77
|
+
# C:\Users\vagrant\AppData\Local\Temp
|
78
|
+
# a bunch of
|
79
|
+
# - dd_bootstrapper
|
80
|
+
# - dd_client
|
81
|
+
# - dd_service
|
82
|
+
# we might need to check these files in order to parse errors
|
83
|
+
$exitCode = $process.ExitCode;
|
84
|
+
Write-UpliftMessage "Exit code was: $exitCode"
|
85
|
+
|
86
|
+
Write-UpliftMessage "Checking packages installed, filter: $installLogFilter, path: $installLogFolder"
|
87
|
+
$files = Get-ChildItem $installLogFolder -Filter $installLogFilter
|
88
|
+
Write-UpliftMessage "Found $($files.Count) files"
|
89
|
+
|
90
|
+
foreach($file in $files) {
|
91
|
+
Write-UpliftMessage $file.FullName
|
92
|
+
}
|
93
|
+
|
94
|
+
if($files.Count -le $expectPackageCount) {
|
95
|
+
Write-UpliftMessage "WARN - less than $expectPackageCount packages, we might have VS2017 installed wrong or it could be install on top"
|
96
|
+
} else {
|
97
|
+
Write-UpliftMessage "INFO - more than $expectPackageCount packages, we might have VS2017 installed right"
|
98
|
+
}
|
99
|
+
|
100
|
+
$mainPackage = Get-ChildItem $installLogFolder -Filter "dd_setup_*_*_$enterprisePackageName*"
|
101
|
+
|
102
|
+
if($mainPackage.Count -le 0) {
|
103
|
+
Write-UpliftMessage "WARN - can't find package $enterprisePackageName, we might have VS2017 installed wrong"
|
104
|
+
} else {
|
105
|
+
Write-UpliftMessage "INGO - CAN find package $enterprisePackageName, we might have VS2017 installed right"
|
106
|
+
}
|
107
|
+
|
108
|
+
# printing error file
|
109
|
+
$errorFilePath = "$installLogFolder\dd_setup_**_errors.log"
|
110
|
+
|
111
|
+
Write-UpliftMessage "Checking error log: $errorFilePath"
|
112
|
+
if (Test-Path $errorFilePath ) {
|
113
|
+
$realErrorFilePath = Resolve-Path $errorFilePath
|
114
|
+
Write-UpliftMessage "Reading error file: $realErrorFilePath"
|
115
|
+
|
116
|
+
$errorContent = Get-Content $realErrorFilePath
|
117
|
+
if ($errorContent.Count -eq 0) {
|
118
|
+
Write-UpliftMessage "No error are found, all looks promising!"
|
119
|
+
} else {
|
120
|
+
Write-UpliftMessage "Errors output:"
|
121
|
+
Write-UpliftMessage $errorContent
|
122
|
+
|
123
|
+
exit -1
|
124
|
+
}
|
125
|
+
} else {
|
126
|
+
Write-UpliftMessage "Can't find errors file: $errorFilePath"
|
127
|
+
}
|
128
|
+
|
129
|
+
if ($exitCode -ne 0 -and $exitCode -ne 3010) {
|
130
|
+
Write-UpliftMessage "Failed to install VS2017, exit code: $exitCode";
|
131
|
+
exit $exitCode;
|
132
|
+
}
|
133
|
+
|
134
|
+
exit 0
|
@@ -0,0 +1,115 @@
|
|
1
|
+
# fail on errors and include uplift helpers
|
2
|
+
$ErrorActionPreference = "Stop"
|
3
|
+
|
4
|
+
Import-Module Uplift.Core
|
5
|
+
|
6
|
+
Write-UpliftMessage "Running windows SOE config..."
|
7
|
+
Write-UpliftEnv
|
8
|
+
|
9
|
+
Write-UpliftMessage "Disabling Firewalls..."
|
10
|
+
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
|
11
|
+
|
12
|
+
Configuration Configure_WinSOE {
|
13
|
+
|
14
|
+
Import-DscResource -ModuleName 'PSDesiredStateConfiguration'
|
15
|
+
|
16
|
+
Import-DscResource -ModuleName 'xActiveDirectory' -ModuleVersion '2.17.0.0'
|
17
|
+
Import-DscResource -ModuleName 'xNetworking' -ModuleVersion '5.5.0.0'
|
18
|
+
Import-DscResource -ModuleName 'ComputerManagementDsc' -ModuleVersion "6.1.0.0"
|
19
|
+
|
20
|
+
Import-DSCResource -Module xSystemSecurity
|
21
|
+
|
22
|
+
Node localhost
|
23
|
+
{
|
24
|
+
LocalConfigurationManager
|
25
|
+
{
|
26
|
+
ConfigurationMode = 'ApplyOnly'
|
27
|
+
RebootNodeIfNeeded = $false
|
28
|
+
RefreshMode = "Push"
|
29
|
+
}
|
30
|
+
|
31
|
+
User Vagrant {
|
32
|
+
UserName = "vagrant"
|
33
|
+
Disabled = $false
|
34
|
+
PasswordChangeRequired = $false
|
35
|
+
PasswordNeverExpires = $true
|
36
|
+
}
|
37
|
+
|
38
|
+
TimeZone TimeZone
|
39
|
+
{
|
40
|
+
IsSingleInstance = 'Yes'
|
41
|
+
TimeZone = $Node.TimeZoneName
|
42
|
+
}
|
43
|
+
|
44
|
+
WindowsFeature ADDSInstall
|
45
|
+
{
|
46
|
+
Ensure = "Present"
|
47
|
+
Name = "AD-Domain-Services"
|
48
|
+
}
|
49
|
+
|
50
|
+
WindowsFeature ADDSRSAT
|
51
|
+
{
|
52
|
+
Ensure = "Present"
|
53
|
+
Name = "RSAT-ADDS-Tools"
|
54
|
+
}
|
55
|
+
|
56
|
+
WindowsFeature RSAT
|
57
|
+
{
|
58
|
+
Ensure = "Present"
|
59
|
+
Name = "RSAT"
|
60
|
+
}
|
61
|
+
|
62
|
+
Registry WindowsUpdate_NoAutoUpdate
|
63
|
+
{
|
64
|
+
Ensure = "Present"
|
65
|
+
Key = "HKLM:SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU"
|
66
|
+
ValueName = "NoAutoUpdate"
|
67
|
+
ValueData = 1
|
68
|
+
ValueType = "DWord"
|
69
|
+
}
|
70
|
+
|
71
|
+
Registry WindowsUpdate_AUOptions
|
72
|
+
{
|
73
|
+
Ensure = "Present"
|
74
|
+
Key = "HKLM:SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU"
|
75
|
+
ValueName = "AUOptions"
|
76
|
+
ValueData = 2
|
77
|
+
ValueType = "DWord"
|
78
|
+
}
|
79
|
+
|
80
|
+
Registry Windows_RemoteConnections
|
81
|
+
{
|
82
|
+
Ensure = "Present"
|
83
|
+
Key = "HKLM:System\CurrentControlSet\Control\Terminal Server"
|
84
|
+
ValueName = "fDenyTSConnections"
|
85
|
+
ValueData = 0
|
86
|
+
ValueType = "DWord"
|
87
|
+
}
|
88
|
+
|
89
|
+
xIEEsc Disable_IEEsc
|
90
|
+
{
|
91
|
+
IsEnabled = $false
|
92
|
+
UserRole = "Administrators"
|
93
|
+
}
|
94
|
+
}
|
95
|
+
}
|
96
|
+
|
97
|
+
|
98
|
+
$config = @{
|
99
|
+
AllNodes = @(
|
100
|
+
@{
|
101
|
+
NodeName = 'localhost'
|
102
|
+
PSDscAllowPlainTextPassword = $true
|
103
|
+
RetryCount = 10
|
104
|
+
RetryIntervalSec = 30
|
105
|
+
|
106
|
+
TimeZoneName = ( Get-UpliftEnvVariable "UPLF_SOE_TIME_ZONE_NAME" "" 'AUS Eastern Standard Time' )
|
107
|
+
}
|
108
|
+
)
|
109
|
+
}
|
110
|
+
|
111
|
+
|
112
|
+
$configuration = Get-Command Configure_WinSOE
|
113
|
+
Start-UpliftDSCConfiguration $configuration $config -ExpectInDesiredState $True
|
114
|
+
|
115
|
+
exit 0
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# fail on errors and include uplift helpers
|
2
|
+
$ErrorActionPreference = "Stop"
|
3
|
+
|
4
|
+
Import-Module Uplift.Core
|
5
|
+
|
6
|
+
Write-UpliftMessage "Running DSC Configure_Shortcuts..."
|
7
|
+
|
8
|
+
Configuration SOE_Shortcuts
|
9
|
+
{
|
10
|
+
Import-DscResource -ModuleName DSCR_Shortcut -ModuleVersion '1.3.7'
|
11
|
+
|
12
|
+
$desktopPath = [Environment]::GetFolderPath("Desktop")
|
13
|
+
|
14
|
+
cShortcut IE_Desktop
|
15
|
+
{
|
16
|
+
Path = "$desktopPath\IE.lnk"
|
17
|
+
Target = "C:\Program Files\Internet Explorer\iexplore.exe"
|
18
|
+
|
19
|
+
}
|
20
|
+
|
21
|
+
cShortcut PowerShell_ISE_Desktop
|
22
|
+
{
|
23
|
+
Path = "$desktopPath\PowerShellISE.lnk"
|
24
|
+
Target = "%windir%\system32\WindowsPowerShell\v1.0\PowerShell_ISE.exe"
|
25
|
+
WorkingDirectory = '%HOMEDRIVE%%HOMEPATH%'
|
26
|
+
|
27
|
+
}
|
28
|
+
|
29
|
+
cShortcut PowerShell_6_Desktop
|
30
|
+
{
|
31
|
+
Path = "$desktopPath\PowerShell6.lnk"
|
32
|
+
Target = "C:\Program Files\PowerShell\6\pwsh.exe"
|
33
|
+
Arguments = "-WorkingDirectory ~"
|
34
|
+
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
$configuration = Get-Command SOE_Shortcuts
|
39
|
+
Start-UpliftDSCConfiguration $configuration $config -ExpectInDesiredState $True
|
40
|
+
|
41
|
+
exit 0
|
@@ -0,0 +1,71 @@
|
|
1
|
+
|
2
|
+
Describe 'PowerShell DCS' {
|
3
|
+
|
4
|
+
Context "Modules" {
|
5
|
+
|
6
|
+
It 'cChoco' {
|
7
|
+
Get-Module -Name cChoco -ListAvailable | Should BeLike "cChoco"
|
8
|
+
}
|
9
|
+
|
10
|
+
It 'cFirewall' {
|
11
|
+
Get-Module -Name cFirewall -ListAvailable | Should BeLike "cFirewall"
|
12
|
+
}
|
13
|
+
|
14
|
+
It 'SharePointDSC' {
|
15
|
+
Get-Module -Name SharePointDSC -ListAvailable | Should BeLike "SharePointDSC"
|
16
|
+
}
|
17
|
+
|
18
|
+
It 'MS_xVisualStudio' {
|
19
|
+
Get-Module -Name MS_xVisualStudio -ListAvailable | Should BeLike "MS_xVisualStudio"
|
20
|
+
}
|
21
|
+
|
22
|
+
It 'xActiveDirectory' {
|
23
|
+
Get-Module -Name xActiveDirectory -ListAvailable | Should BeLike "xActiveDirectory"
|
24
|
+
}
|
25
|
+
|
26
|
+
It 'xSQLServer' {
|
27
|
+
Get-Module -Name xSQLServer -ListAvailable | Should BeLike "xSQLServer"
|
28
|
+
}
|
29
|
+
|
30
|
+
It 'xDSCFirewall' {
|
31
|
+
Get-Module -Name xDSCFirewall -ListAvailable | Should BeLike "xDSCFirewall"
|
32
|
+
}
|
33
|
+
|
34
|
+
It 'xNetworking' {
|
35
|
+
Get-Module -Name xNetworking -ListAvailable | Should BeLike "xNetworking"
|
36
|
+
}
|
37
|
+
|
38
|
+
It 'xTimeZone' {
|
39
|
+
Get-Module -Name xTimeZone -ListAvailable | Should BeLike "xTimeZone"
|
40
|
+
}
|
41
|
+
|
42
|
+
It 'xWebAdministration' {
|
43
|
+
Get-Module -Name xWebAdministration -ListAvailable | Should BeLike "xWebAdministration"
|
44
|
+
}
|
45
|
+
|
46
|
+
It 'xPendingReboot' {
|
47
|
+
Get-Module -Name xPendingReboot -ListAvailable | Should BeLike "xPendingReboot"
|
48
|
+
}
|
49
|
+
|
50
|
+
It 'xComputerManagement' {
|
51
|
+
Get-Module -Name xComputerManagement -ListAvailable | Should BeLike "xComputerManagement"
|
52
|
+
}
|
53
|
+
|
54
|
+
It 'Pester' {
|
55
|
+
Get-Module -Name Pester -ListAvailable | Should BeLike "Pester"
|
56
|
+
}
|
57
|
+
|
58
|
+
It 'xSystemSecurity' {
|
59
|
+
Get-Module -Name xSystemSecurity -ListAvailable | Should BeLike "xSystemSecurity"
|
60
|
+
}
|
61
|
+
|
62
|
+
It 'DSCR_Shortcut' {
|
63
|
+
Get-Module -Name DSCR_Shortcut -ListAvailable | Should BeLike "DSCR_Shortcut"
|
64
|
+
}
|
65
|
+
|
66
|
+
It 'PSWindowsUpdate' {
|
67
|
+
Get-Module -Name PSWindowsUpdate -ListAvailable | Should BeLike "PSWindowsUpdate"
|
68
|
+
}
|
69
|
+
|
70
|
+
}
|
71
|
+
}
|
@@ -0,0 +1,89 @@
|
|
1
|
+
Describe 'OS' {
|
2
|
+
|
3
|
+
Context "Settings" {
|
4
|
+
# timezone is set to AU
|
5
|
+
It 'AUS Eastern Standard Time' {
|
6
|
+
([System.TimeZone]::CurrentTimeZone).StandardName | Should BeLike "AUS Eastern Standard Time"
|
7
|
+
}
|
8
|
+
|
9
|
+
# auto-update settings
|
10
|
+
It 'NoAutoUpdate = 1' {
|
11
|
+
|
12
|
+
$regKey = "HKLM:SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU"
|
13
|
+
|
14
|
+
(Get-Item $regKey).GetValue('NoAutoUpdate') | Should Be 1
|
15
|
+
}
|
16
|
+
|
17
|
+
It 'AUOptions = 1' {
|
18
|
+
$regKey = "HKLM:SOFTWARE\\Policies\\Microsoft\\Windows\\WindowsUpdate\\AU"
|
19
|
+
|
20
|
+
(Get-Item $regKey).GetValue('AUOptions') | Should Be 2
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
Context "Features" {
|
25
|
+
It 'AD-Domain-Services' {
|
26
|
+
(Get-WindowsFeature AD-Domain-Services).InstallState | Should BeLike "Installed"
|
27
|
+
}
|
28
|
+
|
29
|
+
It 'RSAT-ADDS-Tools' {
|
30
|
+
(Get-WindowsFeature RSAT-ADDS-Tools).InstallState | Should BeLike "Installed"
|
31
|
+
}
|
32
|
+
|
33
|
+
It 'RSAT' {
|
34
|
+
(Get-WindowsFeature RSAT).InstallState | Should BeLike "Installed"
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
Context "Firewall" {
|
39
|
+
It 'domain is OFF' {
|
40
|
+
$FWProfile = "DomainProfile"
|
41
|
+
$Actual = Invoke-Command -ScriptBlock { (Get-ItemProperty "HKLM:\System\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\$FWProfile" -Name EnableFirewall).EnableFirewall }
|
42
|
+
|
43
|
+
$Actual | Should Be 0
|
44
|
+
|
45
|
+
}
|
46
|
+
|
47
|
+
It 'public is OFF' {
|
48
|
+
$FWProfile = "PublicProfile"
|
49
|
+
$Actual = Invoke-Command -ScriptBlock { (Get-ItemProperty "HKLM:\System\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\$FWProfile" -Name EnableFirewall).EnableFirewall }
|
50
|
+
|
51
|
+
$Actual | Should Be 0
|
52
|
+
}
|
53
|
+
|
54
|
+
It 'private is OFF' {
|
55
|
+
$FWProfile = "StandardProfile"
|
56
|
+
$Actual = Invoke-Command -ScriptBlock { (Get-ItemProperty "HKLM:\System\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\$FWProfile" -Name EnableFirewall).EnableFirewall }
|
57
|
+
|
58
|
+
$Actual | Should Be 0
|
59
|
+
}
|
60
|
+
}
|
61
|
+
|
62
|
+
Context "Tools" {
|
63
|
+
|
64
|
+
It 'choco is installed' {
|
65
|
+
get-command choco | Should BeLike "*choco.exe*"
|
66
|
+
}
|
67
|
+
|
68
|
+
It '7zip is installed' {
|
69
|
+
get-command 7z | Should BeLike "*7z.exe*"
|
70
|
+
}
|
71
|
+
|
72
|
+
It 'git is installed' {
|
73
|
+
get-command git.exe | Should BeLike "*git.exe*"
|
74
|
+
}
|
75
|
+
|
76
|
+
It 'curl is installed' {
|
77
|
+
get-command curl.exe | Should BeLike "*curl.exe*"
|
78
|
+
}
|
79
|
+
|
80
|
+
It 'wget is installed' {
|
81
|
+
get-command wget.exe | Should BeLike "*wget.exe*"
|
82
|
+
}
|
83
|
+
|
84
|
+
It 'pwsh is installed' {
|
85
|
+
get-command pwsh.exe | Should BeLike "*pwsh.exe*"
|
86
|
+
}
|
87
|
+
}
|
88
|
+
|
89
|
+
}
|