如何使用 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)?的主要内容,如果未能解决你的问题,请参考以下文章
Select Query SQL Server 中的 IF 子句用法