查询获取SMBIOS的方法

2024-02-19 13:44
文章标签 方法 查询 获取 smbios

本文主要是介绍查询获取SMBIOS的方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、用于在本地查询 SMBIOS 的示例 PowerShell 脚本

Microsoft网站参考
以下 ChassisTypes 列表是从最新的 DMTF SMBIOS 规范复制的。

# Set-ExecutionPolicy or Script Signing documentation needs to be reviewed
# Current script is designed to run on individual machines
##
$ChassisTypes =
@{1='Other'2='Unknown'3='Desktop'4='Low Profile Desktop'5='Pizza Box'6='Mini Tower'7='Tower'8='Portable'9='Laptop'10='Notebook'11='Hand Held'12='Docking Station'13='All in One'14='Sub Notebook'15='Space-Saving'16='Lunch Box'17='Main System Chassis'18='Expansion Chassis'19='SubChassis'20='Bus Expansion Chassis'21='Peripheral Chassis'22='Storage Chassis'23='Rack Mount Chassis'24='Sealed-Case PC'25='Multi-system chassis'26='Compact PCI'27='Advanced TCA'28='Blade'29='Blade Enclosure'30='Tablet'31='Convertible'32='Detachable'33='IoT Gateway'34='Embedded PC'35='Mini PC'36='Stick PC'
}$namespace = "root\CIMV2"$machines = New-Object System.Collections.ArrayList# TODO: add code to populate the machine list from user input, etc.
#
$machines.Add("LocalHost") | Out-Null$list = New-Object System.Collections.ArrayListforeach ($machine in $machines)
{$obj = New-Object -Type PSObject | Select-Object SerialNumber, Manufacturer, UUID, BaseBoardProduct, ChassisTypes, Chassis, SystemFamily, SystemSKUNumber$obj.SerialNumber = Get-WmiObject -class Win32_Bios -computername $machine -namespace $namespace | Select-Object -ExpandProperty SerialNumber$obj.Manufacturer = Get-WmiObject -class Win32_Bios -computername $machine -namespace $namespace | Select-Object -ExpandProperty Manufacturer$obj.UUID = Get-WmiObject Win32_ComputerSystemProduct | Select-Object -ExpandProperty UUID$obj.BaseBoardProduct = Get-WmiObject Win32_BaseBoard | Select-Object -ExpandProperty Product$obj.ChassisTypes = Get-WmiObject Win32_SystemEnclosure | Select-Object -ExpandProperty ChassisTypes$obj.Chassis = $ChassisTypes[[int]$obj.ChassisTypes]$obj.SystemFamily = Get-WmiObject Win32_ComputerSystem | Select-Object -ExpandProperty SystemFamily$obj.SystemSKUNumber = Get-WmiObject Win32_ComputerSystem | Select-Object -ExpandProperty SystemSKUNumber$list.Add($obj) | Out-Null
}# TODO: add code to handle output (save to local file, upload to share, etc.)
#
# to use on single line for each object
# $list | Sort-Object Manufacturer, Chassis | Format-Table Manufacturer, ChassisTypes, Chassis, SystemFamily, BaseBoard_Product, SerialNumber, UUID, SystemSKUNumber -Wrap# Optional: pipe to Excel:
# $list | Export-Csv c:\path\filename.csv -Encoding Unicode -NoTypeInformation
#
# Optional: pipe to UI
# $list | Out-GridView
#
$list

输出示例:
在这里插入图片描述
在这里插入图片描述

这个是利用Get-WmiObject(别名gwmi)命令来获取的,输入gwmi –class win32_bios 或 gwmi –class win32_bios smbiosbiosversion获取BIOS版本信息(两种命令显示的方式和信息不一样)回车执行。
在这里插入图片描述

运行脚本时可能出现的问题:
PowerShell:因为在此系统上禁止运行脚本,解决方法
在自己编PowerShell脚本的时候突然遇到这个问题:

无法加载文件 C:\Users\DH\Desktop\cs\rename.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。

  • CategoryInfo : SecurityError: (😃 [],ParentContainsErrorRecordException

  • FullyQualifiedErrorId : UnauthorizedAccess
    在这里插入图片描述
    查了查之后发现是在计算机上启动 Windows PowerShell 时,执行策略很可能是 Restricted(默认设置)。

Restricted 执行策略不允许任何脚本运行。

AllSigned 和 RemoteSigned 执行策略可防止 Windows PowerShell 运行没有数字签名的脚本。

本主题说明如何运行所选未签名脚本(即使在执行策略为 RemoteSigned 的情况下),还说明如何对 脚本进行签名以便您自己使用。

有关 Windows PowerShell 执行策略的详细信息,请参阅 about_Execution_Policy。

想了解 计算机上的现用执行策略,打开PowerShell 然后输入 get-executionpolicy。
在这里插入图片描述
以管理员身份打开PowerShell 输入 set-executionpolicy remotesigned
在这里插入图片描述
选择Y 然后电脑上就可以执行自己编写的脚本文件

二、命令行wmic获取

windows系统: 使用命令行 获取 主板BIOS基本信息.2021-02-10

wmic BIOS get name,manufacturer,version,serialnumber,releasedate,currentlanguage,description

在这里插入图片描述
但是只有以下几种属性可以获取:
在这里插入图片描述

三、通过Windows API:GetSystemFirmwareTable获取

推荐 Windows 下读取 SMBIOS的工具
具体原理是使用: GetSystemFirmwareTable 来获得系统的SMBIOS信息。其中还有SMBIOS结构体的解析代码。有需要的朋友可以参考一下。
具体代码来自:https://github.com/KunYi/DumpSMBIOS

这篇关于查询获取SMBIOS的方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/724845

相关文章

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函

Python中将嵌套列表扁平化的多种实现方法

《Python中将嵌套列表扁平化的多种实现方法》在Python编程中,我们常常会遇到需要将嵌套列表(即列表中包含列表)转换为一个一维的扁平列表的需求,本文将给大家介绍了多种实现这一目标的方法,需要的朋... 目录python中将嵌套列表扁平化的方法技术背景实现步骤1. 使用嵌套列表推导式2. 使用itert