Riorganizzato conf.ps1

This commit is contained in:
Gaetano Savo 2025-06-26 11:44:22 +02:00
parent 3692d71086
commit 7faa1e8c82
10 changed files with 129 additions and 49 deletions

View File

@ -0,0 +1,52 @@
# check-prerequisites.ps1
# Script per verificare i prerequisiti degli script PowerShell
function Write-Status {
param(
[string]$check,
[bool]$passed,
[string]$details
)
$status = if ($passed) { "[OK]" } else { "[ERRORE]" }
Write-Host "`n$check : $status"
if ($details) {
Write-Host $details
}
}
# Verifica versione PowerShell
$psVersion = $PSVersionTable.PSVersion
$psVersionOk = $psVersion.Major -ge 5 -and $psVersion.Minor -ge 1
Write-Status -check "Versione PowerShell" -passed $psVersionOk -details "Versione installata: $($psVersion.ToString())`nVersione minima richiesta: 5.1"
# Verifica System.Data assembly
try {
Add-Type -AssemblyName System.Data
$adoNetOk = $true
Write-Status -check "ADO.NET System.Data" -passed $true -details "Assembly System.Data caricato correttamente"
} catch {
$adoNetOk = $false
Write-Status -check "ADO.NET System.Data" -passed $false -details "Errore nel caricamento di System.Data"
}
# Verifica SqlCommand
try {
$connection = New-Object System.Data.SqlClient.SqlConnection
$command = New-Object System.Data.SqlClient.SqlCommand("", $connection)
$sqlCommandOk = $true
Write-Status -check "SQL Command" -passed $true -details "Creazione SqlCommand riuscita"
} catch {
$sqlCommandOk = $false
Write-Status -check "SQL Command" -passed $false -details "Errore nella creazione di SqlCommand: $($_.Exception.Message)"
}
# Riepilogo finale
$allOk = $psVersionOk -and $adoNetOk -and $sqlCommandOk
Write-Host "`n----------------------------------------"
$exitMessage = if ($allOk) { "Tutti i prerequisiti sono soddisfatti" } else { "ATTENZIONE: Alcuni prerequisiti non sono soddisfatti" }
$exitColor = if ($allOk) { "Green" } else { "Red" }
Write-Host $exitMessage -ForegroundColor $exitColor
Write-Host "----------------------------------------"
# Restituisci il risultato complessivo
exit ([int](-not $allOk))

View File

