[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 } }