Hier ist noch ein Beispiel wenn man mehrere DSAB's abgleichen möchte. Es wird nur der token, die Id des DSAB's und die Excel-Datei benötig.
Die smaps die ein Update benötigen werden aus den DSAB-Infos geholt.
Falls man den DSAB in mehreren smaps benutzt bekommen diese dann auch ein Update, das wurde in dem ursprünglichen Script nicht berücksichtigt.
Fehlerbehandlung kann sich ja jeder nach Gusto selbst reinbauen, wenn er/sie es brauchen.
# Created By: Philip Alvermann
# Version 1.0
#
# Filename: dsabSync-demo.ps1
#
# Der hier enthaltene Code dient als Beispiel.
# Ich übernehme keine Garantie, Gewährleistung oder Support für den Code oder Bestandteile.
# Verwendung des Codes erfolgt auf eigene Gefahr.
#
# Benötigt wird für die Ausführung das Modul Import-Excel
# die Importfiles müssen in dem Ordner import des Verzeichnisses liegen in dem das Script ausgeführt wird
$config = @(
[PSCustomObject]@{
dsabId = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
importFile = "$PSScriptRoot\import\test-dsab_neu.xlsx";
token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
}
#,[PSCustomObject]@{
#dsabId = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
#importFile = "$PSScriptRoot\import\test-dsab.xlsx";
#token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
#}
)
function getRequest ($uriString) {
try {
$resp = Invoke-WebRequest $uriString
return $resp;
}
catch {
return "";
}
}
function UpdateSmap($dsabConfig, $smapId) {
$httpString = "https://platform.smapone.com/Backend/intern/Smaps/$($smapID)/Versions/Current/DataSources/Update?updateEditVersion=true&accesstoken=$($dsabConfig.token)"
$smap = Invoke-RestMethod -Uri $httpString -Method Put
Write-Output "new sampVersion : $($smap.version) for smap $($smapID)"
}
function UpdateDsab($dsabConfig) {
$httpString = "https://platform.smapone.com/Backend/intern/DataSource/$($dsabConfig.dsabId)?accesstoken=$($dsabConfig.token)"
$dsab = getRequest -uriString $httpString;
$jsonDsab = $dsab.Content | ConvertFrom-Json
$excelData = Import-Excel $($dsabConfig.importFile)
$excelData | Format-Table
$newData = @($excelData) | ConvertTo-Json
$httpString = "https://platform.smapone.com/Backend/intern/DataSource/$($dsabConfig.dsabId)/Versions/$($jsonDsab.latestVersion)/Definition/Values?accesstoken=$($dsabConfig.token)"
$newDsab = Invoke-RestMethod -Uri $httpString -Method Put -Body $newData -ContentType "application/json; charset=utf-8"
Write-Output "dsab latestVersion: $($jsonDsab.latestVersion) dsab newVersion $($newDsab.version)"
foreach ($smaps in $jsonDsab.usedInSmaps) {
UpdateSmap -dsabConfig $dsabConfig -smapId $($smaps.smapID)
}
}
function StartSync($Config) {
foreach ($element in $Config) {
UpdateDsab($element)
}
}
StartSync($config)