User Tools

Site Tools


guardar_resultados_de_powershell_en_sql_server

This is an old revision of the document!


Estadísticas de discos locales en SQL Server

Creación de Usuario y Tabla en SQL Server

Script de Creación de la Tabla:

USE TEST;
GO
 
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'hddstats')
BEGIN
    CREATE TABLE hddstats (
        id INT IDENTITY(1,1) PRIMARY KEY,
        TIMESTAMP DATETIME,
        hostname NVARCHAR(255),
        deviceID NVARCHAR(50),
        FreeSpace FLOAT,
        SIZE FLOAT,
        UsedSpace FLOAT
    );
END;

Script de PowerShell (para Insertar Datos):

# Definir las credenciales y la cadena de conexión a la base de datos
$serverName = "sql.ad.facundoitest.space"
$databaseName = "TEST"
$username = "svcSQL"
$password = "tu_contraseña"
 
# Obtener el hostname del servidor
$hostname = $env:COMPUTERNAME
 
# Crear la cadena de conexión
$connectionString = "Server=$serverName;Database=$databaseName;User ID=$username;Password=$password;"
 
# Obtener los datos utilizando el script existente
$data = Get-WmiObject -Class Win32_LogicalDisk | Select-Object DeviceID, VolumeName, @{Name="FreeSpace_GB";Expression={[math]::Round($_.FreeSpace / 1GB, 2) } }, @{Name="Size_GB";Expression={[math]::Round($_.Size / 1GB, 2)}}, @{Name="UsedSpace_GB";Expression={[math]::Round(($_.Size - $_.FreeSpace) / 1GB, 2)}}
 
# Conectar a la base de datos
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString
$connection.Open()
 
# Crear el comando SQL para insertar los datos en la tabla
foreach ($row in $data) {
    $commandText = "INSERT INTO hddstats (timestamp, hostname, deviceID, FreeSpace, Size, UsedSpace) VALUES (GETDATE(), '$hostname', '$($row.DeviceID)', $($row.FreeSpace_GB), $($row.Size_GB), $($row.UsedSpace_GB))"
    $command = New-Object System.Data.SqlClient.SqlCommand
    $command.Connection = $connection
    $command.CommandText = $commandText
    $command.ExecuteNonQuery()
}
 
# Cerrar la conexión
$connection.Close()

Consideraciones:

  1. El usuario utilizado en la conexión es de SQL (no Windows).
  2. Antes de ejecutar el script, asegúrate de habilitar las conexiones TCP/IP desde el Configuration Manager de SQL Server.
  3. Además, es necesario habilitar el login de usuarios de Windows y SQL desde 'Propiedades > Seguridad' de la base de datos en SQL Server Management Studio.
guardar_resultados_de_powershell_en_sql_server.1711588094.txt.gz · Last modified: 2024/10/17 21:42 (external edit)