首先,命令是 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>}"
这应该是你需要做的。如果不让我知道,我可以修改。