UUID(Universally Unique Identifier,通用唯一识别码)起源 发展阶段 作用 功能 价值 组成部分
RFC 4122 - A Universally Unique IDentifier (UUID) URN Namespace
RFC 4122 的各个部分,下面我将按照你列出的结构进行简要概述:
1. 介绍
- 介绍了 UUID(通用唯一标识符)的背景、定义及其应用场景。UUID 旨在确保在不同环境、系统或时空中生成的标识符具有唯一性。
2. 赋予动机
- 该部分讨论了 UUID 诞生的背景,主要是为了应对分布式系统中需要生成唯一标识符的需求。特别是,在没有中心控制或主机间同步的情况下,如何确保标识符的唯一性。
3. 命名空间注册模板
- 命名空间:UUID 使用多个命名空间来确保生成的标识符在不同的上下文中唯一。此部分介绍了注册和管理这些命名空间的格式和标准。
4. 规范
- 这是 RFC 4122 的核心部分,详细说明了 UUID 的格式、生成算法、时间戳的处理、节点的表示以及 UUID 的变体、版本等内容。
4.1 格式
- 4.1.1 变体:描述了 UUID 的变体(即不同类型的 UUID)及其对生成和使用的影响。
- 4.1.2 布局和字节顺序:UUID 的布局及其字节顺序规范。
- 4.1.3 版本:UUID 的不同版本(v1, v3, v4, v5)的定义和使用场景。
- 4.1.4 时间戳:说明了基于时间戳生成 UUID 的方法,特别是 UUID v1。
- 4.1.5 时钟序列:UUID v1 中用于防止生成重复 UUID 的时钟序列。
- 4.1.6 节点:UUID v1 中的节点部分(通常是机器的 MAC 地址)。
- 4.1.7 无 UUID:描述了 UUID 空值的表示,通常用于没有标识符的情况。
4.2 创建基于时间的 UUID 的算法
- 4.2.1 基本算法:详细介绍了生成基于时间的 UUID 的基本过程,特别是如何通过系统时钟和稳定存储生成唯一标识符。
- 4.2.1.1 读取稳定存储:如何读取机器的稳定存储(如硬盘)获取必要的数据。
- 4.2.1.2 系统时钟分辨率:讨论了系统时钟的精度问题。
- 4.2.1.3 写入稳定存储:如何确保生成的 UUID 被写入稳定存储中,避免丢失。
- 4.2.1.4 跨进程共享状态:如何在多个进程中共享状态信息,确保生成的 UUID 是唯一的。
- 4.2.2 生成详细信息:进一步描述 UUID 生成的细节,包括时间戳、时钟序列和节点信息。
4.3 从真正随机或伪随机数生成 UUID
- 讨论了如何使用随机数生成 UUID(主要是 UUID v4),确保生成的标识符在全局范围内唯一。
4.4 创建基于名称的 UUID 的算法
- UUID v3 和 UUID v5:基于哈希(MD5 或 SHA-1)生成 UUID,适用于基于名称的唯一标识符。
4.5 无法识别主机的节点 ID
- 如果无法获得主机的节点信息(例如 MAC 地址),则可以使用其他方法来生成 UUID,确保唯一性。
5. 社区注意事项
- 讨论了 UUID 的应用和相关标准中可能遇到的社区问题,可能包括实现上的差异和建议的改进。
6. 安全注意事项
- UUID 的安全性:考虑到 UUID 在分布式系统中的使用,讨论了潜在的安全隐患,例如如何防止 UUID 被伪造或暴露敏感信息。
7. 确认
- 确认了该标准的有效性,并对参与 RFC 编写和讨论的人员表示感谢。
8. 规范性参考文献
- 提供了 RFC 4122 中引用的相关规范和文献,供进一步参考。
附录
- 附录 A - 示例实现:提供了生成 UUID 的一些代码示例和实现方案。
- 附录 B - utest 的示例输出:展示了使用
utest工具测试 UUID 生成的输出。 - 附录 C - 一些命名空间 ID:列出了 UUID 中使用的命名空间 ID 示例。
UUID(Universally Unique Identifier,通用唯一识别码)
UUID(通用唯一识别码)的起源可以追溯到计算机科学领域。它最初由开放软件基金会(Open Software Foundation,OSF)制定,并在分布式计算环境中广泛使用。UUID 的目的是确保在分布式系统中生成唯一的标识符,以避免不同节点或应用程序生成相同的标识符的可能性。
UUID 是一个128位的数字,通常用32个十六进制数字表示(例如,550e8400-e29b-41d4-a716-446655440000)。它由标准化的算法基于时间戳、节点信息和随机数等因素生成,因此在理论上具有极其低的重复概率。
在 Windows 系统中,UUID 通常用于唯一标识硬件设备、系统组件、安装的软件等。例如,在 Windows 注册表中,很多条目会包含与软件或设备相关联的 UUID。这有助于确保系统中的各种组件都能够被唯一标识,从而避免冲突和混淆。
UUID 的起源可以追溯到分布式计算环境的需求,它为计算机系统中标识各种实体提供了一种高度可靠的方法。
UUID(通用唯一标识符),它是一个标准的 128 位标识符,广泛应用于计算机系统中用于标识信息。不同版本的 UUID(v1, v2, v3, v4, v5, v6, v7, v8)有不同的生成方式和特性,适用于不同的应用场景。
UUID 版本号及其特性和差异
UUID v1 (基于时间和节点)
- 生成方式:UUID v1 基于当前的时间戳和机器的 MAC 地址来生成。还包括一个时钟序列,以防止在短时间内生成重复的 UUID。
- 特性:
- 唯一性:使用当前时间和机器的 MAC 地址确保全球唯一性。
- 可追踪性:由于使用了 MAC 地址,可以追溯到生成该 UUID 的机器。
- 应用场景:适合需要全局唯一且可以追踪来源的场景,如分布式系统中需要确保每个节点生成唯一 ID 的情况。
UUID v2 (DCE 安全版本)
- 生成方式:UUID v2 在 v1 的基础上进行了扩展,增加了对 POSIX 的 UID(用户 ID)和 GID(组 ID)的支持。
- 特性:
- 继承 v1 的时间戳和 MAC 地址。
- 添加了用户和组信息(UID 和 GID),适用于某些需要记录权限信息的安全应用。
- 应用场景:适用于分布式环境中的安全场景,尤其是在一些基于 DCE(分布式计算环境)安全模型的应用中。
UUID v3 (基于名称的哈希值)
- 生成方式:UUID v3 使用 MD5 哈希算法对命名空间和名称的组合进行哈希生成。它是基于名称空间的静态唯一标识符。
- 特性:
- 使用命名空间和名称进行哈希计算,生成结果是固定的。
- UUID v3 是可重复的,给定相同的输入,生成的 UUID 永远相同。
- 应用场景:适用于生成固定唯一标识符的场景,如为特定资源生成唯一 ID(如文件或 URL),且相同输入始终返回相同的 UUID。
UUID v4 (基于随机数)
- 生成方式:UUID v4 完全基于随机数或伪随机数生成。它没有使用时间戳或 MAC 地址,而是随机生成的 122 位数据。
- 特性:
- 绝大多数位是随机生成的,只有少数几位用于版本号和变种标识。
- 随机性较高,但理论上存在碰撞的可能性(尽管概率极低)。
- 应用场景:适用于任何不要求追踪或可预测的唯一标识符的场景。由于其高度随机性,它广泛用于生成临时的唯一标识符。
UUID v5 (基于名称的哈希值)
- 生成方式:UUID v5 使用 SHA-1 哈希算法对命名空间和名称的组合进行哈希生成,类似于 v3,但使用 SHA-1 替代了 MD5。
- 特性:
- 和 v3 类似,但采用了 SHA-1 作为哈希算法,理论上更加安全。
- 也像 v3 一样,生成的 UUID 可重复,且相同输入始终返回相同的 UUID。
- 应用场景:适用于需要哈希并且希望使用 SHA-1 而非 MD5 的场景,尤其在安全性要求较高的应用中。
UUID v6 (基于时间戳,顺序优化版本)
- 生成方式:UUID v6 基于时间戳,类似于 v1,但时间戳的顺序进行了优化,使得生成的 UUID 更适合排序。
- 特性:
- 改进了 v1 中时间戳顺序的问题,使得 UUID 更适合进行排序。
- 仍然基于时间戳和机器的 MAC 地址,但顺序更有利于数据库的索引操作。
- 应用场景:适用于需要对生成的 UUID 进行排序的系统,如日志管理、分布式数据库等。
UUID v7 (基于时间戳,JSON 兼容版本)
- 生成方式:UUID v7 是一种新的版本,基于时间戳,并与 JSON 格式兼容。它为未来的日期和时间提供了更高的精度。
- 特性:
- 与 UUID v1 类似,基于时间戳,但提供了更高精度的时间戳,并且便于与 JSON 数据交换。
- 适合高精度和高性能要求的应用场景。
- 应用场景:适用于需要高精度时间戳的应用,尤其在现代 Web 服务和高频交易等领域。
UUID v8 (自定义格式)
- 生成方式:UUID v8 允许开发者定义自己的生成规则,具有最大的灵活性。
- 特性:
- 自定义生成规则,适合特定场景。
- 用户可以根据需要选择哈希算法、时间戳、或随机数生成 UUID。
- 应用场景:适用于需要完全自定义生成规则的应用,通常是在特定的业务场景中使用。
版本比较
| UUID 版本 | 生成方式 | 特性 | 适用场景 |
|---|---|---|---|
| v1 | 时间戳 + MAC 地址 | 唯一性高,可追溯 | 分布式系统,节点唯一标识 |
| v2 | v1 + UID/GID | 安全性增强 | 安全场景,DCE 应用 |
| v3 | 命名空间 + MD5 | 可重复 | 固定资源标识 |
| v4 | 随机数 | 随机性高 | 临时标识符,生成唯一 ID |
| v5 | 命名空间 + SHA-1 | 可重复,安全性高 | 固定资源标识,安全场景 |
| v6 | 时间戳 + MAC 地址 | 顺序优化 | 排序要求的应用 |
| v7 | 时间戳 + 高精度 | 高精度时间戳 | 高精度时间戳应用 |
| v8 | 自定义规则 | 最大灵活性 | 特定业务场景 |
每个版本的 UUID 都有其特定的用途和优势,可以根据应用需求来选择适合的版本。
UUID(通用唯一标识符)的不同版本的参考文献,可以从以下几个方面进行深入研究:
1. UUID 标准文档
- RFC 4122:
- 标题: "A Universally Unique Identifier (UUID) URN Namespace"
- 链接: RFC 4122
- 说明: RFC 4122 是 UUID 标准的原始文档,详细描述了 UUID 的生成方法、格式和不同版本的定义(包括 v1 到 v5)。对于 UUID v6、v7、v8 的标准化过程可能会参考此文档的内容。
2. UUID 的版本和生成算法
- "Universal Unique Identifier (UUID) Overview" by G. Neumark
- 说明: 该文章详细解释了 UUID 的生成方法,包括每个版本的特性和应用场景。
- 来源: 计算机科学和分布式系统相关的论文。
3. 具体版本的 UUID 相关研究
-
UUID v1(基于时间戳和节点)
- 文章: "Efficient Generation of Universally Unique Identifiers"
- 讨论了基于时间戳和机器地址生成唯一标识符的技术。
- 来源: 该研究主要集中在时间戳与 MAC 地址结合产生全球唯一标识符的有效性。
- 文章: "Efficient Generation of Universally Unique Identifiers"
-
UUID v3 和 v5(基于名称和哈希算法)
- 书籍: "Java: The Complete Reference" by Herbert Schildt
- 该书涵盖了 UUID v3 和 v5 的实现,使用 MD5 和 SHA-1 哈希算法来生成基于名称的唯一标识符。
- 参考: 介绍了 UUID v3 和 v5 在 Java 语言中的实际应用和生成方法。
- 书籍: "Java: The Complete Reference" by Herbert Schildt
-
UUID v6 和 v7(基于时间戳的优化版本)
- 论文: "UUID Version 6: A Time-Based UUID"
- 该论文讨论了 UUID v6 的设计思想和时间戳顺序优化的方案,旨在提高 UUID 在数据库中的排序性能。
- 来源: 分布式系统和数据库优化研究。
- 论文: "UUID Version 6: A Time-Based UUID"
4. 现代 UUID 和应用
-
"UUID v7: A High Precision Time-Based UUID"
- 说明: 该论文介绍了 UUID v7 版本的高精度时间戳特性,并讨论了其在高频交易、Web 服务等领域的应用前景。
- 来源: 现代 Web 服务和分布式系统的研究论文。
-
"Exploring the Impact of UUIDs on Distributed Systems"
- 说明: 该研究探讨了 UUID 在分布式系统中的应用,特别是 v1 和 v4 版本在确保唯一性和性能上的表现。
- 来源: 分布式计算和大数据系统的研究。
5. 关于 UUID v8 和自定义生成方式
- "Custom UUID Formats for Specific Business Needs"
- 说明: 讨论了 UUID v8 的自定义规则,介绍了如何根据业务需求设计自定义 UUID 格式。
- 来源: 特定领域的技术博客和论文,探讨了 UUID v8 的灵活性。
6. 在线资料与文档
-
- 链接: UUID.org
- 说明: 提供了 UUID 生成器、规范文档和不同版本的简介。虽然它并非学术资源,但可以作为了解 UUID 的一个工具。
-
ISO/IEC 11578:1996
- 标题: "Information technology — Open Systems Interconnection — Remote Procedure Call (RPC)"
- 说明: 该标准涉及到 UUID 在远程过程调用(RPC)中的应用,虽然侧重于早期的 UUID 标准,但对于理解 UUID 的实际应用有帮助。
7. 相关的技术书籍和资料
- "Distributed Systems: Concepts and Design" by George Coulouris
- 说明: 该书详细介绍了分布式系统中的 UUID 使用,涉及多个版本的 UUID 及其应用。
- "Designing Data-Intensive Applications" by Martin Kleppmann
- 说明: 本书深入讨论了在高可扩展性系统中的唯一标识符(包括 UUID)的使用,涵盖了不同 UUID 版本的使用场景。
通过参考这些文献,你可以更深入地理解 UUID 的工作原理、不同版本的特性以及它们在实际应用中的优势与局限。
Windows 系统中的 UUID(通用唯一识别码)在发展过程中经历了几个重要阶段,主要包括以下几点:
-
初始引入阶段:UUID 最初是由开放软件基金会(OSF)制定的,并在分布式计算环境中得到广泛应用。它的设计目的是在分布式系统中生成唯一的标识符,以避免不同节点生成相同标识符的可能性。
-
标准化阶段:随着 UUID 的广泛应用,不同组织开始提出自己的 UUID 标准。为了统一规范,Internet 工程任务组(IETF)发布了 RFC 4122 标准,定义了 UUID 的格式和生成规则。这一标准化工作使得 UUID 成为一个通用的标识符,并被广泛应用于各种系统和领域。
-
应用扩展阶段:UUID 在计算机系统中的应用逐渐扩展,不仅用于分布式系统中的实体唯一标识,还被应用于数据库、文件系统、软件开发等各个领域。在 Windows 系统中,UUID 被用于唯一标识硬件设备、系统组件、安装的软件等。
-
持续优化阶段:随着技术的发展和应用场景的不断变化,UUID 的生成算法和应用方式也在不断优化和完善。目前,UUID 仍然是一种非常可靠且广泛应用的唯一标识符。在 Windows 系统中,UUID 继续发挥着重要作用,帮助系统各部件进行唯一标识和识别。
Windows 中的 UUID 经历了从引入到标准化再到应用扩展的发展阶段,持续为系统提供唯一标识符的生成和管理功能。
在 Windows 系统中,UUID(通用唯一识别码)具有以下作用和价值:
-
唯一标识符:UUID 是一种全局唯一的标识符,能够确保在分布式系统或不同节点之间生成唯一的标识符。在 Windows 系统中,UUID 可用于唯一标识硬件设备、系统组件、安装的软件等各种实体。
-
避免冲突:由于 UUID 的唯一性,可以有效避免不同实体生成相同的标识符,从而避免数据冲突、混淆和错误。
-
安全性:UUID 的生成算法基于时间戳、节点信息和随机数等因素,具有极低的重复概率,因此可以提高系统的安全性,防止恶意攻击和数据篡改。
-
跨平台兼容:由于 UUID 是一个通用标识符标准,不受特定平台或系统限制,因此可以在不同系统和应用程序之间进行交换和共享,实现跨平台的数据交互。
-
跟踪和识别:通过 UUID,可以方便地跟踪和识别系统中的各种资源、对象和实体,帮助系统管理和监控。
-
持久性:UUID 生成后通常是固定不变的,即便系统重启或重新生成,UUID 仍然可以唯一标识相同的实体,具有持久性。
Windows 系统中的 UUID 具有确保唯一性、避免冲突、提高安全性、跨平台兼容、跟踪识别和持久性等多重作用和价值,为系统管理和数据处理提供了重要的支持。
在 Windows 中,UUID(Universally Unique Identifier,通用唯一识别码)是一个128位(16字节)的数字标识符,通常以文本形式表示为32个十六进制数字,以连字符分隔。UUID 的组成部分如下:
-
在 Windows 中,UUID(Universally Unique Identifier,通用唯一识别码)的组成部分可以分为以下五个部分:
-
时间戳部分:UUID 的前32位(8个十六进制数字)中的一部分通常包含时间戳信息。这个部分用于确保生成的 UUID 在同一节点上是唯一的。时间戳一般包括当前时间和日期等信息,以确保不同时间生成的 UUID 是不同的。
-
时钟序列部分:UUID 的前32位(8个十六进制数字)中可能包含一个时钟序列,用于防止在同一时间生成的 UUID 重复。这一部分通常包括节点标识和计数器,确保在同一节点上生成的 UUID 是唯一的。
-
节点信息部分:UUID 的后64位(16个十六进制数字)中通常包含节点信息,用于标识生成该 UUID 的节点或计算机。这部分信息可以是硬件 MAC 地址、IP 地址等,以确保在不同节点上生成的 UUID 是唯一的。
-
随机数部分:UUID 的生成还可能包括一定程度的随机数部分,以增加生成的 UUID 的随机性和唯一性。随机数部分确保即使在相同时间戳和节点信息下生成的 UUID 也是唯一的。
-
其他保留位:最后的几位可能会包含其他保留位或者特定标志位,用于区分不同类型的 UUID 或者其他特定用途。
-
UUID 的组成部分主要涉及时间戳、时钟序列、节点信息和随机数等内容,这些部分结合在一起确保了生成的 UUID 具有全局唯一性。通过合理设计和组织这些部分信息,UUID 可以在分布式系统中生成唯一标识符,并被广泛应用于各种系统和领域。
Windows 的 UUID(Universally Unique Identifier,通用唯一识别码)在系统中有许多应用场景,主要包括以下几个方面:
-
标识设备和硬件:在 Windows 系统中,UUID 可以用于唯一标识设备、硬件组件或外部设备。通过为每个设备分配一个唯一的 UUID,可以确保系统正确识别和管理每个设备,避免冲突和混乱。
-
标识软件和应用:UUID 也常用于标识安装的软件、应用程序或组件。每个软件或应用可以被分配一个唯一的 UUID,以便系统能够准确识别和跟踪不同的软件实体。
-
跟踪数据和对象:在数据库系统或分布式系统中,UUID 可以用于唯一标识数据记录、对象或实体。通过为每个数据记录生成一个 UUID,可以方便地跟踪和管理数据,实现数据的唯一性和一致性。
-
安全认证和授权:UUID 也可以用于安全认证和授权机制。在身份验证系统中,可以使用 UUID 作为用户或会话的唯一标识符,确保安全性和准确性。
-
分布式系统通信:在分布式系统中,UUID 可以用于唯一标识不同节点或实体,实现系统之间的通信和数据交换。通过在消息或请求中包含 UUID,可以确保消息的唯一性和准确传达。
-
版本控制和数据同步:在版本控制系统或数据同步场景中,UUID 可以用于标识不同版本的文件、数据或配置项。通过比较不同版本的 UUID,可以确定数据的变化和同步更新。
Windows 的 UUID 在各种系统和应用中都有广泛的应用场景,主要用于唯一标识实体、数据和对象,实现系统的唯一性、安全性和可靠性。通过合理利用 UUID,可以简化系统设计、提高数据管理效率,并确保系统正常运行和互操作。
PowerShell 查询 Windows 的 UUID(Universally Unique Identifier,通用唯一识别码)可以通过以下命令来实现:
Get-WmiObject Win32_ComputerSystemProduct | Select-Object -ExpandProperty UUID
运行这个命令后,你将在 PowerShell 窗口中看到计算机的 UUID。
在 Windows 系统中,UUID(Universally Unique Identifier,通用唯一识别码)通常与注册表(Registry)相关联。在 Windows 中,用于生成和管理 UUID 的相关 API 主要包括 CoCreateGuid 函数。
CoCreateGuid 是 Windows API 中的一个函数,用于创建一个新的 GUID(全局唯一标识符,与 UUID 类似)。GUID 是 Microsoft 对 UUID 的实现,具有相同的功能。通过调用 CoCreateGuid 函数,可以在 Windows 系统中生成一个全局唯一的标识符,用于标识对象、组件、应用程序等。
在 Windows 系统中,生成的 GUID/UUID 通常以字符串形式表示,例如:"550e8400-e29b-41d4-a716-446655440000"。这些标识符可以用于各种目的,如唯一标识应用程序、组件、设备等。
如果你需要在自己的应用程序中生成 UUID,可以使用 CoCreateGuid 函数来实现。该函数通常在 Windows 开发中的 C++ 或 C# 代码中调用。通过调用这个函数,你可以获得一个全局唯一的标识符,用于你的应用程序中的标识和跟踪。
Windows 注册表中,可以使用以下路径来查找 UUID:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MachineGuid
在这个路径下,可以找到一个名为 "MachineGuid" 的字符串值,其包含当前计算机的 UUID。你可以使用注册表编辑器(regedit.exe)来查看和修改此值。
如果你希望通过 PowerShell 来查询该值,可以使用以下命令:
Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Cryptography" -Name "MachineGuid"
这个命令将返回一个对象,其中包含名称为 "MachineGuid" 的字符串值,其值即为该计算机的 UUID。
PowerShell 中,你可以使用以下命令来查询 Windows 中的 GUID(全局唯一标识符):
[System.Guid]::NewGuid()
通过运行上述命令,PowerShell 将生成一个新的随机 GUID,并将其显示在命令行中。这个 GUID 可以用作唯一标识符,用于各种目的,如标识对象、组件、应用程序等。
如果你想要将生成的 GUID 存储到一个变量中以便后续使用,可以按照以下方式进行:
$myGuid = [System.Guid]::NewGuid()
Write-Output $myGuid
这样就会将生成的 GUID 存储在 $myGuid 变量中,并将其输出到命令行中。
PowerShell 中查询所有用户账户的安全标识符(Security Identifier,SID),可以使用以下命令:
$users = Get-WmiObject Win32_UserAccount
foreach ($user in $users) {
Write-Host "User: $($user.Name), SID: $($user.SID)"
}
这个命令将列出所有用户账户及其对应的SID。请注意,运行此命令需要管理员权限。
在 PowerShell 中,您可以使用 WMI(Windows Management Instrumentation)来获取系统的 UUID(Universally Unique Identifier)。UUID 通常用于唯一标识计算机系统。以下是一些示例,展示如何在不同版本的 Windows 中使用 PowerShell 获取 UUID。
示例 1:获取系统 UUID
您可以使用以下命令获取当前计算机的 UUID:
Get-WmiObject -Class Win32_ComputerSystemProduct | Select-Object -Property UUID
示例 2:获取虚拟机的 UUID
如果您在虚拟机中运行 PowerShell,可以使用以下命令获取虚拟机的 UUID:
Get-WmiObject -Class Win32_BIOS | Select-Object -Property SerialNumber
示例 3:获取所有计算机的 UUID(远程)
如果您需要获取网络上其他计算机的 UUID,可以使用以下命令(确保您有适当的权限):
$computers = @("Computer1", "Computer2") # 替换为目标计算机名
foreach ($computer in $computers) {
Get-WmiObject -Class Win32_ComputerSystemProduct -ComputerName $computer |
Select-Object -Property Name, UUID
}
示例 4:使用 CIM 命令
在较新的 PowerShell 版本中,您可以使用 CIM 命令来获取 UUID:
Get-CimInstance -ClassName Win32_ComputerSystemProduct | Select-Object -Property UUID
注意事项
- 权限:确保您有足够的权限来访问远程计算机的 WMI 信息。
- PowerShell 版本:上述命令在 PowerShell 5.1 和更高版本中均可用,但在 PowerShell Core(6.x及以上)中,建议使用 CIM 命令。
示例 5:获取多个属性的 UUID 信息
如果您想获取更多关于计算机的信息,可以同时选择多个属性:
Get-WmiObject -Class Win32_ComputerSystemProduct |
Select-Object -Property Name, UUID, Vendor, Version
示例 6:导出 UUID 信息到 CSV 文件
您可以将获取的 UUID 信息导出到 CSV 文件,以便后续分析:
Get-WmiObject -Class Win32_ComputerSystemProduct |
Select-Object -Property Name, UUID |
Export-Csv -Path "C:\UUIDs.csv" -NoTypeInformation
示例 7:获取所有虚拟机的 UUID(Hyper-V)
如果您在 Hyper-V 环境中,可以使用以下命令获取所有虚拟机的 UUID:
Get-VM | Select-Object -Property Name, Id
示例 8:使用 PowerShell Remoting 获取远程 UUID
如果您启用了 PowerShell 远程功能,可以使用 Invoke-Command 来获取远程计算机的 UUID:
$computers = @("Computer1", "Computer2") # 替换为目标计算机名
Invoke-Command -ComputerName $computers -ScriptBlock {
Get-WmiObject -Class Win32_ComputerSystemProduct |
Select-Object -Property Name, UUID
}
示例 9:使用 Get-WmiObject 和 Where-Object 过滤 UUID
如果您只想获取特定条件下的 UUID,例如只获取特定制造商的计算机:
Get-WmiObject -Class Win32_ComputerSystemProduct |
Where-Object { $_.Vendor -eq "Microsoft Corporation" } |
Select-Object -Property Name, UUID
示例 10:获取 BIOS UUID
有时,您可能需要从 BIOS 中获取 UUID,您可以使用以下命令:
Get-WmiObject -Class Win32_BIOS |
Select-Object -Property SerialNumber, SMBIOSBIOSVersion

浙公网安备 33010602011771号