Functions/Export-DqEntities.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Function Export-DqEntities
{
  <#
    .SYNOPSIS
      Deze functie haalt alle eigen gemaakte entiteiten op uit een DQ Monitor Webservice en exporteert deze naar een entiteit .JSON bestand.
   
    .DESCRIPTION
      De Export-DqEntities functie haalt een lijst op van eigen gemaakte entiteiten die bekend zijn bij de DQ Monitor Webservice.
      Voordat deze functie gebruikt wordt, zorg ervoor dat de Context is gezet via functie Set-DqContext.
   
    .PARAMETER EntityJsonFile
      Het volledige pad naar een niet bestaand .JSON bestand waarnaar de resultaten worden opgeslagen.
 
    .PARAMETER Force (Optioneel)
      Indien het bestand 'EntityJsonFile' bestaat geeft deze parameter de mogelijkheid om deze te overschrijven.
 
    .INPUTS
      Geen.
   
    .OUTPUTS
      Geen.
  
    .EXAMPLE
      PS> Export-DqEntities -EntityJsonFile "C:\dq\entities.json"
      4 entiteiten weggeschreven naar 'C:\dq\entities.json'.
   
    .LINK
      Set-DqContext
  #>

  [CmdletBinding()]
  Param(
    [Parameter(Mandatory=$True, Position=1)]
    [ValidateNotNullOrEmpty()]
    [String] $EntityJsonFile,

    [Parameter(Mandatory=$False, Position=2)]
    [Switch] $Force
  )

  Validate-Context

  If (Test-Path -Path $EntityJsonFile -PathType Leaf)
  {
    If (-not($Force.IsPresent -and $Force))
    {
      Write-Host "Entiteit JSON bestand '$($EntityJsonFile)' bestaat al. Indien deze overschreven moet worden, gebruik parameter 'Force'." -ForegroundColor Red
      Return;
    }
  }
  
  $AllCustomEntities = Get-DqEntities -CustomOnly 
  $CustomEntities = @()
  ForEach($CustomEntity in $AllCustomEntities)
  {
    $CustomEntities += [PSCustomObject] @{
      Name = $CustomEntity.Name;
      PluralName = $CustomEntity.PluralName 
      Description = $CustomEntity.Description 
    };
  }

  $CustomEntitiesObject = [PSCustomObject] @{
    entities = $CustomEntities 
  }
  
  Set-Content -Path $EntityJsonFile -Value ($CustomEntitiesObject | ConvertTo-Json) -Encoding UTF8 -ErrorAction Stop | Out-Null 
  Write-Host "$($CustomEntities.Count) entiteiten weggeschreven naar '$($EntityJsonFile)'."
}