#!/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."