guardar_resultados_de_powershell_en_sql_server
This is an old revision of the document!
Table of Contents
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:
- El usuario utilizado en la conexión es de SQL (no Windows).
- Antes de ejecutar el script, asegúrate de habilitar las conexiones TCP/IP desde el Configuration Manager de SQL Server.
- 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)
