function QueryAndSetRegistryValue { Param( [Parameter(Mandatory=$true)] [Boolean]$bSet, [Parameter(Mandatory=$true)] [string]$Regname, [Parameter(Mandatory=$true)] [int]$reqval ) #end param [Boolean]$return=$true $paths = 'hklm:\SYSTEM\ControlSet*\services\' + $Regname Get-ChildItem $paths | foreach { $regpath = "REGISTRY::"+$_.Name $values = (Get-ItemProperty -Path $regpath -Name start |Select-Object -ExpandProperty start) foreach ($value in $values) { If ($value -ne $reqval) { Write-Host $regpath ' start = ' $value 'expected value = ' $reqval If($bSet -eq $true) { Write-Host "Updating registry: " $regpath " start = " $reqval New-ItemProperty -Path $regpath -Name start -Value $reqval -PropertyType DWORD -Force } $return=$false } } } return $return } [Boolean]$bSet=$false foreach ($arg in $args) { If($arg -eq "-set") { $bSet = $true } } [Boolean] $meetsreq=$true $return = QueryAndSetRegistryValue $bSet atapi 0 If ($return -eq $false) { $meetsreq = $false } $return = QueryAndSetRegistryValue $bSet storvsc 0 If ($return -eq $false) { $meetsreq = $false } $return = QueryAndSetRegistryValue $bSet vmbus 0 If ($return -eq $false) { $meetsreq = $false } $return = QueryAndSetRegistryValue $bSet storflt 0 If ($return -eq $false) { $meetsreq = $false } $return = QueryAndSetRegistryValue $bSet intelide 0 If ($return -eq $false) { $meetsreq = $false } $return = QueryAndSetRegistryValue $bSet dhcp 2 If ($return -eq $false) { $meetsreq = $false } If ($bSet -eq $false) { If ($meetsreq -eq $true) { Write-Host "This system meets no-hydration requirement." -ForegroundColor Green } else { Write-Host "This system doesn't meet no-hydration requirement." -ForegroundColor Red } } else { Write-Host "This system is now no-hydration compatible." -ForegroundColor Green }