繁体   English   中英

运行Powershell脚本,重新启动然后继续运行

[英]Running a Powershell script, restarting and then continue to run

我只是从Powershell脚本编写的最基础开始,并且正在考虑按照一组指令创建脚本,然后重新启动并继续运行脚本的其余部分。

脚本的第一部分对注册表,防火墙和ip / dns设置进行更改,然后重命名服务器(win2012)。 然后需要重新启动以继续安装广告域服务和林创建。

我环顾四周,但并不真正理解这些概念。 任何人都可以推荐一种非常简单的方法来实现重启和恢复。

Windows中已经内置了最简单的方法。 有许多注册表项,您可以使用它们来配置一些在重新启动后将执行一次的操作。

对于您的用例,您可能想要使用RunOnce键之一。 与往常一样, 详尽的文档可以在MSDN页面中找到,其实质是:

[...] RunOnce注册表项导致程序在用户每次登录时运行。 键的数据值为命令行。 通过添加形式为description-string = commandline的条目来注册要运行的程序。 您可以在一个键下写入多个条目。 如果在一个特定的密钥下注册了多个程序,则这些程序的运行顺序不确定。

Windows注册表包括[...]:

  • HKEY_LOCAL_MACHINE \\ SOFTWARE \\微软\\的Windows \\ CurrentVersion \\的RunOnce
  • HKEY_CURRENT_USER \\软件\\微软\\的Windows \\ CurrentVersion \\的RunOnce

默认情况下,在运行命令行之前会删除RunOnce键的值。 您可以在RunOnce值名称前添加一个感叹号(!),以将值的删除推迟到命令运行之后。 如果没有感叹号前缀,则如果RunOnce操作失败,则下次启动计算机时,将不会要求关联的程序运行。

默认情况下,在安全模式下启动计算机时,这些键将被忽略。 RunOnce键的值名称可以带有星号(*)前缀,以强制程序即使在安全模式下也可以运行。

因此,基本上,您唯一需要做的就是在该reg键下创建一个条目,该条目调用powershell并将脚本作为参数传递。

set-location HKCU:\Software\Microsoft\Windows\CurrentVersion\RunOnce
new-itemproperty . MyKey -propertytype String -value "Powershell c:\temp\myscript.ps1"

在HKLM以下使用RunOnce可以为任何用户运行该脚本,但是需要更高的权限才能写入注册表项。 相反,HKCU绑定到当前用户,但不需要其他权限。

要重新启动,只需调用Windows shutdown命令 ,例如

shutdown /r 

要使用任务计划程序在重启/崩溃后自动恢复Powershell工作流,请参阅我的详细stackoverflow答案: https : //stackoverflow.com/a/31100397/1487851

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM