Вы должны понимать, как передавать аргументы внутри блока скриптов. Область действия отличается, когда вы пытаетесь передать значение внутри блока скрипта. В результате $ VMname становится пустым в вашем первом утверждении. Пожалуйста, измените существующий оператор Invoke-command
на следующий:
Invoke-Command -ComputerName $hostserver -ScriptBlock {Param([string]$vmname)(Get-VMHardDiskDrive -VMName $vmname)} -ArgumentList $vmname
Кроме того, я предлагаю вам прочитать о argumentlist
в powershell в случае invoke-command
Надеюсьпомогает.