我使用 Windows 7(也是 Windows XP)的一部分的组策略编辑器来运行所谓的关闭脚本,每次系统关闭或重新启动时都会自动执行该脚本。我的问题是:我需要在我的脚本中知道用户是否选择了关闭系统,或者他是否选择了重新启动。这两个操作都会使 Windows 运行关闭脚本,但是在脚本执行期间如何确定实际执行了哪个操作?
在关机期间,有什么方法可以知道系统当前是执行关机还是重新启动?
我使用 Windows 7(也是 Windows XP)的一部分的组策略编辑器来运行所谓的关闭脚本,每次系统关闭或重新启动时都会自动执行该脚本。我的问题是:我需要在我的脚本中知道用户是否选择了关闭系统,或者他是否选择了重新启动。这两个操作都会使 Windows 运行关闭脚本,但是在脚本执行期间如何确定实际执行了哪个操作?
在关机期间,有什么方法可以知道系统当前是执行关机还是重新启动?
在pre-vista 系统上,您可以查询注册表:
下找到的关机设置DWORDHKCU\Software\Microsoft\Windows\CurrentVersion\Explorer
存储了从当前用户的 Shut Down Windows 对话框的列表中最近选择的设置。
在更新的系统上,您可以在关闭脚本中查询系统事件日志,如下所示:
$systemstateentry = get-eventlog -LogName system -Source User32 | ?{$_.eventid -eq 1074} | select -first 1
switch -regex ($systemstateentry.message)
{
".*restart.*" {"restart"}
".*power off.*" {"power off"}
default {"unknown"}
}