94 lines
3.1 KiB
Ruby
94 lines
3.1 KiB
Ruby
#!/usr/bin/env ruby
|
|
# frozen_string_literal: true
|
|
|
|
# ==========================================================
|
|
# Configurar zona horaria Argentina en dasu-sql4
|
|
# ==========================================================
|
|
|
|
require_relative 'drones/lib/dasu_executor'
|
|
|
|
puts "=== CONFIGURAR ZONA HORARIA - ARGENTINA (UTC-3) ==="
|
|
puts ""
|
|
|
|
ps_script = <<~PSCMD.strip
|
|
$ErrorActionPreference = "Stop"
|
|
$JSON_PATH = "C:\\temp\\timezone_config_output.json"
|
|
|
|
$null = New-Item -ItemType Directory -Force -Path "C:\\temp"
|
|
|
|
Write-Host "[1/4] Zona horaria ACTUAL:"
|
|
$tz = Get-TimeZone
|
|
Write-Host " ID: $($tz.Id)"
|
|
Write-Host " DisplayName: $($tz.DisplayName)"
|
|
Write-Host " BaseUtcOffset: $($tz.BaseUtcOffset)"
|
|
|
|
Write-Host "`n[2/4] Configurando zona horaria ARGENTINA (UTC-3)..."
|
|
|
|
# Argentina Standard Time es el ID correcto para UTC-3
|
|
try {
|
|
Set-TimeZone -Id "Argentina Standard Time"
|
|
Write-Host " ✅ Zona horaria configurada correctamente"
|
|
} catch {
|
|
Write-Host " ERROR: $_"
|
|
exit 1
|
|
}
|
|
|
|
Write-Host "`n[3/4] Verificando nueva configuración:"
|
|
$tz = Get-TimeZone
|
|
Write-Host " ID: $($tz.Id)"
|
|
Write-Host " DisplayName: $($tz.DisplayName)"
|
|
Write-Host " BaseUtcOffset: $($tz.BaseUtcOffset)"
|
|
|
|
Write-Host "`n[4/4] Fecha/hora actual:"
|
|
Write-Host " Get-Date: $(Get-Date)"
|
|
Write-Host " Get-Date -Format 'o': $(Get-Date -Format 'o')"
|
|
Write-Host " UTC: $(Get-Date -AsUtc)"
|
|
|
|
# Verificar si SQL Server necesita reinicio
|
|
Write-Host "`n[5/5] Verificando SQL Server:"
|
|
$connString = "Server=localhost;Database=master;Integrated Security=true;TrustServerCertificate=yes;"
|
|
$conn = New-Object System.Data.SqlClient.SqlConnection($connString)
|
|
$conn.Open()
|
|
|
|
$cmd = New-Object System.Data.SqlClient.SqlCommand("SELECT GETDATE() as fecha_sql, SYSUTCDATETIME() as utc_sql", $conn)
|
|
$adapter = New-Object System.Data.SqlClient.SqlDataAdapter($cmd)
|
|
$ds = New-Object System.Data.DataSet
|
|
$adapter.Fill($ds)
|
|
|
|
if ($ds.Tables[0].Rows.Count -gt 0) {
|
|
$row = $ds.Tables[0].Rows[0]
|
|
Write-Host " GETDATE(): $($row.fecha_sql)"
|
|
Write-Host " SYSUTCDATETIME(): $($row.utc_sql)"
|
|
Write-Host " Diferencia con UTC: $([DateTime]::Now - [DateTime]::UtcNow)"
|
|
}
|
|
|
|
$conn.Close()
|
|
|
|
$resultado = @{
|
|
paso = "timezone_configurado"
|
|
timezone_id = $tz.Id
|
|
timezone_display = $tz.DisplayName
|
|
utc_offset = $tz.BaseUtcOffset.ToString()
|
|
timestamp = (Get-Date -Format "o")
|
|
}
|
|
|
|
$resultado | ConvertTo-Json | Out-File -FilePath $JSON_PATH -Encoding utf8
|
|
PSCMD
|
|
|
|
puts "\n[1/2] Configurando zona horaria..."
|
|
DasuExecutor.execute_ps_on_dasu(ps_script, output_path: 'C:\temp\timezone_config_output.json')
|
|
|
|
puts "\n[2/2] Leyendo resultado..."
|
|
begin
|
|
resultado = DasuExecutor.read_json_from_dasu('C:\temp\timezone_config_output.json')
|
|
puts "\n=== RESULTADO ==="
|
|
puts " Timezone ID: #{resultado['timezone_id']}"
|
|
puts " Display: #{resultado['timezone_display']}"
|
|
puts " UTC Offset: #{resultado['utc_offset']}"
|
|
rescue => e
|
|
puts "[!] Error leyendo resultado: #{e.message}"
|
|
end
|
|
|
|
puts "\n✅ Configuración completada"
|
|
puts "\n⚠️ NOTA: SQL Server puede necesitar reinicio para aplicar completamente la nueva zona horaria."
|