如何使用 SQL Query 获取系统型号(产品名称如:Proliant DL580 Gen9)?

Posted

技术标签:

【中文标题】如何使用 SQL Query 获取系统型号(产品名称如:Proliant DL580 Gen9)?【英文标题】:how to get the system model (product name like :Proliant DL580 Gen9) with SQL Query? 【发布时间】:2019-05-10 10:46:53 【问题描述】:

我正在寻找一种方法来找到像“Proliant DL580 Gen9”这样的系统型号, 但我找不到任何方法来获得这个。

System Model

我尝试以下查询并使用“master.sys.xp_regread”过程来获取服务器型号名称

DECLARE @ServerType VARCHAR(max)
EXEC master.sys.xp_regread @rootkey = 'HKEY_LOCAL_MACHINE',
                           @key = 'HARDWARE\DESCRIPTION\System\Bios\0',
                           @value_name = 'SystemProductName',
                           @value = @ServerType OUTPUT;
SELECT @ServerType 

返回NULL 值!

有没有办法获得像“Proliant DL580 Gen9”这样的系统模型?

谢谢。

【问题讨论】:

看看这个thread 我建议你使用 PowerShell 而不是 T-SQL 来完成这个任务:(Get-WmiObject Win32_Processor).Name 【参考方案1】:

感谢您回答我的问题 我还找到了另一种获取此属性的方法。

DECLARE @SysInfo TABLE (Property NVARCHAR(MAX));
INSERT INTO @SysInfo (Property) 
    EXEC master.dbo.xp_cmdshell 'systeminfo | findstr /C:"System Model"';
SELECT  (SELECT LTRIM(REPLACE(Property, 'System Model:', ''))       
    FROM @SysInfo WHERE Property LIKE '%System Model%');

最好的问候

【讨论】:

不客气:)。请记住(如 Doc 中所述)xp_cmdshell 是一个扩展存储,它“生成一个 Windows 命令外壳并传入一个字符串以供执行”。换句话说,这不是一个查询,而是一个 windows 命令。您也可以通过这种方式使用 wmic 命令。默认情况下 xp_cmdshell 是禁用的,您需要重新配置服务器才能使用它,这可能被视为打开了安全窗口。 xp_regread 也是扩展存储的,但是如果用户有正确的权限,它不需要打开任何安全配置,但是 XP_Regread 是无证的 谢谢你的提示;)我无法得到系统模型,我不得不使用这个【参考方案2】:

早安,

您可以使用以下查询获取模型:

EXEC master.sys.xp_regread 
    @rootkey = 'HKEY_LOCAL_MACHINE',
    @key = 'HARDWARE\DESCRIPTION\System\BIOS',
    @value_name = 'SystemProductName'
GO

结果应该给你通过执行 wmic 命令得到的等效信息

wmic computersystem get model

如果您不确定,您可以使用命令 regedit 打开注册表,找到您要查找的值,然后更改上面查询中的参数

例如,这里有一些人们需要的共同价值观:

EXEC master.sys.xp_regread 
    @rootkey = 'HKEY_LOCAL_MACHINE',
    @key = 'HARDWARE\DESCRIPTION\System\BIOS',
    @value_name = 'SystemManufacturer'
GO
EXEC master.sys.xp_regread 
    @rootkey = 'HKEY_LOCAL_MACHINE',
    @key = 'HARDWARE\DESCRIPTION\System\BIOS',
    @value_name = 'SystemVersion'
GO
EXEC master.sys.xp_regread 
    @rootkey = 'HKEY_LOCAL_MACHINE',
    @key = 'HARDWARE\DESCRIPTION\System\BIOS',
    @value_name = 'SystemProductName'
GO

EXEC master.sys.xp_regread 
    @rootkey = 'HKEY_LOCAL_MACHINE',
    @key = 'HARDWARE\DESCRIPTION\System',
    @value_name = 'SystemBiosVersion'
GO

【讨论】:

以上是关于如何使用 SQL Query 获取系统型号(产品名称如:Proliant DL580 Gen9)?的主要内容,如果未能解决你的问题,请参考以下文章

如何从原始查询中获取 sql 结果

Select Query SQL Server 中的 IF 子句用法

使用 WC_Query 获取销售的 WooCommerce 产品

电脑密钥如何获取??

SQL Query只查找具有一种产品类型的用户

如何首先将输入插入到 sql 表代码中