Untitled
unknown
plain_text
a year ago
2.5 kB
30
Indexable
# Utility Function: Registry.ShouldBeKey
## This function is used to ensure that a registry key exists and its (Default) value is set to a specific value.
function Registry.ShouldBeKey {
[CmdletBinding()]
param(
# The registry path to the key.
[Parameter(Mandatory)]
[String]$Path,
# The name of the registry key.
[Parameter(Mandatory)]
[String]$Name,
# The value to set the (Default) value to.
[Parameter(Mandatory)]
[Object]$Value,
# Don't confirm that the registry key was set correctly.
[Switch]$SkipConfirmation
)
begin {
# Make sure the registry path exists.
if (!(Test-Path $Path)) {
Write-Warning ("Registry path '$Path' does not exist. Creating.")
New-Item -Path $Path -Force | Out-Null
}
# Make sure it's actually a registry path.
if (!(Get-Item $Path).PSProvider.Name -eq 'Registry' -and !(Get-Item $Path).PSIsContainer) {
throw "Path '$Path' is not a registry path."
}
$LoopCount = 0
}
process {
do {
# Make sure the registry key exists.
if (!(Test-Path "$Path\$Name")) {
Write-Warning ("Registry key '$Name' in path '$Path' does not exist. Creating.")
New-Item -Path "$Path\$Name" -Force | Out-Null
}
# Set the (Default) value of the registry key.
Set-ItemProperty -Path "$Path\$Name" -Name '(Default)' -Value $Value
# Make sure the (Default) value is correct.
if (!$SkipConfirmation) {
if ((Get-ItemProperty -Path "$Path\$Name" -Name '(Default)').'(Default)' -ne $Value) {
Write-Warning ("Registry key '$Name' in path '$Path' (Default) value is not correct. Setting to '$Value'.")
Set-ItemProperty -Path "$Path\$Name" -Name '(Default)' -Value $Value
}
$LoopCount++
} else {
# Short circuit the loop if we're skipping confirmation.
$LoopCount = 3
}
} while ((Get-ItemProperty -Path "$Path\$Name" -Name '(Default)').'(Default)' -ne $Value -and $LoopCount -lt 3)
}
}
$RegPath = 'HKLM:\SYSTEM\CurrentControlSet\Control\SafeBoot\Network'
Registry.ShouldBeKey -Path $RegPath -Name 'NinjaRMMAgent' -Value 'Service'
Registry.ShouldBeKey -Path $RegPath -Name 'ncstreamer' -Value 'Service'
Editor is loading...
Leave a Comment