【问题标题】:Powershell resume script after reboot重启后Powershell恢复脚本
【发布时间】:2016-08-09 22:22:17
【问题描述】:

我目前正在做一个学校作业,我必须制作几个 powershell 脚本来执行 windows server 2012 r2 的基本配置。第一个脚本需要执行以下操作:

o 服务器名称:WDC o IP 地址:192.168.1.45 o 子网:255.255.255.0 o 网关:192.168.1.1 o DNS:192.168.1.1
o 管理员密码:Admin2016 o Primaire DNS 服务器 8.8.8.8 o Secundaire DNS 服务器 192.168.1.45 o 晋升为 dc 哦...

问题是服务器需要在名称更改后重新启动,并且脚本在此之后无法继续。

我知道我可以通过例如拆分脚本并在重新启动后在注册表中使用 runonce 继续第二部分来做到这一点,但我的老师发誓可以在一个 ps1 文件中执行此操作,而且他说它应该可以在重新启动后自动登录,然后从重新启动前停止的位置恢复相同的脚本文件。

这个脚本必须在本地机器上执行,所以我不能使用工作流。我一直在寻找大量的时间,但似乎找不到任何合适的解决方案来完全按照老师的要求进行操作。

希望有人能提供帮助。

干杯

【问题讨论】:

  • 要仅使用一个脚本,请将参数(例如 isContinuation)传递给脚本。在脚本中,如果 isContinuation 为 false,则运行第一部分。如果是真的,运行第二部分。

标签: windows powershell windows-server-2012-r2


【解决方案1】:

这样恢复是不可能的。但是您可以确定需要重新启动的更改是否已经完成,并且不要重复这些设置的步骤。本质上,检查 if 您需要对某个步骤进行调整,然后才需要重新启动。在第二次运行期间,您的脚本不需要重新应用需要重新启动的新设置,并且应该能够有效地从上次运行中断的地方继续。

至于自动登录和脚本重新运行部分,都是可以解决的。有一种使用注册表设置自动登录用户的解决方案。您需要将该登录名的密码添加到注册表中,因此这可能是一个安全问题。并且可以使用 Windows 任务计划程序在登录后运行脚本。除了使用固定时间安排之外,调度程序还支持在某些事件之后运行任务。如果您使用这些事件,则会有延迟,可能长达几分钟。如果这不可接受,您还可以使用指向用于自动登录的用户帐户的 StartUp 文件夹中的脚本的链接。

自动登录与注册表项一起使用。您需要 HKLM 命名空间中的几个键:

Path: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
Value Name: AutoAdminLogon
Value Type: REG_SZ
Value data: 1

Path: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
Value Name: DefaultUserName
Value Type: REG_SZ
Value data: <name of the user you want to log on>

Path: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
Value Name: DefaultPassword
Value Type: REG_SZ
Value data: <password of the user you want to log on>

如果这是域用户

Path: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
Value Name: DefaultDomainName
Value Type: REG_SZ
Value data: <name of the domain the user belongs to>

【讨论】:

  • 感谢您的帮助!这解决了我问题的第一部分。我已经尝试过 Winlogon 部分,但它似乎对我不起作用。我需要以管理员身份自动登录,所以我使用了用户名管理员,但我仍然需要在重新启动后输入我的密码。重新启动后,注册表似乎也没有保存编辑。
  • 如果您的注册表设置在重新启动后不存在,那么它们可能一开始就不会保存 - 因此在需要自动登录时不存在。我首先会尝试找出为什么您的注册表设置不粘,这可能是这里的全部问题。
  • @DriesVandenBergh 不确定您是如何进行注册表更改的,但如果您使用regedit /s &lt;filename&gt;.reg 然后立即重新启动它并不总是会保存更改。尝试start /wait regedit /s &lt;filename&gt;.reg 或在脚本中更早地执行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2016-11-16
  • 2018-06-08
相关资源
最近更新 更多