Functions/Remove-DqCheck.ps1

Function Remove-DqCheck
{
  <#
    .SYNOPSIS
      Deze functie verwijdert een enkele controle uit een DQ Monitor Webservice.
   
    .DESCRIPTION
      De Remove-DqCheck functie geeft de mogelijkheid om een enkele controle te verwijderen uit een DQ Monitor Webservice.
      Voordat deze functie gebruikt wordt, zorg ervoor dat de Context is gezet via functie Set-DqContext.
   
    .PARAMETER CheckName
      De unieke naam van de controle zoals deze bekend is bij de DQ Monitor Webservice.
     
    .PARAMETER Force
      Optioneel: Indien opgegeven zal de controle worden verwijderd zonder eerst een bevestiging te vragen.
       
    .INPUTS
      Geen.
   
    .OUTPUTS
      Geen.
   
    .EXAMPLE
      PS> Remove-DqCheck -CheckName "WOONGELUK_REL_GEG_GELDIG"
      Weet u zeker dat controle 'WOONGELUK_REL_GEG_GELDIG' met Id 1 verwijderd moet worden uit DQ Monitor? Dit kan niet ongedaan gemaakt worden:
      Keuze (jn):
   
    .EXAMPLE
      PS> Remove-DqCheck -CheckName "WOONGELUK_REL_GEG_GELDIG" -Force
      Controle is verwijderd.
 
    .LINK
      Set-DqContext
  #>


  [CmdletBinding(DefaultParameterSetName="ByCheckName")]
  Param(
    [Parameter(Mandatory=$True, ParameterSetName="ByCheckName", position=1)]
    [ValidateNotNullOrEmpty()]
    [String] $CheckName,

    [Parameter(Mandatory=$False, ParameterSetName="ByCheckName", position=2)]
    [Switch] $Force,

    [Parameter(Mandatory=$True, ParameterSetName="ByCheckObject", position=1)]
    [ValidateNotNull()]
    [PsCustomObject] $CheckObject
  )
  
  If ($PSCmdlet.ParameterSetName.Equals("ByCheckName"))
  {
    $CheckObjects = Get-DqChecks -CustomOnly | Where-Object { $_.Name.ToLowerInvariant().Equals($CheckName.ToLowerInvariant()) }
    If (-not($CheckObjects))
    {
      Write-Host "Controle '$($CheckName)' kon niet worden gevonden." -ForegroundColor Red
      Return $False;
    }

    $CheckObject = $CheckObjects | Select -First 1
  }
  
  If (-not($CheckObject.IsCustom))
  {
    Write-Host "Controle '$($CheckName)' is geen eigen gemaakte controle. Verwijderen wordt niet ondersteund." -ForegroundColor Red 
    Return;
  }

  If (-Not($Force.IsPresent) -or -not($Force))
  {
    Write-Host "Weet u zeker dat controle " -NoNewline
    Write-Host "'$($CheckObject.Name)'" -NoNewline -ForegroundColor White -BackgroundColor DarkRed 
    Write-Host " met Id " -NoNewline
    Write-Host "$($CheckObject.Id)" -NoNewline -ForegroundColor White -BackgroundColor DarkRed 
    Write-Host " verwijderd moet worden uit DQ Monitor? Dit kan niet ongedaan gemaakt worden:" 
  
    $Keuze = ""
    Do
    {
      $Keuze = Read-Host "Keuze (jn)"
    } While ($Keuze.Trim() -notmatch '^[jJnN]$')

    If ($Keuze.ToLowerInvariant().Equals("n"))
    {
      Write-Host "Handeling afgebroken."
      Return;
    }
  }

  Write-Verbose "Verwijderen van controle '$($CheckObject.Name)' met Id $($CheckObject.Id)..."
  Remove-Check -CheckId $CheckObject.Id -ErrorAction Stop | Out-Null
  Write-Host "Controle is verwijderd."
}