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

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

我知道它可以运行PowerShell脚本在关机(好像我有问题也与此),问题是脚本使用“本地”的path,例如“$ ENV:LOCALAPPDATA”和“C:\ WINDOWS \ SYSTEM32 \ someprogram.exe“,所以我想我需要先在客户端的PC上拷贝它,然后使它在closures时因为path而运行。

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

这是应该做的方式吗?

关于PowerShell脚本中的本地环境variables或path,脚本文件的位置并不重要,而是在何处执行。

这意味着,你只需要确保path和variables存在于你想要执行脚本的机器上。 然后,Powershell将使用“他的”本地C:\ Windows \ System32 \ someprogram.exe,而不是脚本文件所在机器上的那个。

编辑:当然,想要执行脚本的客户端电脑必须以某种方式到达文件,所以你必须把它放在一个networking共享具有适当的安全权限,或者,如果你使用GPO执行,在sysvol共享。

EDIT2:

现在完成通过GPO交付closuresPowerShell脚本的方法:

  • 如果您想使用新的GPO,请创build它。
  • 创build您想要传递的脚本。
  • 在您的某个DC上打开组策略编辑器,然后编辑要用于closures脚本的GPO
  • 导航到“计算机configuration – 策略 – Windows设置 – SCript(启动/closures) – 关机”
  • 点击“添加” – “浏览”。 现在您可以看到Microsoft要求您放置该脚本的文件夹的共享path。 您可以使用此path或具有适当用户权限的networking中的任何其他path。
  • 将脚本复制到您想要的位置,最好是使用Windows预定义的path
    • 如果你想使用这个预定义的path,你必须知道你看到的共享path是写保护的。 所以你必须使用本地sysvolpath。 只需将C:\Windows\SYSVOL\Domainreplace\\yourdomain.local\SYSVOL\yourdomain.local
  • 现在在GPO-Window中,您可以select要执行的脚本 – 在这里您必须使用共享path,而不是本地path!
  • 在testing的同时,还要注意组策略对象在closures之后保存。 所以,如果你改变它,不closures对象,更改将不会影响!