【问题标题】:Shutdown\Startup Guest VM关闭\启动访客虚拟机
【发布时间】:2014-09-29 08:44:15
【问题描述】:

运行 Hyper-V Windows 2000 Server 来宾 VM 的 Windows Server 2008 R2 主机。

我正在寻找一种简单的方法(批处理、VBS 或 PowerShell 命令)来关闭来宾 VM,然后在我选择的时间启动它。

我已经安装了“Hyper-V 的 PowerShell 管理库”,并且只有在右键单击 PowerShell 并选择“以管理员身份运行”后才能成功使用以下命令:

导入模块“C:\Program Files\modules\HyperV\HyperV.psd1” shutdown-vm "VM_NAME" -force

但是,无论我做什么,我都无法将此作为计划任务运行。它不会出错,但不会运行。

我尝试了几种使用“Start-Process powershell -verb runas”的组合,如果我手动将该命令输入到 PowerShell 中,我假设会在管理上下文中运行另一个 PowerShell 框,但我无法使用这些组合计划任务。

【问题讨论】:

    标签: powershell


    【解决方案1】:

    首先,命令是 Stop-VM 而不是 Shutdown-VM,但我怀疑您还会遇到其他问题,所以让我分解一下。

    您可以在尝试运行的 PowerShell 脚本中跳过一个步骤。导航到路径C:\Windows\System32\WindowsPowershell\v1.0\。应该有一个Modules 目录,如果没有使用您的管理员凭据添加一个。如果确实存在,请打开它以查看 Hyper-V 模块目录是否在其中。如果不是,请再次使用管理员凭据将其复制到那里。结构应该是这样的

    C:\Windows\System32\WindowsPowershell\v1.0\
    |-- Modules
      |-- Hyper-V
        |-- Hyper-V.Format.ps1xml
        |-- Hyper-V.Types.ps1xml
        |-- Hyper-V.psd1
    

    这将在您启动 PowerShell 时自动在所有帐户上加载此模块。

    接下来,确保您正确设置了执行策略。您的脚本可能正在停止,因为 Execution Policy 设置为高安全级别。这取决于您在工作的任何系统上的安全级别。遵循您需要的任何准则,但您可以使用管理员凭据以管理员身份打开 PowerShell 会话并键入以下内容:

    Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted -Force
    

    无论当前 PS 会话是否关闭,这都会永久更改该管理员用户的执行策略。

    最后,以管理员身份打开任务计划程序并创建一个新任务。将运行任务的用户更改为您用于设置执行策略的用户。

    您可以创建一个脚本文件并在为任务调度程序运行程序时使用它,也可以将 PowerShell.exe -Command 参数与脚本块一起使用

    # So either your desired commands in a file
    # .\script.ps1
    Stop-VM <VM Name>
    
    #This is what the command in task scheduler would look like
    powershell.exe -File "absolute\path\to\script.ps1"
    
    # Or use a command directly
    powershell.exe -Command "& {Stop-VM <VM-Name>}"
    

    应该是你需要做的。如果不让我知道,我可以修改。

    【讨论】:

      猜你喜欢
      • 2013-12-31
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多