@ -1,48 +1,76 @@
# Database C6StampeCentralizzate collaudo
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')]
$DBStampeColl = @{
sqlServerName = "bfdskrepsei01c.sysfideuram.sysbancafideuram.it"
databaseName = "C6StampeCentralizzate"
userName = "F701264"
securePassword = "contrsei"
}
# Database C6StampeCentralizzate produzione
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')]
$DBStampeProd = @{
sqlServerName = "bfdskreport01p.fideuram.bancafideuram.it"
databaseName = "C6StampeCentralizzate"
userName = "F701264"
securePassword = "contrsei"
}
# Database SEIReport Lettera benvenuto Produzione
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')]
$DBBenvProd = @{
sqlServerName = "bfdskreport02p.fideuram.bancafideuram.it"
databaseName = "SEIReport"
userName = "SEIReport"
securePassword = "SEIReport"
}
# Database C6StampeCentralizzate locale
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')]
$DBStampeLoc = @{
sqlServerName = "DATABASE_PDC_LOCALE"
databaseName = "C6StampeCentralizzate"
userName = "F701264"
securePassword = "contrsei"
}
# Database C6StampeCentralizzate testbes
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignments', '')]
$DBStampeTestbes = @{
sqlServerName = "testbes.armundia.com"
databaseName = "C6StampeCentralizzate"
userName = "sa"
securePassword = "_p1sap1a"
}
# Configurazione database
$config = @{
# Credenziali database
# DbUser = "sa"
# DbPassword = "_p1sap1a"
# DbUser = "SEIReport"
# DbPassword = "SEIReport"
DbUser = "F701264"
DbPassword = "contrsei"
# DbHostOutput
DbHostOutput = "DATABASE_PDC_LOCALE"
# DbHostOutput = "testbes.armundia.com"
# DbHostInput
# DbHostInput = "bfdskrepsei01c.sysfideuram.sysbancafideuram.it"
# DbHostInput = "testbes.armundia.com"
# DbHostInput = "DATABASE_PDC_LOCALE"
DbHostInput = "bfdskreport01p.fideuram.bancafideuram.it"
# DbHostInput = "bfdskreport02p.fideuram.bancafideuram.it"
# DbName = "master"
ServerName = "CONSUNI"
DbName = "C6StampeCentralizzate"
# DbName = "SEIReport"
# Directory di log
WorkDir = Split-Path -Path $PSScriptRoot -Parent
LogDir = Join-Path (Split-Path -Path $PSScriptRoot -Parent) "logs"
SqlDir = Join-Path (Split-Path -Path $PSScriptRoot -Parent) "sql"
}
$DBI = $DBBenvProd
$DBO = $DBStampeLoc
# Esporta le variabili come variabili d'ambiente
$env:dbUser = $config.DbUser
$env:dbPassword = $config.DbPassword
$env:dbHostInput = $config.DbHostInput
$env:dbHostOutput = $config.DbHostOutput
$env:dbName = $config.DbName
$env:dbHostInput = $DBI.sqlServerName
$env:dbNameInput = $DBI.databaseName
$env:dbUserInput = $DBI.userName
$env:dbPasswordInput = $DBI.securePassword
$env:dbHostOutput = $DBO.sqlServerName
$env:dbNameOutput = $DBO.databaseName
$env:dbUserOutput = $DBO.userName
$env:dbPasswordOutput = $DBO.securePassword
$env:logDir = $config.LogDir
$env:workDir = $config.WorkDir
$env:sqlDir = $config.SqlDir
$env:ServerName = $config.ServerName
# Funzione per ottenere la connection string
function Get-DatabaseConnectionString {
return "Server=$($config.DbHostOutput);Database=$($config.DbName);User Id=$($config.DbUser);Password=$($config.DbPassword);"
return "Server=$($DBO.sqlServerName);Database=$($DBO.databaseName);User Id=$($DBO.userName);Password=$($DBO.securePassword);"
}
# Crea directory di log se non esiste

View File

