Compare commits
3 Commits
7effa58844
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 06be3a10da | |||
| 840df270cf | |||
| 7c2c328032 |
368
InventarioDB.sql
Normal file
368
InventarioDB.sql
Normal 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
|
||||||
|
|
||||||
101
getDatosPost.ps1
101
getDatosPost.ps1
@@ -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 {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user