108 lines
3.7 KiB
PowerShell
108 lines
3.7 KiB
PowerShell
<#
|
|
|
|
ESEGUE UNA CHIAMATA A UNA uri e fa il log dei dati restituiti ...
|
|
|
|
Se tutto Ok scrive un file di check, questo file viene usato per verificare che non sia già stato eseguito in modo corretto nelle
|
|
precedenti n. ore, così posso schedularlo più volte
|
|
|
|
Esegue prima una chiamata ping al server, poi una chiamata a una URL di test e infine la chiamata effettiva
|
|
|
|
Sarebbe da sistemare e rendere parametrica / procedura ...
|
|
|
|
|
|
# *** NOTE TECNICHE PER SCHEDULAZIONE
|
|
|
|
# Per far scrivere il ritorno dalla chiamata di IIS nel file di log ho creato la schedulazione entrando con
|
|
# l'utente stesso (Steamware) che esegue lo script e ho fatto import della schedulazione ( in ambiente ISE il log lo scrive )
|
|
# Ho messo anche permessi all'utente "Logon as batch job" ( vedi sotto )
|
|
|
|
# Utente messo in PowerUser e permessi scrittura cartella Steamware
|
|
|
|
# Logon as batch job policy is set for the user. This policy is accessible by opening the Control Panel, Administrative Tools,
|
|
# and then Local Security Policy -> Local Policy -> User Rights Assignment -> then Logon as batch job.
|
|
|
|
# Task Security Context
|
|
# https://forsenergy.com/en-us/taskscheduler/html/a922c2b5-6a43-4503-ab7f-4f3d77b3cc8a.htm
|
|
|
|
# Mod. 2022-05-16 Minor Fix
|
|
# Mod. 2022-05-17 Ping e Varie
|
|
# Mod. 2022-05-18 add Check ObjTest
|
|
|
|
#>
|
|
|
|
Remove-Variable * -ErrorAction SilentlyContinue # pulisco variabili x ISE
|
|
|
|
# avvio stopwatch
|
|
$stopwatch = [system.diagnostics.stopwatch]::StartNew()
|
|
|
|
$FolderName="c:\Steamware\Logs"
|
|
$Logfile = Join-Path $FolderName "\GPW_checkTimb.log"
|
|
|
|
$Server = "office.egalware.com"
|
|
$testUri = "https://office.egalware.com/GPW/Api/api/VC19"
|
|
$callUri = "https://office.egalware.com/GPW/Api/api/TimbraCheck/DailyCheck"
|
|
|
|
# file scritto solo se tutto OK - check se scritto in precedenza non eseguo
|
|
$ObjTest = Join-Path $FolderName "\GPW_checkTimbOk.log"
|
|
$CheckHour = -6
|
|
|
|
Function LogWrite
|
|
{ Param ([string]$logstring)
|
|
|
|
$Stamp = (Get-Date).toString("yyyy/MM/dd HH:mm:ss.fff")
|
|
Add-content $Logfile -value "$Stamp $logstring"
|
|
}
|
|
|
|
# test e creazione DIR di Log
|
|
if (Test-Path $FolderName)
|
|
{
|
|
# Write-Host "Folder Exists"
|
|
}
|
|
else
|
|
{ #PowerShell Create directory if not exists
|
|
New-Item $FolderName -ItemType Directory
|
|
Write-Host "Folder Created successfully"
|
|
}
|
|
|
|
# Test, se già eseguito in modo corretto in precedenza esco... ( file $ObjTest scritto nelle ore precedenti )
|
|
$time = (Get-Date).AddHours( $CheckHour )
|
|
if ( Get-ChildItem -Path $ObjTest -Recurse -Force | Where-Object {$_.LastWriteTime -gt $time } ) {
|
|
LogWrite("CheckProj process already done...")
|
|
Break
|
|
}
|
|
else { LogWrite("Start CheckProj process...") }
|
|
|
|
# # TEST PING CONNECTION
|
|
# LogWrite("Start Ping --> $Server ...")
|
|
# Test-Connection -ComputerName $Server -ErrorAction SilentlyContinue | Format-Table -AutoSize | Out-File -encoding utf8 $Logfile -Append # se non lo trova prosegue cmq
|
|
|
|
try { # prima faccio una chiamata di test per "svegliare" IIS...
|
|
LogWrite("Test Call")
|
|
Invoke-WebRequest -URI $testUri -UseBasicParsing
|
|
}
|
|
catch {
|
|
LogWrite("TEST Call Error...")
|
|
LogWrite($Error[0])
|
|
}
|
|
|
|
try { # vera chiamata
|
|
LogWrite("Test Call effettuata, effettuo chiamata target")
|
|
$Response = Invoke-WebRequest -URI $callUri -UseBasicParsing
|
|
LogWrite($Response)
|
|
(Get-Date).toString("yyyy/MM/dd HH:mm:ss.fff") | Out-File $ObjTest
|
|
#[string]$Return = $Response.Content # messo per prova visto che non creava nulla in LOG - potrebbe non servire
|
|
}
|
|
catch {
|
|
$Response = 'CALL ERROR ...'
|
|
LogWrite($Error[0])
|
|
}
|
|
finally
|
|
{
|
|
LogWrite("*** END Call ***")
|
|
}
|
|
|
|
# fermo stopwatch e conteggio...
|
|
$stopwatch.Stop()
|
|
$durata = $stopwatch.Elapsed.TotalSeconds
|
|
& "C:\Program Files\Zabbix Agent\zabbix_sender.exe" -z zabproxy.ufficio -s "W2022-IIS04" -k Gpw.Timb -o $durata
|
|
LogWrite("Durata esecuzione: $durata") |