powershell 7.7中的new-guid默认生成uuidv7;如果脚本仍需要随机uuidv4,应显式调用[guid]::newguid()。先确认脚本实际由7.7运行,再选择生成方式并检查版本位,避免升级后仍按旧默认值处理标识符。
确认实际运行时
$PSVersionTable.PSVersion Get-Command New-Guid
不要把Windows PowerShell 5.1或旧版pwsh的结果当成7.7行为。计划任务、终端和服务可能调用不同可执行文件,应在实际执行脚本的会话里检查。

Microsoft Learn说明New-Guid自7.7起默认生成UUIDv7
按用途选择UUID版本
$orderedId = New-Guid $randomId = [guid]::NewGuid() $explicitV7 = [guid]::CreateVersion7()
New-Guid返回Guid对象;UUIDv7包含毫秒精度的时间信息,适合需要按生成时间排序的标识。UUIDv4使用随机布局。可排序不等于业务事件严格排序,也不能把任意UUID当成密码或访问令牌。
查看版本位和保持输入语义
$orderedId.ToString().Split('-')[2][0]
$randomId.ToString().Split('-')[2][0]标准文本格式的第三组首个十六进制字符标识版本。上述两个检查分别对应7和4;它们用于检查对象的版本,不是在证明随机性或业务唯一性。

Microsoft Learn展示通过.NET API显式生成不同UUID版本
需要把既有字符串变成Guid对象时,可使用New-Guid -InputObject或Guid解析方法;解析不会把旧UUID重新生成成v7。更新脚本后还应核对数据库字段、接口与日志消费方是否只接受特定版本,不能只检查字符串长度。

















