Invoke-Command 无法创建新的虚拟机

Invoke-Command 无法创建新的虚拟机

我创建了这个脚本来在 Hyper-V 服务器上远程创建多个 VM,但是,它似乎无法创建 VM。我可以使用 Enter-PSSession 时使用给定的参数直接在 Hyper-V 服务器上创建一个,但不能通过invoke-command 来创建?(没有错误消息,它只是打印一个空白行并返回到提示符)

[CmdletBinding()]
param(
[Parameter(Mandatory=$true)][int]$newvmcount #require number of temp vm's to create
)
Invoke-Command -ScriptBlock {foreach ($vmnumber in $newvmcount){New-VM -Name "Windows10TMP$vmnumber" -BootDevice NetworkAdapter -Generation 2 -SwitchName LAN -MemoryStartupBytes 1gb -NewVHDPath "F:\hypervvirtualmachines\Windows10TMP$vmnumber.vhdx" -NewVHDSizeBytes 127gb -verbose}} -ComputerName hypervserver -ArgumentList $newvmcount

答案1

您可以应用 $using 范围修饰符。它看起来像这样,$using:newvmcount它允许您使用在invoke命令之外定义的变量

答案2

申请如何传递远程命令的参数

在脚本块的开头声明参数:

Invoke-Command -ScriptBlock {
  param($newvmcount)
  foreach ($vmnumber in $newvmcount) {
      New-VM -Name "Windows10TMP$vmnumber" `
        -BootDevice NetworkAdapter -Generation 2 `
        -SwitchName LAN -MemoryStartupBytes 1gb `
        -NewVHDPath "F:\hypervvirtualmachines\Windows10TMP$vmnumber.vhdx" `
        -NewVHDSizeBytes 127gb -verbose
  }
} -ComputerName hypervserver -ArgumentList $newvmcount

或使用自动变量 $args

顺便说一句,我无法理解这个foreach循环,因为[int]$newvmcount它似乎不是一个集合……

相关内容