#######PREDISPOSIZIONE FILE, FOLDER E FUNZIONE DI LOG#######

#definisco cartella file di log
$logFolder = "c:\EgwLogs\"
#definisco nome file di log
$logFile = "ExampleLog1.log"

#verifico se esiste la cartella di log
if (Test-Path $logFolder) {
}
#se non esiste la cartella di log la creo
else {
    New-Item $logFolder -ItemType Directory
}

#rilevo time per log inizio analisi
$dateTime = (Get-Date).toString("yyyy/MM/dd HH:mm:ss")

#funzione per scrittura output & log
Function WriteLogOutput {
    Param ($logFile, [string]$logString)
    #compongo path per file di log
    $logPath = Join-Path $logFolder $logFile
    #aggiungo il contenuto della stringa da loggare
    Add-content $logPath -value "$logString"
    #scrivo a terminale il contenuto della stringa da loggare 
    Write-Output($logString) 
}

#compongo URL da chiamare con successivo try/catch
#########   $callUrl = "https://URL/DA/CHIAMARE" + $varieEventuiali + "/EVENTUALE URL/" + $varieEventuali
    #eseguo call url con try/catch
    try {
        #########   $Response = Invoke-WebRequest -URI $callUrl -Headers $EventualeHeader -ContentType "application/json" -UseBasicParsing
        #converto da Json la risposta in caso di esito positivo del try/catch
        $parsedResponse = $Response.Content | ConvertFrom-Json
        #scrivo su log data/ora e risposta convertita dal Json
        WriteLogOutput $logFile "--------------------"
        WriteLogOutput $logFile "Date/Time: $dateTime"
        WriteLogOutput $logFile "Response:"
        WriteLogOutput $logFile $($parsedResponse.message)
    }
    #scrivo se trovo un errore durante il try/catch
    catch {
        #converto da Json l'eventuale errore in caso di esito negativo del try/catch
        $parsedError = $_ | Out-String | ConvertFrom-Json
        #scrivo su log data/ora e errore convertito dal Json
        WriteLogOutput $logFile "--------------------"
        WriteLogOutput $logFile "Date/Time: $dateTime"
        WriteLogOutput $logFile "Error:"
        WriteLogOutput $logFile $($parsedError.message)
    }