Below is the crc_spaceinfo stored procedure...
DECLARE @DiskInfo TABLE
(
DriveName VARCHAR(3) ,
FreeSpaceGB FLOAT ,
SizeGB FLOAT
)
DECLARE @psinfo TABLE ( data NVARCHAR(100) );
INSERT INTO @psinfo
EXEC xp_cmdshell 'Powershell.exe "Get-WMIObject Win32_LogicalDisk -filter "DriveType=3"| Format-Table DeviceID, FreeSpace, Size"';
DELETE FROM @psinfo
WHERE data IS NULL
OR data LIKE '%DeviceID%'
OR data LIKE '%----%'
OR data LIKE '%Q$';
UPDATE @psinfo
SET data = REPLACE(data, ' ', ',');
;
WITH DriveSpace
AS ( SELECT SUBSTRING(data, 1, 2) AS [Drive] ,
REPLACE(( LEFT(( SUBSTRING(data,
( PATINDEX('%[0-9]%', data) ),
LEN(data)) ),
CHARINDEX(',',
( SUBSTRING(data,
( PATINDEX('%[0-9]%',
data) ),
LEN(data)) )) - 1) ),
',', '') AS [FreeSpace] ,
REPLACE(RIGHT(( SUBSTRING(data,
( PATINDEX('%[0-9]%', data) ),
LEN(data)) ),
PATINDEX('%,%',
( SUBSTRING(data,
( PATINDEX('%[0-9]%',
data) ),
LEN(data)) ))), ',',
'') AS [Size]
FROM @psinfo
)
INSERT @DiskInfo
( Drivename ,
FreeSpaceGB ,
SizeGB
)
SELECT Drive ,
CONVERT(dec(6, 2), CONVERT(dec(17, 2), FreeSpace) / ( 1024
* 1024 * 1024 )) AS FreeSpace ,
CONVERT(dec(6, 2), CONVERT(dec(17, 2), size) / ( 1024
* 1024 * 1024 )) AS Size
FROM DriveSpace;
SELECT *
FROM @DiskInfo
end
answered
Aug 22 '12 at 02:32 PM
tombiernacki
318
●
3
●
9
●
16