@ -86,7 +86,7 @@ foreach ($fileSql in $filesToExecute) {
while (-not $success -and $retryCount -lt $maxRetries) {
try {
# Execute SQL and capture all output
$output = & sqlcmd -S $env:dbHostOutput -U $env:dbUser -P $env:dbPassword -d $env:dbName -i $fileSql -b 2>&1
$output = & sqlcmd -S $env:dbHostOutput -U $env:dbUserOutput -P $env:dbPasswordOutput -d $env:dbNameOutput -i $fileSql -b 2>&1
$esitoComando = $LASTEXITCODE
# Save output to log file and process it

View File

@ -151,16 +151,16 @@ try {
THEN t.name + '(' + CAST(c.[precision] AS VARCHAR) + ',' + CAST(c.[scale] AS VARCHAR) + ')'
ELSE t.name
END as FullDataType
FROM [$env:serverName].[$dbName].sys.columns c
INNER JOIN [$env:serverName].[$dbName].sys.types t ON c.user_type_id = t.user_type_id
INNER JOIN [$env:serverName].[$dbName].sys.tables tbl ON c.object_id = tbl.object_id
FROM [$env:dbHostInput].[$dbName].sys.columns c
INNER JOIN [$env:dbHostInput].[$dbName].sys.types t ON c.user_type_id = t.user_type_id
INNER JOIN [$env:dbHostInput].[$dbName].sys.tables tbl ON c.object_id = tbl.object_id
WHERE SCHEMA_NAME(tbl.schema_id) = '$schemaName'
AND tbl.name = '$tableName'
ORDER BY c.column_id
"@
# Ottieni la struttura delle colonne
$columns = Invoke-Sqlcmd -ServerInstance $env:dbHostInput -Database $env:dbName -Query $columnQuery -Username $env:dbUser -Password $env:dbPassword -TrustServerCertificate
$columns = Invoke-Sqlcmd -ServerInstance $env:dbHostInput -Database $env:dbNameInput -Query $columnQuery -Username $env:dbUserInput -Password $env:dbPasswordInput -TrustServerCertificate
# Costruisci la CREATE TABLE
$createTableScript = "CREATE TABLE [$dbName].[$schemaName].[$tableName] (`n"
@ -184,7 +184,7 @@ GO
-- Popolamento tabella
-- INSERT INTO [$dbName].[$schemaName].[$tableName]
-- SELECT * FROM [$env:serverName].[$dbName].[$schemaName].[$tableName];
-- SELECT * FROM [$env:dbHostInput].[$dbName].[$schemaName].[$tableName];
-- GO
"@

View File

@ -34,11 +34,11 @@ try {
"@
# Esegui la query e salva i risultati
$connectionString = "Server=$($config.DbHostInput);Database=$($config.DbName);User Id=$($config.DbUser);Password=$($config.DbPassword);TrustServerCertificate=True"
$connectionString = "Server=$($env:dbHostInput);Database=$($env:dbNameInput);User Id=$($env:dbUserInput);Password=$($env:dbPasswordInput);TrustServerCertificate=True"
$results = Invoke-Sqlcmd -ConnectionString $connectionString -Query $query
# Prepara l'output
$output = "Elenco oggetti del database $($config.DbName) su $($config.DbHostInput) il $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')`r`n"
$output = "Elenco oggetti del database $($env:DbName) su $($env:DbHostInput) il $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')`r`n"
$output += "Tipo;Schema;Nome`r`n"
# Formatta e aggiungi ogni oggetto all'output

View File

@ -34,13 +34,13 @@ try {
Import-Module SqlServer
}
Write-Host "Connessione a $env:dbHostInput, database $env:dbName..."
Write-Host "Connessione a $env:dbHostInput, database $env:dbNameInput..."
# Esegui la query e salva i risultati
$result = Invoke-Sqlcmd -ServerInstance $env:dbHostInput `
-Database $env:dbName `
-Username $env:dbUser `
-Password $env:dbPassword `
-Database $env:dbNameInput `
-Username $env:dbUserInput `
-Password $env:dbPasswordInput `
-TrustServerCertificate `
-Query $Query

View File

@ -38,7 +38,7 @@ try {
"@
# Esegui la query
$sqlObjects = Invoke-Sqlcmd -ServerInstance $env:dbHostInput -Database $env:dbName -Query $query -Username $env:dbUser -Password $env:dbPassword -MaxCharLength 1000000 -TrustServerCertificate
$sqlObjects = Invoke-Sqlcmd -ServerInstance $env:dbHostInput -Database $env:dbNameInput -Query $query -Username $env:dbUserInput -Password $env:dbPasswordInput -MaxCharLength 1000000 -TrustServerCertificate
# Funzione per pulire il nome del file
function Clean-FileName {

View File

@ -95,10 +95,10 @@ try {
$sqlParams = @{
ServerInstance = $env:dbHostInput
Database = $env:dbName
Database = $env:dbNameInput
Query = $query
Username = $env:dbUser
Password = $env:dbPassword
Username = $env:dbUserInput
Password = $env:dbPasswordInput
MaxCharLength = 1000000
TrustServerCertificate = $true
ConnectionTimeout = 30

View File

@ -45,7 +45,7 @@ try {
exit 1
}
Write-Host "Connessione a $env:dbHostOutput, database $env:dbName..."
Write-Host "Connessione a $env:dbHostOutput, database $env:dbNameOutput..."
# Get column names from CSV
$columns = $data[0].PSObject.Properties.Name
@ -79,7 +79,7 @@ try {
$query = "INSERT INTO $TableName ($columnList) VALUES ($valuesList)"
# Execute insert for each row
$connectionString = "Server=$env:dbHostOutput;Database=$env:dbName;User Id=$env:dbUser;Password=$env:dbPassword;Encrypt=False"
$connectionString = "Server=$env:dbHostOutput;Database=$env:dbNameOutput;User Id=$env:dbUserOutput;Password=$env:dbPasswordOutput;Encrypt=False"
Invoke-Sqlcmd -ConnectionString $connectionString `
-Query $query

View File

@ -7,7 +7,7 @@ $logFile = Join-Path $env:logDir "${scriptName}.log"
"Start pulizia stored procedure $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" | Out-File -FilePath $logFile
# Connessione al database
$connectionString = "Server=$env:dbHostOutput;Database=$env:dbName;User Id=$env:dbUser;Password=$env:dbPassword;"
$connectionString = "Server=$env:dbHostOutput;Database=$env:dbNameOutput;User Id=$env:dbUserOutput;Password=$env:dbPasswordOutput;"
$connection = New-Object System.Data.SqlClient.SqlConnection($connectionString)
try {