50 lines
1.5 KiB
PowerShell
50 lines
1.5 KiB
PowerShell
|
[CmdletBinding()]
|
||
|
Param(
|
||
|
# No parameters
|
||
|
)
|
||
|
|
||
|
$InstallWindowsFeatureSplat = @{
|
||
|
Name = 'AD-Domain-Services', 'DHCP', 'RSAT-DNS-Server'
|
||
|
IncludeAllSubFeature = $True
|
||
|
IncludeManagementTools = $True
|
||
|
Restart = $False
|
||
|
Confirm = $False
|
||
|
}
|
||
|
Install-WindowsFeature @InstallWindowsFeatureSplat
|
||
|
|
||
|
$InstallPackageProviderSplat = @{
|
||
|
Name = 'NuGet'
|
||
|
MinimumVersion = '2.8.5.201'
|
||
|
Force = $True
|
||
|
Confirm = $False
|
||
|
}
|
||
|
Install-PackageProvider @InstallPackageProviderSplat
|
||
|
$SetPSRepositorySplat = @{
|
||
|
Name = 'PSGallery'
|
||
|
InstallationPolicy = 'Trusted'
|
||
|
}
|
||
|
Set-PSRepository @SetPSRepositorySplat
|
||
|
$InstallModuleSplat = @{
|
||
|
Name = 'powershell-yaml','gpwmifilter'
|
||
|
Force = $True
|
||
|
Confirm = $False
|
||
|
}
|
||
|
Install-Module @InstallModuleSplat
|
||
|
$SetPSRepositorySplat = @{
|
||
|
Name = 'PSGallery'
|
||
|
InstallationPolicy = 'Untrusted'
|
||
|
}
|
||
|
Set-PSRepository @SetPSRepositorySplat
|
||
|
|
||
|
# Double check whether the required PowerShell modules are available
|
||
|
$RequiredModules = @(
|
||
|
'powershell-yaml', # Provides cmdlets 'ConvertTo-Yaml' and 'ConvertFrom-Yaml'
|
||
|
'gpwmifilter', # Provides cmdlets '*-GPWmiFilter' and '*-GPWmiFilterAssignment'
|
||
|
'psframework' # Dependency for GMWmiFilter
|
||
|
)
|
||
|
ForEach ($Module in $RequiredModules) {
|
||
|
If ([boolean](Get-Module -Name $Module -ListAvailable) -ne $True) {
|
||
|
Write-Error -Message "Missing PowerShell module '$($Module)'"
|
||
|
Exit 1
|
||
|
}
|
||
|
}
|