我创建了这个脚本来在 Hyper-V 服务器上远程创建多个 VM,但是,它似乎没有创建 VM。我可以在使用 Enter-PSSession 时使用给定参数直接在 Hyper-V 服务器上创建一个,但不能通过调用命令?(没有错误消息,它只是打印一个空行并返回提示)
[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
您可以应用 $using 范围修饰符。它看起来像这样
$using:newvmcount
,让您使用在调用命令之外定义的变量应用如何为远程命令传递参数:
在脚本块的开头声明参数:
或使用自动变量
$args
访问参数。顺便说一句,我无法理解
foreach
循环,因为[int]$newvmcount
它似乎不是一个集合......