我刚刚开始介绍Powershell脚本的基础知识,我正在研究为一组指令创建脚本,然后重新启动并继续运行脚本的其余部分。
脚本的第一部分更改注册表,防火墙和ip / dns设置,然后重命名服务器(win2012)。然后需要重新启动才能继续安装广告域服务和林创建。
我已经环顾四周,但并不真正理解这些概念。任何人都可以推荐一种非常简单的方法来实现重启和恢复。
答案 0 :(得分:3)
最简单的方法已经内置到Windows中。有一堆注册表项,您可以使用它们来配置一些重启后要执行的操作。
对于您的用例,您可能希望使用其中一个RunOnce
键。与往常一样,exhaustive documentation可以在MSDN页面中找到,这里是它的本质:
[...] RunOnce注册表项会在每次用户登录时运行程序。密钥的数据值是命令行。通过添加形式description-string = commandline的条目来注册要运行的程序。您可以在密钥下编写多个条目。如果在任何特定密钥下注册了多个程序,则这些程序运行的顺序是不确定的。
Windows注册表包含[...]:
- HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \的RunOnce
- HKEY_CURRENT_USER \软件\微软\的Windows \ CurrentVersion \的RunOnce
默认情况下,在运行命令行之前删除RunOnce键的值。您可以使用感叹号(!)为RunOnce值名称添加前缀,以推迟删除该值,直到命令运行为止。如果没有感叹号前缀,如果RunOnce操作失败,则下次启动计算机时不会要求关联的程序运行。
默认情况下,在安全模式下启动计算机时会忽略这些键。 RunOnce键的值名称可以带星号(*)作为前缀,以强制程序在安全模式下运行。
所以基本上你唯一需要做的就是在那个调用powershell的reg键下创建一个条目,并将你的脚本作为参数传递。
set-location HKCU:\Software\Microsoft\Windows\CurrentVersion\RunOnce
new-itemproperty . MyKey -propertytype String -value "Powershell c:\temp\myscript.ps1"
使用HKLM下方的RunOnce
将为任何用户运行该脚本,但需要提升权限才能编写注册表项。相比之下,HKCU绑定到当前用户,但不需要额外的权限。
要重新启动,只需拨打Windows shutdown
command,例如
shutdown /r
答案 1 :(得分:0)
要在使用任务计划程序重启/崩溃后自动恢复powershell工作流程,请在此处查看我的详细stackoverflow答案:https://stackoverflow.com/a/31100397/1487851