如何从 powershell/command-line 创建 windows 关机脚本?

如何从 powershell/command-line 创建 windows 关机脚本?

我读了介绍如何使用计算机/用户启动/关闭脚本的 TechNet 页面,这很好,但我想通过命令行创建这些脚本(而不必在 gpedit.msc 中单击)。

看起来像脚本ps脚本%SYSTEMROOT%\System32\GroupPolicy\Machine\Scripts指定要运行的脚本,但这些脚本直到运行后才存在管理控制台第一次。直接创建和编辑这些内容安全吗?还是我需要使用 Set-GPO 或类似的东西?谢谢!

答案1

组策略假定您处于 Active Directory 域环境中,在这种情况下,组策略对象 (GPO) 被集中管理并分配给计算机。对于单个计算机,可以使用本地安全策略来产生与集中管理的 GPO 类似的结果。

通常在 Active Directory 中,登录脚本被分配给用户对象,但您也可以通过组策略执行此操作。

如果您不使用 Active Directory,或者只想在相对较少的计算机上配置它,那么您可以使用任务计划程序通过 PowerShell 执行此操作。使用任务计划程序,您可以创建在启动、会话结束或登录时运行的事件。

答案2

你能使用关机命令吗?

Technet 关机命令语法

答案3

我假设您想要一个关机事件?

发生关机事件时,基本上不可能运行脚本,注销是的,但关机不行。我有一个 C# 应用程序可以监听关机消息,但是当消息到达时,不可能产生任何新进程,并且经常会错过该事件。

  1. Windows 将 WM 关闭消息发送到所有顶层窗口 WM_CLOSE 等 - 但对所有桌面程序按顺序发送。如果您是最后一个收到它的人,那么您就没有时间了。

  2. Windows 有一个进程加载/卸载模块或 dll 锁,这意味着当应用程序终止或卸载时,应用程序无法在同一时刻加载 - 这是一个单线程“共享内容”保护问题。这样做是为了节省 RAM,但在操作系统繁忙时减慢速度,这给我们带来了麻烦。

  3. Windows 有一个内部标志,表示不要启动我们正在终止的任何新进程或脚本。这意味着无论监听什么,都只能写入远程文件或使用 TCP 连接或类似方式让某人知道它正在关闭。您通常不能在关机期间运行任何新脚本。

相关内容