Я создал этот сценарий для удаленного создания нескольких виртуальных машин на сервере Hyper-V, однако, похоже, он не создает виртуальные машины. Я могу создать его непосредственно на сервере Hyper-V, используя указанные параметры при использовании Enter-PSSession, но не с помощью команды 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
Вы можете применить модификатор $ using. Это выглядело бы так$using:newvmcount
что позволяет вам использовать переменную, определенную вне команды вызова
Подать заявление Как передавать аргументы для удаленных команд:
Либо объявите параметр (ы) в начале вашего блока сценария:
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
не похоже на коллекцию ...