Compare commits

...

3 Commits

Author SHA1 Message Date
06be3a10da Fix PS1 Credenciales de Acceso 2025-10-21 13:53:03 -03:00
840df270cf Fix RESEED InventarioDB.sql 2025-10-13 11:22:53 -03:00
7c2c328032 Add InventarioDB.sql 2025-10-13 11:21:32 -03:00
2 changed files with 446 additions and 23 deletions

368
InventarioDB.sql Normal file
View File

@@ -0,0 +1,368 @@
-- ----------------------------
-- Table structure for discos
-- ----------------------------
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[discos]') AND type IN ('U'))
DROP TABLE [dbo].[discos]
GO
CREATE TABLE [dbo].[discos] (
[id] int IDENTITY(1,1) NOT NULL,
[mediatype] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[size] int NOT NULL,
[created_at] datetime2(6) DEFAULT getdate() NOT NULL,
[updated_at] datetime2(6) DEFAULT getdate() NOT NULL
)
GO
ALTER TABLE [dbo].[discos] SET (LOCK_ESCALATION = TABLE)
GO
-- ----------------------------
-- Table structure for equipos
-- ----------------------------
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[equipos]') AND type IN ('U'))
DROP TABLE [dbo].[equipos]
GO
CREATE TABLE [dbo].[equipos] (
[id] int IDENTITY(1,1) NOT NULL,
[hostname] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[ip] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[mac] nvarchar(17) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[motherboard] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[cpu] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[ram_installed] int NOT NULL,
[ram_slots] int NULL,
[os] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[architecture] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[created_at] datetime2(6) DEFAULT getdate() NOT NULL,
[updated_at] datetime2(6) DEFAULT getdate() NOT NULL,
[sector_id] int NULL,
[origen] nvarchar(50) COLLATE Modern_Spanish_CI_AS DEFAULT 'manual' NOT NULL
)
GO
ALTER TABLE [dbo].[equipos] SET (LOCK_ESCALATION = TABLE)
GO
-- ----------------------------
-- Table structure for equipos_discos
-- ----------------------------
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[equipos_discos]') AND type IN ('U'))
DROP TABLE [dbo].[equipos_discos]
GO
CREATE TABLE [dbo].[equipos_discos] (
[id] int IDENTITY(1,1) NOT NULL,
[equipo_id] int NULL,
[disco_id] int NULL,
[origen] nvarchar(50) COLLATE Modern_Spanish_CI_AS DEFAULT 'manual' NOT NULL
)
GO
ALTER TABLE [dbo].[equipos_discos] SET (LOCK_ESCALATION = TABLE)
GO
-- ----------------------------
-- Table structure for equipos_memorias_ram
-- ----------------------------
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[equipos_memorias_ram]') AND type IN ('U'))
DROP TABLE [dbo].[equipos_memorias_ram]
GO
CREATE TABLE [dbo].[equipos_memorias_ram] (
[id] int IDENTITY(1,1) NOT NULL,
[slot] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[equipo_id] int NULL,
[memoria_ram_id] int NULL,
[origen] nvarchar(50) COLLATE Modern_Spanish_CI_AS DEFAULT 'manual' NOT NULL
)
GO
ALTER TABLE [dbo].[equipos_memorias_ram] SET (LOCK_ESCALATION = TABLE)
GO
-- ----------------------------
-- Table structure for historial_equipos
-- ----------------------------
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[historial_equipos]') AND type IN ('U'))
DROP TABLE [dbo].[historial_equipos]
GO
CREATE TABLE [dbo].[historial_equipos] (
[id] int IDENTITY(1,1) NOT NULL,
[equipo_id] int NULL,
[campo_modificado] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[valor_anterior] nvarchar(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[valor_nuevo] nvarchar(max) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[fecha_cambio] datetime2(6) DEFAULT getdate() NOT NULL
)
GO
ALTER TABLE [dbo].[historial_equipos] SET (LOCK_ESCALATION = TABLE)
GO
-- ----------------------------
-- Table structure for memorias_ram
-- ----------------------------
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[memorias_ram]') AND type IN ('U'))
DROP TABLE [dbo].[memorias_ram]
GO
CREATE TABLE [dbo].[memorias_ram] (
[id] int IDENTITY(1,1) NOT NULL,
[part_number] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[fabricante] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[tamano] int NOT NULL,
[velocidad] int NULL,
[created_at] datetime2(6) DEFAULT getdate() NOT NULL,
[updated_at] datetime2(6) DEFAULT getdate() NOT NULL
)
GO
ALTER TABLE [dbo].[memorias_ram] SET (LOCK_ESCALATION = TABLE)
GO
-- ----------------------------
-- Table structure for sectores
-- ----------------------------
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[sectores]') AND type IN ('U'))
DROP TABLE [dbo].[sectores]
GO
CREATE TABLE [dbo].[sectores] (
[id] int IDENTITY(1,1) NOT NULL,
[nombre] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[created_at] datetime2(6) DEFAULT getdate() NOT NULL,
[updated_at] datetime2(6) DEFAULT getdate() NOT NULL
)
GO
ALTER TABLE [dbo].[sectores] SET (LOCK_ESCALATION = TABLE)
GO
-- ----------------------------
-- Table structure for usuarios
-- ----------------------------
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[usuarios]') AND type IN ('U'))
DROP TABLE [dbo].[usuarios]
GO
CREATE TABLE [dbo].[usuarios] (
[id] int IDENTITY(1,1) NOT NULL,
[username] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[password] nvarchar(255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[created_at] datetime2(6) DEFAULT getdate() NOT NULL,
[updated_at] datetime2(6) DEFAULT getdate() NOT NULL
)
GO
ALTER TABLE [dbo].[usuarios] SET (LOCK_ESCALATION = TABLE)
GO
-- ----------------------------
-- Table structure for usuarios_equipos
-- ----------------------------
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[usuarios_equipos]') AND type IN ('U'))
DROP TABLE [dbo].[usuarios_equipos]
GO
CREATE TABLE [dbo].[usuarios_equipos] (
[usuario_id] int NOT NULL,
[equipo_id] int NOT NULL,
[origen] nvarchar(50) COLLATE Modern_Spanish_CI_AS DEFAULT 'manual' NOT NULL
)
GO
ALTER TABLE [dbo].[usuarios_equipos] SET (LOCK_ESCALATION = TABLE)
GO
-- ----------------------------
-- Auto increment value for discos
-- ----------------------------
DBCC CHECKIDENT ('[dbo].[discos]', RESEED, 1)
GO
-- ----------------------------
-- Primary Key structure for table discos
-- ----------------------------
ALTER TABLE [dbo].[discos] ADD CONSTRAINT [PK_discos] PRIMARY KEY CLUSTERED ([id])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
-- ----------------------------
-- Auto increment value for equipos
-- ----------------------------
DBCC CHECKIDENT ('[dbo].[equipos]', RESEED, 1)
GO
-- ----------------------------
-- Primary Key structure for table equipos
-- ----------------------------
ALTER TABLE [dbo].[equipos] ADD CONSTRAINT [PK_equipos] PRIMARY KEY CLUSTERED ([id])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
-- ----------------------------
-- Auto increment value for equipos_discos
-- ----------------------------
DBCC CHECKIDENT ('[dbo].[equipos_discos]', RESEED, 1)
GO
-- ----------------------------
-- Primary Key structure for table equipos_discos
-- ----------------------------
ALTER TABLE [dbo].[equipos_discos] ADD CONSTRAINT [PK_equipos_discos] PRIMARY KEY CLUSTERED ([id])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
-- ----------------------------
-- Auto increment value for equipos_memorias_ram
-- ----------------------------
DBCC CHECKIDENT ('[dbo].[equipos_memorias_ram]', RESEED, 1)
GO
-- ----------------------------
-- Primary Key structure for table equipos_memorias_ram
-- ----------------------------
ALTER TABLE [dbo].[equipos_memorias_ram] ADD CONSTRAINT [PK_equipos_memorias_ram] PRIMARY KEY CLUSTERED ([id])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
-- ----------------------------
-- Auto increment value for historial_equipos
-- ----------------------------
DBCC CHECKIDENT ('[dbo].[historial_equipos]', RESEED, 1)
GO
-- ----------------------------
-- Primary Key structure for table historial_equipos
-- ----------------------------
ALTER TABLE [dbo].[historial_equipos] ADD CONSTRAINT [PK_historial_equipos] PRIMARY KEY CLUSTERED ([id])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
-- ----------------------------
-- Auto increment value for memorias_ram
-- ----------------------------
DBCC CHECKIDENT ('[dbo].[memorias_ram]', RESEED, 1)
GO
-- ----------------------------
-- Primary Key structure for table memorias_ram
-- ----------------------------
ALTER TABLE [dbo].[memorias_ram] ADD CONSTRAINT [PK_memorias_ram] PRIMARY KEY CLUSTERED ([id])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
-- ----------------------------
-- Auto increment value for sectores
-- ----------------------------
DBCC CHECKIDENT ('[dbo].[sectores]', RESEED, 1)
GO
-- ----------------------------
-- Primary Key structure for table sectores
-- ----------------------------
ALTER TABLE [dbo].[sectores] ADD CONSTRAINT [PK_sectores] PRIMARY KEY CLUSTERED ([id])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
-- ----------------------------
-- Auto increment value for usuarios
-- ----------------------------
DBCC CHECKIDENT ('[dbo].[usuarios]', RESEED, 1)
GO
-- ----------------------------
-- Primary Key structure for table usuarios
-- ----------------------------
ALTER TABLE [dbo].[usuarios] ADD CONSTRAINT [PK_usuarios] PRIMARY KEY CLUSTERED ([id])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
-- ----------------------------
-- Primary Key structure for table usuarios_equipos
-- ----------------------------
ALTER TABLE [dbo].[usuarios_equipos] ADD CONSTRAINT [PK_usuarios_equipos] PRIMARY KEY CLUSTERED ([usuario_id], [equipo_id])
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
-- ----------------------------
-- Foreign Keys structure for table equipos
-- ----------------------------
ALTER TABLE [dbo].[equipos] ADD CONSTRAINT [FK_equipos_sectores] FOREIGN KEY ([sector_id]) REFERENCES [dbo].[sectores] ([id]) ON DELETE SET NULL ON UPDATE NO ACTION
GO
-- ----------------------------
-- Foreign Keys structure for table equipos_discos
-- ----------------------------
ALTER TABLE [dbo].[equipos_discos] ADD CONSTRAINT [FK_equipos_discos_equipos] FOREIGN KEY ([equipo_id]) REFERENCES [dbo].[equipos] ([id]) ON DELETE CASCADE ON UPDATE NO ACTION
GO
ALTER TABLE [dbo].[equipos_discos] ADD CONSTRAINT [FK_equipos_discos_discos] FOREIGN KEY ([disco_id]) REFERENCES [dbo].[discos] ([id]) ON DELETE CASCADE ON UPDATE NO ACTION
GO
-- ----------------------------
-- Foreign Keys structure for table equipos_memorias_ram
-- ----------------------------
ALTER TABLE [dbo].[equipos_memorias_ram] ADD CONSTRAINT [FK_equipos_memorias_ram_equipos] FOREIGN KEY ([equipo_id]) REFERENCES [dbo].[equipos] ([id]) ON DELETE CASCADE ON UPDATE NO ACTION
GO
ALTER TABLE [dbo].[equipos_memorias_ram] ADD CONSTRAINT [FK_equipos_memorias_ram_memorias_ram] FOREIGN KEY ([memoria_ram_id]) REFERENCES [dbo].[memorias_ram] ([id]) ON DELETE CASCADE ON UPDATE NO ACTION
GO
-- ----------------------------
-- Foreign Keys structure for table historial_equipos
-- ----------------------------
ALTER TABLE [dbo].[historial_equipos] ADD CONSTRAINT [FK_historial_equipos_equipos] FOREIGN KEY ([equipo_id]) REFERENCES [dbo].[equipos] ([id]) ON DELETE CASCADE ON UPDATE NO ACTION
GO
-- ----------------------------
-- Foreign Keys structure for table usuarios_equipos
-- ----------------------------
ALTER TABLE [dbo].[usuarios_equipos] ADD CONSTRAINT [FK_usuarios_equipos_usuarios] FOREIGN KEY ([usuario_id]) REFERENCES [dbo].[usuarios] ([id]) ON DELETE CASCADE ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[usuarios_equipos] ADD CONSTRAINT [FK_usuarios_equipos_equipos] FOREIGN KEY ([equipo_id]) REFERENCES [dbo].[equipos] ([id]) ON DELETE CASCADE ON UPDATE NO ACTION
GO

View File

@@ -5,14 +5,19 @@
Este script utiliza la lógica de recopilación de discos original y probada, adaptada para Este script utiliza la lógica de recopilación de discos original y probada, adaptada para
funcionar con los nuevos endpoints y la estructura de datos de la API de Inventario IT. funcionar con los nuevos endpoints y la estructura de datos de la API de Inventario IT.
.NOTES .NOTES
Versión: 2.4 Versión: 2.5
Fecha: 08/10/2025 Fecha: 21/10/2025
- Añadido flujo de autenticación JWT para obtener un token antes de realizar las llamadas a la API.
- Todas las peticiones a la API ahora incluyen la cabecera 'Authorization: Bearer <token>'.
- Revertida la lógica de detección de discos para W10+ a la versión original para máxima compatibilidad. - Revertida la lógica de detección de discos para W10+ a la versión original para máxima compatibilidad.
#> #>
# ================================================================================= # =================================================================================
# --- CONFIGURACIÓN --- # --- CONFIGURACIÓN ---
$apiBaseUrl = "http://equipos.eldia.net/api" $apiBaseUrl = "http://equipos.eldia.net/api"
# Añadir credenciales para la autenticación en la API.
$apiUser = "admin"
$apiPassword = "PTP847Equipos"
# ================================================================================= # =================================================================================
# Verificar versión de Windows # Verificar versión de Windows
@@ -37,8 +42,27 @@ if ($isWindows7) {
$jsonMemoriasRam = ConvertTo-BasicJson -InputObject $memoriasRam $jsonMemoriasRam = ConvertTo-BasicJson -InputObject $memoriasRam
$memoriasRamMaestra = $memoriasRam | ForEach-Object { $obj = New-Object PSCustomObject; Add-Member -InputObject $obj -MemberType NoteProperty -Name "partNumber" -Value $_.partNumber; Add-Member -InputObject $obj -MemberType NoteProperty -Name "fabricante" -Value $_.fabricante; Add-Member -InputObject $obj -MemberType NoteProperty -Name "tamano" -Value $_.tamano; Add-Member -InputObject $obj -MemberType NoteProperty -Name "velocidad" -Value $_.velocidad; $obj } $memoriasRamMaestra = $memoriasRam | ForEach-Object { $obj = New-Object PSCustomObject; Add-Member -InputObject $obj -MemberType NoteProperty -Name "partNumber" -Value $_.partNumber; Add-Member -InputObject $obj -MemberType NoteProperty -Name "fabricante" -Value $_.fabricante; Add-Member -InputObject $obj -MemberType NoteProperty -Name "tamano" -Value $_.tamano; Add-Member -InputObject $obj -MemberType NoteProperty -Name "velocidad" -Value $_.velocidad; $obj }
$jsonMemoriasRamMaestra = ConvertTo-BasicJson -InputObject $memoriasRamMaestra $jsonMemoriasRamMaestra = ConvertTo-BasicJson -InputObject $memoriasRamMaestra
# Función de envío WebClient
function Send-Data { param($Url, $Body, $Method = "POST"); try { $webClient = New-Object System.Net.WebClient; $webClient.Headers.Add("Content-Type", "application/json"); return $webClient.UploadString($Url, $Method, $Body) } catch { Write-Host "Error en el envío a $Url : $($_.Exception.Message)"; return $null } } #[MODIFICACIÓN] Actualizar la función Send-Data para aceptar cabeceras (headers)
function Send-Data {
param($Url, $Body, $Method = "POST", $Headers)
try {
$webClient = New-Object System.Net.WebClient
$webClient.Headers.Add("Content-Type", "application/json")
if ($Headers) {
foreach ($key in $Headers.Keys) {
$webClient.Headers.Add($key, $Headers[$key])
}
}
return $webClient.UploadString($Url, $Method, $Body)
} catch {
Write-Host "Error en el envío a $Url : $($_.Exception.Message)"
if ($_.Exception.Response) {
try { $stream = $_.Exception.Response.GetResponseStream(); $reader = New-Object System.IO.StreamReader($stream); $responseBody = $reader.ReadToEnd(); Write-Host "Respuesta del servidor: $responseBody" } catch {}
}
return $null
}
}
} else { } else {
Write-Host "Ejecutando versión estándar para Windows 8/10/11..." Write-Host "Ejecutando versión estándar para Windows 8/10/11..."
# Obtener información del sistema # Obtener información del sistema
@@ -72,19 +96,53 @@ if ($null -eq $disks -or $disks.Count -eq 0) {
Write-Host "[ADVERTENCIA] No se pudo obtener información de los discos. Se enviará una lista vacía." Write-Host "[ADVERTENCIA] No se pudo obtener información de los discos. Se enviará una lista vacía."
$jsonDiscos = "[]" $jsonDiscos = "[]"
} else { } else {
# 1. Convertimos la colección a JSON.
$tempJson = $disks | ConvertTo-Json -Depth 10 -Compress $tempJson = $disks | ConvertTo-Json -Depth 10 -Compress
# 2. Verificamos si el texto resultante NO empieza con '[', lo que significa que es un objeto único.
if (-not $tempJson.StartsWith("[")) { if (-not $tempJson.StartsWith("[")) {
# 3. Si es un objeto único, lo envolvemos en corchetes para convertirlo en un array de un solo elemento.
$jsonDiscos = "[$tempJson]" $jsonDiscos = "[$tempJson]"
} else { } else {
# 4. Si ya es un array, lo usamos tal cual.
$jsonDiscos = $tempJson $jsonDiscos = $tempJson
} }
} }
###################################################################
# PASO PREVIO: AUTENTICACIÓN PARA OBTENER TOKEN JWT
###################################################################
Write-Host "Autenticando contra la API para obtener el token..."
$token = $null
$loginUrl = "$apiBaseUrl/auth/login"
$loginBody = @{ username = $apiUser; password = $apiPassword } | ConvertTo-Json -Compress
try {
# Usamos Invoke-RestMethod para el login en ambas versiones por simplicidad en el manejo de la respuesta
$loginResponse = Invoke-RestMethod -Uri $loginUrl -Method Post -ContentType "application/json" -Body $loginBody
$token = $loginResponse.token
if ($token) {
Write-Host "-> Autenticación exitosa. Token obtenido." -ForegroundColor Green
} else {
Write-Host "-> ERROR: No se recibió un token del servidor, aunque la petición fue exitosa." -ForegroundColor Red
}
} catch {
Write-Host "-> ERROR GRAVE al autenticar: $($_.Exception.Message)" -ForegroundColor Red
if ($_.Exception.Response) {
$errorResponse = $_.Exception.Response.GetResponseStream()
$reader = New-Object System.IO.StreamReader($errorResponse)
$reader.BaseStream.Position = 0
$reader.DiscardBufferedData()
$responseBody = $reader.ReadToEnd();
Write-Host "Respuesta del servidor: $responseBody" -ForegroundColor Yellow
}
}
if (-not $token) {
Write-Host "No se pudo continuar sin un token de autenticación. Saliendo del script." -ForegroundColor Red
# Pausa para que el usuario pueda ver el error antes de que la ventana se cierre
Read-Host "Presiona Enter para salir"
exit 1
}
# Preparamos la cabecera de autenticación que usaremos en todas las peticiones
$authHeader = @{ "Authorization" = "Bearer $token" }
################################################################### ###################################################################
# CÓDIGO COMÚN PARA AMBAS VERSIONES (ENVÍO DE DATOS) # CÓDIGO COMÚN PARA AMBAS VERSIONES (ENVÍO DE DATOS)
################################################################### ###################################################################
@@ -93,27 +151,24 @@ $rutaDiscos = "$apiBaseUrl/discos"; $rutaDiscosAsocia = "$apiBaseUrl/equipos/$ho
$rutaMemoriasRamAsocia = "$apiBaseUrl/equipos/$hostname/ram" $rutaMemoriasRamAsocia = "$apiBaseUrl/equipos/$hostname/ram"
try { try {
Write-Host "1. Enviando/Actualizando datos del equipo..."; if ($isWindows7) { Send-Data -Url $rutaEquipos -Body $jsonDataEquipo } else { Invoke-RestMethod -Uri $rutaEquipos -Method Post -ContentType "application/json" -Body $jsonDataEquipo }; Write-Host "-> OK." Write-Host "1. Enviando/Actualizando datos del equipo..."; if ($isWindows7) { Send-Data -Url $rutaEquipos -Body $jsonDataEquipo -Headers $authHeader } else { Invoke-RestMethod -Uri $rutaEquipos -Method Post -ContentType "application/json" -Body $jsonDataEquipo -Headers $authHeader }; Write-Host "-> OK."
Write-Host "2. Creando/Actualizando registro de usuario..."; if ($isWindows7) { Send-Data -Url $rutaUsuarios -Body $jsonDataUsuario } else { Invoke-RestMethod -Uri $rutaUsuarios -Method Post -ContentType "application/json" -Body $jsonDataUsuario }; Write-Host "-> OK." Write-Host "2. Creando/Actualizando registro de usuario..."; if ($isWindows7) { Send-Data -Url $rutaUsuarios -Body $jsonDataUsuario -Headers $authHeader } else { Invoke-RestMethod -Uri $rutaUsuarios -Method Post -ContentType "application/json" -Body $jsonDataUsuario -Headers $authHeader }; Write-Host "-> OK."
Write-Host "3. Asociando usuario al equipo..."; if ($isWindows7) { Send-Data -Url $rutaUsuariosAsocia -Body $jsonDataUsuario } else { Invoke-RestMethod -Uri $rutaUsuariosAsocia -Method Post -ContentType "application/json" -Body $jsonDataUsuario }; Write-Host "-> OK." Write-Host "3. Asociando usuario al equipo..."; if ($isWindows7) { Send-Data -Url $rutaUsuariosAsocia -Body $jsonDataUsuario -Headers $authHeader } else { Invoke-RestMethod -Uri $rutaUsuariosAsocia -Method Post -ContentType "application/json" -Body $jsonDataUsuario -Headers $authHeader }; Write-Host "-> OK."
# --- LLAMADAS A LA API DE DISCOS CON DEPURACIÓN ---
Write-Host "4. Enviando lista maestra de discos..." Write-Host "4. Enviando lista maestra de discos..."
Write-Host "--> DEBUG: Payload para /api/discos: $jsonDiscos" -ForegroundColor Cyan if ($isWindows7) { Send-Data -Url $rutaDiscos -Body $jsonDiscos -Headers $authHeader } else { Invoke-RestMethod -Uri $rutaDiscos -Method Post -ContentType "application/json" -Body $jsonDiscos -Headers $authHeader }; Write-Host "-> OK."
if ($isWindows7) { Send-Data -Url $rutaDiscos -Body $jsonDiscos } else { Invoke-RestMethod -Uri $rutaDiscos -Method Post -ContentType "application/json" -Body $jsonDiscos }; Write-Host "-> OK."
Write-Host "5. Sincronizando discos con el equipo..." Write-Host "5. Sincronizando discos con el equipo..."
Write-Host "--> DEBUG: Payload para /api/equipos/.../asociardiscos: $jsonDiscos" -ForegroundColor Cyan if ($isWindows7) { Send-Data -Url $rutaDiscosAsocia -Body $jsonDiscos -Headers $authHeader } else { Invoke-RestMethod -Uri $rutaDiscosAsocia -Method Post -ContentType "application/json" -Body $jsonDiscos -Headers $authHeader }; Write-Host "-> OK."
if ($isWindows7) { Send-Data -Url $rutaDiscosAsocia -Body $jsonDiscos } else { Invoke-RestMethod -Uri $rutaDiscosAsocia -Method Post -ContentType "application/json" -Body $jsonDiscos }; Write-Host "-> OK."
Write-Host "6. Enviando lista maestra de Memorias RAM..."; if ($isWindows7) { Send-Data -Url $rutaMemoriasRam -Body $jsonMemoriasRamMaestra } else { Invoke-RestMethod -Uri $rutaMemoriasRam -Method Post -ContentType "application/json" -Body $jsonMemoriasRamMaestra }; Write-Host "-> OK." Write-Host "6. Enviando lista maestra de Memorias RAM..."; if ($isWindows7) { Send-Data -Url $rutaMemoriasRam -Body $jsonMemoriasRamMaestra -Headers $authHeader } else { Invoke-RestMethod -Uri $rutaMemoriasRam -Method Post -ContentType "application/json" -Body $jsonMemoriasRamMaestra -Headers $authHeader }; Write-Host "-> OK."
Write-Host "7. Sincronizando Memorias RAM con el equipo..."; if ($isWindows7) { Send-Data -Url $rutaMemoriasRamAsocia -Body $jsonMemoriasRam } else { Invoke-RestMethod -Uri $rutaMemoriasRamAsocia -Method Post -ContentType "application/json" -Body $jsonMemoriasRam }; Write-Host "-> OK." Write-Host "7. Sincronizando Memorias RAM con el equipo..."; if ($isWindows7) { Send-Data -Url $rutaMemoriasRamAsocia -Body $jsonMemoriasRam -Headers $authHeader } else { Invoke-RestMethod -Uri $rutaMemoriasRamAsocia -Method Post -ContentType "application/json" -Body $jsonMemoriasRam -Headers $authHeader }; Write-Host "-> OK."
Write-Host ""; Write-Host "========================================"; Write-Host " PROCESO FINALIZADO CORRECTAMENTE "; Write-Host "========================================" Write-Host ""; Write-Host "========================================" -ForegroundColor Green; Write-Host " PROCESO FINALIZADO CORRECTAMENTE " -ForegroundColor Green; Write-Host "========================================" -ForegroundColor Green
} catch { } catch {
Write-Host ""; Write-Host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"; Write-Host " ERROR DURANTE EL ENVÍO DE DATOS "; Write-Host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" Write-Host ""; Write-Host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" -ForegroundColor Red; Write-Host " ERROR DURANTE EL ENVÍO DE DATOS " -ForegroundColor Red; Write-Host "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" -ForegroundColor Red
Write-Host "Detalle del error: $($_.Exception.Message)" Write-Host "Detalle del error: $($_.Exception.Message)" -ForegroundColor Yellow
if ($_.Exception.Response) { if ($_.Exception.Response) {
try { $stream = $_.Exception.Response.GetResponseStream(); $reader = New-Object System.IO.StreamReader($stream); $responseBody = $reader.ReadToEnd(); $reader.Close(); $stream.Close(); Write-Host "Respuesta del servidor: $responseBody" } catch {} try { $stream = $_.Exception.Response.GetResponseStream(); $reader = New-Object System.IO.StreamReader($stream); $responseBody = $reader.ReadToEnd(); $reader.Close(); $stream.Close(); Write-Host "Respuesta del servidor: $responseBody" -ForegroundColor Yellow } catch {}
} }
} }