main/Unregister-ConfigHive.ps1

<#
.SYNOPSIS
Removes a configuration hive registration metadata
 
.DESCRIPTION
Removes a configuration hive registration metadata
 
.EXAMPLE
Unregister-ConfigHive -HiveName 'Test'
 
Unregister configuration hive named 'Test'
 
#>


function Unregister-ConfigHive {
  [CmdletBinding()]
  param(
    # Name of the configuration hive to unregister
    [Parameter(Mandatory)]
    [Alias('Name')]
    [ValidateNotNullOrEmpty()]
    [string] $HiveName
  )

  $ErrorActionPreference = 'Stop'
  $existinRegistrations = @(Get-RegisteredHives)
  if (($existinRegistrations -notcontains $HiveName)) {
    Print -Message ("Config Hive with name '{0}' was not found among registered Config Hives" -f $HiveName)
    return
  }

  $hivesMeta = Get-HiveMetaPath
  $targetHive = Join-Path -Path $hivesMeta -ChildPath ("{0}.xml" -f $HiveName)
  $policy = New-RetryPolicy -Policy Random -Milliseconds 5000 -Retries 3
  Invoke-ScriptBlockWithRetry -Context { Remove-Item -Path $targetHive } -RetryPolicy $policy
}