Необходимо создать инвентаризационный отчет с SQL Информация о сервере + ОС - PullRequest
0 голосов
/ 12 марта 2020

Последние 2 дня я изо всех сил пытался найти решение для создания отчета, который будет содержать как SQL информацию о сервере, так и эмулированную информацию OS + DISK + CPU_RAM для всей среды.

Проблема: 1. Среда состоит из версий 2005-2019 гг. (Поэтому не могу полагаться на sys.dm_os_windows_info) 2. Оболочка Power Trial, но мои навыки в ней ограничены, поэтому я не смог найти решение , 3. Попробовал t sql ниже, но не могу получить всю необходимую информацию, отсутствует информация о процессоре и оперативной памяти.

declare @svrName varchar(255)
declare @sql varchar(400)
--by default it will take the current server name, we can the set the server name as well
set @svrName = @@SERVERNAME
set @sql = 'powershell.exe -c "Get-WmiObject -ComputerName ' + QUOTENAME(@svrName,'''') + ' -Class Win32_Volume -Filter ''DriveType = 3'' | select name,capacity,freespace | foreach{$_.name+''|''+$_.capacity/1048576+''%''+$_.freespace/1048576+''*''}"'
--creating a temporary table
CREATE TABLE #output
(line varchar(255))
--inserting disk name, total space and free space value in to temporary table
insert #output
EXEC xp_cmdshell @sql

SELECT  
    SERVERPROPERTY('ServerName') AS ServerName,  
    SERVERPROPERTY('MachineName') AS MachineName,
    CASE 
        WHEN  SERVERPROPERTY('InstanceName') IS NULL THEN ''
        ELSE SERVERPROPERTY('InstanceName')
    END AS InstanceName,
    '' as Port, --need to update to strip from Servername. Note: Assumes Registered Server is named with Port
    SUBSTRING ( (SELECT @@VERSION),1, CHARINDEX('-',(SELECT @@VERSION))-1 ) as ProductName,
    SERVERPROPERTY('ProductVersion') AS ProductVersion,  
    SERVERPROPERTY('ProductLevel') AS ProductLevel,
    SERVERPROPERTY('ProductMajorVersion') AS ProductMajorVersion,
    SERVERPROPERTY('ProductMinorVersion') AS ProductMinorVersion,
    SERVERPROPERTY('ProductBuild') AS ProductBuild,
    SERVERPROPERTY('Edition') AS Edition,
    CASE SERVERPROPERTY('EngineEdition')
        WHEN 1 THEN 'PERSONAL'
        WHEN 2 THEN 'STANDARD'
        WHEN 3 THEN 'ENTERPRISE'
        WHEN 4 THEN 'EXPRESS'
        WHEN 5 THEN 'SQL DATABASE'
        WHEN 6 THEN 'SQL DATAWAREHOUSE'
    END AS EngineEdition,  
    CASE SERVERPROPERTY('IsHadrEnabled')
        WHEN 0 THEN 'The Always On Availability Groups feature is disabled'
        WHEN 1 THEN 'The Always On Availability Groups feature is enabled'
        ELSE 'Not applicable'
    END AS HadrEnabled,
    CASE SERVERPROPERTY('HadrManagerStatus')
        WHEN 0 THEN 'Not started, pending communication'
        WHEN 1 THEN 'Started and running'
        WHEN 2 THEN 'Not started and failed'
        ELSE 'Not applicable'
    END AS HadrManagerStatus,
    CASE SERVERPROPERTY('IsSingleUser') WHEN 0 THEN 'No' ELSE 'Yes' END AS InSingleUserMode,
    CASE SERVERPROPERTY('IsClustered')
        WHEN 1 THEN 'Clustered'
        WHEN 0 THEN 'Not Clustered'
        ELSE 'Not applicable'
    END AS IsClustered,
    CASE RIGHT(SUBSTRING(@@VERSION, CHARINDEX('Windows NT', @@VERSION), 14), 3)
   WHEN '5.0' THEN 'Windows 2000'
   WHEN '5.1' THEN 'Windows XP'
   WHEN '5.2' THEN 'Windows Server 2003/2003 R2'
   WHEN '6.0' THEN 'Windows Server 2008/Windows Vista'
   WHEN '6.1' THEN 'Windows Server 2008 R2/Windows 7'
   WHEN '6.2' THEN 'Windows Server 2012/Windows 8'
   ELSE 'Windows 2012 R2+'
  END AS [WindowsVersionBuild],
    --script to retrieve the values in GB from PS Script output
    rtrim(ltrim(SUBSTRING(line,1,CHARINDEX('|',line) -1))) as DriveName
   ,round(cast(rtrim(ltrim(SUBSTRING(line,CHARINDEX('|',line)+1,
   (CHARINDEX('%',line) -1)-CHARINDEX('|',line)) )) as Float)/1024,0) as 'TotalCapacity(GB)'
   ,round(cast(rtrim(ltrim(SUBSTRING(line,CHARINDEX('%',line)+1,
   (CHARINDEX('*',line) -1)-CHARINDEX('%',line)) )) as Float) /1024 ,0)as 'Freespace(GB)'
from #output
where line like '[A-Z][:]%'
order by drivename
--script to drop the temporary table
drop table #output

Информация, которую я должен включить в свой отчет:

Имя_сервера
Имя_экземпляра машины
Порт
Имя продукта ProductVersion
Уровень продукта
ProductMajorVersion ProductMinorVersion ProductBuild
Edition EngineEdition
HadrEnabled HadrManagerStatus
InSingleUserMode
IsClustered WindowsVersionBuild D Имя_диска
Общая емкость (ГБ)
Свободное пространство (ГБ)

ОЗУ 10

1020 * ОЗУ 10 * 10 У нас есть Центральная студия управления в нашей среде. Я бы предпочел, чтобы кто-нибудь смог направить меня к решению Powershell, которое работает с CMS. Я пробовал dbatools, но это слишком для меня.

Также я нашел несколько решений для Power-Shell, но ни одно не предоставляет информацию как о сервере, так и о SQL Информация о сервере.

Заранее спасибо за любые рекомендации!

...