部署 Powershell 脚本并通过组策略在关机时运行

部署 Powershell 脚本并通过组策略在关机时运行

我有一个 Powershell 脚本,需要将其部署到我的客户端电脑上,然后在关机时运行它。

我知道有可能在关机时运行 ̶P̶w̶e̶r̶s̶h̶e̶l̶l̶ ̶s̶c̶r̶i̶p̶t̶s̶(我似乎也遇到了这个问题),问题是脚本使用“本地”路径,例如“$env:LOCALAPPDATA”和“C:\Windows\system32\someprogram.exe”,所以我认为我需要先将其复制到客户端的电脑上,然后因为路径而让它在关机时运行。

首先,通过组策略部署 Powershell 脚本以在关机时运行的正确方法是什么?

这是应该做的事情吗?

答案1

关于 powershell 脚本中的本地环境变量或路径,脚本文件位于何处并不重要,重要的是脚本在何处执行。

意思是,你只需要确保路径和变量存在于要执行脚本的机器上。然后,Powershell 将使用“他的”本地 C:\Windows\System32\someprogram.exe,而不是脚本文件所在的机器上的 C:\Windows\System32\someprogram.exe。

编辑: 当然,想要执行脚本的客户端电脑必须以某种方式访问​​该文件,因此您必须将其放在具有适当安全权限的网络共享中,或者,如果您使用 GPO 进行执行,则放在 sysvol 共享中。

编辑2:

现在通过 GPO 传递关机 powershell 脚本的完整方法:

  • 如果您想使用新的 GPO,请创建它。
  • 创建您想要传递的脚本。
  • 在其中一个 DC 上打开组策略编辑器,然后编辑要用于关机脚本的 GPO
  • 导航至“计算机配置 - 策略 - Windows 设置 - SCripts(启动/关机) - 关机”
  • 单击“添加”-“浏览”。现在您会看到 Microsoft 希望您放置脚本的文件夹的共享路径。您可以使用此路径,也可以使用网络中具有适当用户权限的任何其他路径。
  • 将脚本复制到您想要的位置,最好使用 Windows 预定义的路径
    • 如果您想使用此预定义路径,您必须知道您看到的共享路径是写保护的。因此,您必须使用本地 sysvol 路径。只需将其替换\\yourdomain.local\SYSVOL\yourdomain.localC:\Windows\SYSVOL\Domain
  • 现在在 GPO 窗口中,您可以选择要执行的脚本 - 这里您必须使用共享路径,而不是本地路径!
  • 测试时,还请注意,关闭组策略对象后会保存它。因此,如果您更改它但不关闭该对象,则更改不会生效!

相关内容