CreeperAWA 只是懒得下了,顺手让 DeepSeek 生成完就复制链接丢到这里来了。
等等,才发现 UniversalTime.ps1 少了很多东西,我去让它返工(
反好了

flowchart TD
subgraph CI [ClassIslandConnecter.ps1]
A1[开始] --> A2{PowerShell 版本 ≥ 7?}
A2 -- 否 --> A3[报错并退出]
A2 -- 是 --> A4[读取 ClassIslandConnecter.json<br>获取 Debug 和缓存 Settings.json 路径]
A4 --> A5{Debug 模式?}
A5 -- 是 --> A6[控制台可见 + 写日志]
A5 -- 否 --> A7[隐藏窗口重新启动自己]
A7 --> A8[请求管理员权限]
A6 --> A8
A8 -- 失败 --> A9[提示并退出]
A8 -- 成功 --> A10{缓存路径存在且有效?}
A10 -- 是 --> A11[从缓存读取 TimeOffsetSeconds]
A11 -- 成功 --> A12[得到偏移值]
A10 -- 否/失败 --> A13[检测 ClassIsland 进程<br>ClassIsland.Desktop / ClassIsland]
A13 --> A14[根据进程路径定位 Settings.json<br>分别读取两种模式 TimeOffsetSeconds]
A14 --> A15{至少一种模式成功?}
A15 -- 是 --> A16{两种都成功且不一致?}
A16 -- 是 --> A17[警告,优先使用非兼容模式值]
A16 -- 否 --> A18[使用唯一有效值]
A17 --> A19[确定偏移值和 Settings.json 路径]
A18 --> A19
A15 -- 否 --> A20[通过 classisland://app/ 启动 ClassIsland]
A20 --> A21[循环等待最多 15 秒]
A21 --> A22{检测到进程且配置文件有效?}
A22 -- 是 --> A23[获取偏移值,杀死临时进程]
A23 --> A19
A22 -- 否 --> A24[弹出图形错误提示框]
A24 --> A25[退出 2]
A12 --> A26[保存配置到 ClassIslandConnecter.json]
A19 --> A26
A26 --> A27[调用 UniversalTime.ps1<br>传递 -DelaySeconds 偏移值]
end
subgraph UT [UniversalTime.ps1 - 完整参数逻辑]
B1[接收参数] --> B2{参数集判断}
B2 -- 存在 -Restore --> B3_restore[还原模式]
B2 -- 存在 -TestCompensation --> B3_test[测试模式]
B2 -- 默认(无 -Restore 且无 -TestCompensation) --> B3_default[偏移模式]
%% 还原模式分支
B3_restore --> B4_restore[读取 NtpServer<br>优先级: 命令行 > 配置文件 > ntp.aliyun.com]
B4_restore --> B5_restore[关闭 Windows 时间同步<br>Disable-TimeSync]
B5_restore --> B6_restore[向 NTP 服务器请求精确 UTC]
B6_restore --> B7_restore[目标时间 = 精确 UTC]
B7_restore --> B8_restore[设置系统时间]
B8_restore --> B9_restore[启用 Windows 时间同步<br>Enable-TimeSync]
B9_restore --> B10_restore[退出 0]
%% 测试模式分支
B3_test --> B4_test[读取 NtpServer<br>优先级同还原模式]
B4_test --> B5_test[关闭 Windows 时间同步<br>Disable-TimeSync]
B5_test --> B6_test[向 NTP 服务器请求精确 UTC]
B6_test --> B7_test[目标时间 = 精确 UTC]
B7_test --> B8_test[设置系统时间]
B8_test --> B9_test[打开 time.is 网页]
B9_test --> B10_test{是否包含 -GUI 开关?}
B10_test -- 是 --> B11_test_gui[弹出图形对话框<br>输入补偿值(支持十分位步进)]
B10_test -- 否 --> B11_test_console[控制台 Read-Host 输入补偿值]
B11_test_gui --> B12_test[将补偿值 + 当前 NTP 服务器<br>保存到 UniversalTime.json]
B11_test_console --> B12_test
B12_test --> B13_test[启用 Windows 时间同步<br>Enable-TimeSync]
B13_test --> B14_test[退出 0]
%% 偏移模式(Default)分支
B3_default --> B4_default[读取 NtpServer<br>优先级同前]
B4_default --> B5_default[读取 CompensationSeconds<br>优先级: 命令行 > 配置文件 > 0(警告)]
B5_default --> B6_default[读取 DelaySeconds<br>默认为 0]
B6_default --> B7_default[关闭 Windows 时间同步<br>Disable-TimeSync]
B7_default --> B8_default[向 NTP 服务器请求精确 UTC]
B8_default --> B9_default[目标时间 = 精确 UTC + DelaySeconds + CompensationSeconds]
B9_default --> B10_default[设置系统时间]
B10_default --> B11_default[保持 Windows 时间同步关闭]
B11_default --> B12_default[退出 0]
end
A27 --> B1
B10_restore --> C1[返回退出码给 ClassIslandConnecter]
B14_test --> C1
B12_default --> C1
C1 --> C2[脚本结束]