получить путь VHDX с удаленного сервера - PullRequest
1 голос
/ 25 октября 2019

привет, я пытаюсь получить vhdx указанного имени vmname с удаленного хост-сервера.

здесь часть скрипта

$pth="C:\path\resize-vm"
    $list=gc $pth\list-host.txt
    foreach ($hostserver in $list) {
    $vm=(Invoke-Command -ComputerName $hostserver -ScriptBlock {Get-VM}).VMName
     Write-Host -NoNewline   " here the vm installed in "  $hostserver  `r`n $vm

    $vmname=Read-Host -Prompt "please chose a vmname to resize  "

#the issue in the last line 

    $pathvhd=Invoke-Command -ComputerName $hostserver -ScriptBlock {(Get-VMHardDiskDrive -VMName $vmname).path}

Когда я запускаю эту команду $vmname="dc-kozhan" Яполучение этой ошибки

Невозможно проверить аргумент параметра VMName. Аргумент нулевой или пустой. Укажите аргумент, который не является пустым или пустым, а затем повторите команду. + CategoryInfo: InvalidData: (:) [Get-VMHardDiskDrive], ParameterBindingValidationException + FullyQualifiedErrorId: ParameterArgumentValidationError, Microsoft. указано dc-kozhan буквально это работает

    PS C:\Users> Invoke-Command -ComputerName $hostserver -ScriptBlock {(Get-VMHardDiskDrive -VMName "DC-KOZAHAN")
    .path}
V:\DC-KOZAHAN\DC-KOZAHAN-SYSTEM.vhdx
V:\DC-KOZAHAN\DC-KOZAHAN-DIRECTORY.vhdx
V:\DC-KOZAHAN\DC-KOZAHAN-SYSVOL.vhdx
V:\DC-KOZAHAN\DC-KOZAHAN-BACKUP.vhdx

кто-нибудь есть идея, почему он не работает, когда он указан в переменной

1 Ответ

0 голосов
/ 25 октября 2019

Вы должны понимать, как передавать аргументы внутри блока скриптов. Область действия отличается, когда вы пытаетесь передать значение внутри блока скрипта. В результате $ VMname становится пустым в вашем первом утверждении. Пожалуйста, измените существующий оператор Invoke-command на следующий:

Invoke-Command -ComputerName $hostserver -ScriptBlock {Param([string]$vmname)(Get-VMHardDiskDrive -VMName $vmname)} -ArgumentList $vmname

Кроме того, я предлагаю вам прочитать о argumentlist в powershell в случае invoke-command

Надеюсьпомогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...