【问题标题】:Invoke-command on remote computer with reboot在远程计算机上调用命令并重新启动
【发布时间】:2020-02-12 22:13:02
【问题描述】:

我正在构建一个执行以下操作的脚本

  1. 使用 Powershell 远程从 Hyper-V 连接到新创建的 VM 模板
  2. 更改 IP
  3. 更改计算机名
  4. 重新启动计算机名称才能生效
  5. 安装 AD 角色
  6. 创建域

大多数步骤似乎都有效,我只卡在第 4 步。

我使用以下行。

Invoke-Command -FilePath C:\Support\createdomain.ps1 -VMName TEMPLATE-DC

它要求提供 VM 的凭据,然后继续执行这些操作。直到我重新启动。

Restart-Computer -Wait -For PowerShell -Timeout 300 -Delay 2

我还尝试了以下操作,这会重新启动 VM,但也会停止 Powershell 会话并且不运行 Start Sleep

Restart-Computer -Force
Start-Sleep -s 300

所以我的问题是:如何在远程机器上运行 powershell 脚本,在这种情况下是虚拟机。并重新启动并等待它重新启动以恢复脚本?

这是我得到的错误

The background process reported an error with the following message: "The Hyper-V socket target process has ended.".
+ CategoryInfo          : OperationStopped: (TEMPLATE-DC:String) [], PSRemotingTransportException
+ FullyQualifiedErrorId : JobFailure
+ PSComputerName        : TEMPLATE-DC

【问题讨论】:

  • 您正在更改系统的 IP 地址和名称。不确定您希望如何与该虚拟机保持连接。
  • 我使用 VMName 参数连接到 powershell,因此它连接到 vmname 而不是计算机名称或 IP 地址。事实上,VM 的虚拟交换机在其自己的网络中是私有的。

标签: powershell reboot


【解决方案1】:

我建议将该脚本分成三部分。

  1. 更新系统名称和 IP 地址
    • 等到系统可以通过循环访问。在继续之前确保 vm 可以访问
  2. 代理可访问并重新启动后重新连接。
    • invoke-command 重启系统。
    • 等待系统再次访问。虚拟机可访问后,
  3. 安装角色并配置域。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 2021-12-16
    • 2013-09-18
    相关资源
    最近更新 更多