运行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框,我假设但是我没有一个可以使用预定的任务。
答案 0 :(得分:0)
首先,命令是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>}"
这个应该就是你需要做的一切。如果不让我知道,我可以修改。