完全不懂 powershell 和脚本编程,就到这里。
我已经弄清楚如何使用 set-date cmdlet 通过 powershell 设置日期和时间。
但是,我不知道如何以管理员权限执行脚本在 Windows 登录之前或者以任何方式在启动过程中尽快完成。
(我需要让虚拟机保持时间冻结,但 Hyper-V 似乎并不真正遵守时间同步设置,或者 Windows 有办法解决这个问题。以防万一:是的,我还禁用了 Windows 中的自动时间同步,甚至通过 hosts 文件阻止了 time.windows.com,以防万一)
有什么提示吗?谢谢
答案1
您误解了 Hyper-V 时间同步集成服务的作用及其运行方式。如果启用,它会将客户机时间同步到主机当客人正在运行时。当客户机关闭时,它对客户机没有影响。启动时,客户机直接从 Hyper-V 主机获取时间,而不是从集成服务获取时间。如果您想“冻结”客户机时间,则需要将客户机置于已保存状态。当您从已保存状态恢复客户机时,其时间将是您保存它的时间。
答案2
我设法通过以下方式设置登录日期:
schtasks /create /tn "Set Date" /tr c:\setdate.bat /sc onstart /ru SYSTEM
使用一个简单的批处理文件来设置日期。
然而我发现了一些更有趣的事情。正如我所说,系统不知何故一直在同步日期,我不知道如何以及为什么。
最终的解决方案是:
- 运行 secpol.msc(本地安全策略控制台)
- 本地策略->安全选项->用户权限分配
- 从“更改系统时间”中删除所有用户(包括本地服务)