Sytuacja wyścigu podczas uruchamiania polecenia Remove-VMHardDiskDrive i VMHardDiskDrive Dodaj na maszynie wirtualnej

Objawy

 

Założono, że używasz polecenia Remove-VMHardDiskDrive środowiska Windows PowerShell na maszynie wirtualnej. Po uruchomieniu polecenia Dodaj VMHardDiskDrive podczas wywoływania powtarzających się (pętla spójne) przed VMHardDiskDrive Usuń zakończył usuwanie dysku bieżącym, dwa polecenia wprowadź wyścigu i zostanie wyświetlony następujący komunikat o błędzie :

 

Add-VMHardDiskDrive : 'VMName' failed to add resources. (Virtual machine ID GUID)

Cannot add 'Host diskpath = Msvm_DiskDrive.CreationClassName="Msvm_Di
skDrive",DeviceID="DeviceID",SystemCreationClassNa
me="Msvm_ComputerSystem",SystemName="Host name"'. The physical disk is already connected to the virtual machine 'VMName'. (Virtual machine ID 
GUID) 

A parameter that is not valid was passed to the operation. 

At line:1 char:1

+ Add-VMHardDiskDrive -VMName ' ' -DiskNumber X

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : InvalidArgument: (Microsoft.HyperV.PowerShell.VMTask:VMTask) 
    [Add-VMHardDiskDrive], VirtualizationOperationFailedException

    + FullyQualifiedErrorId : InvalidParameter,Microsoft.HyperV.PowerShell.Commands.AddVMHardDiskDriveCommand

Przyczyna

VMHardDiskDrive Usuń jest polecenia, który powoduje usunięcie dysku twardego z maszyną wirtualną. VMHardDiskDrive Dodaj to polecenie cmdlet, który dodaje dysku twardego do maszyny wirtualnej. Te polecenia cmdlet nie zostały zaprojektowane w sposób, aby zweryfikować, że ich działania zostały zakończone bez obiektu wywołującego metodę sprawdzania dodatkowy warunek po wywołaniu polecenia.

Obejście problemu

Aby obejść ten problem, można umieścić w miejscu wyboru warunku, który można zweryfikować, że przedmiotowe dysku została usunięta z maszyny wirtualnej, przed dodaniem dysków.


Istnieje wiele sposobów sprawdzania przed dodaniem dysku:


  • Wyszukaj "dysk fizyczny jest już połączony z maszyną wirtualną" VMName zanim ponowisz dodawania dysku za pomocą VMHardDiskDrive Dodaj po wystąpieniu błędu.

  • Po usunięciu dysku należy wykonać try catch, po wywołaniu procedury Dodaj dysk:

    try
    {
    Add-VMHardDiskDrive -VMName VMName -DiskNumber X
    }
    Catch
    {
    Remove the disk or retry the adding
    }
  • Sprawdzają Boolean wartość true lub false po usunięciu dysku i przed dodaniem dysku:

    If(get-vmharddiskdrive -vmname $vmdisk.VMName -ControllerNumber 1)
    {
    "true"
    }
    else
    {
    "false"
    }
  • Aby sprawdzić dysku pytanie jest nadal aktywna lub nie w systemie operacyjnym, należy użyć usługi WMI lub sterownik.

Uwaga Można również spróbować użyć Windows Server 2016 dyskretnych-urządzenie-przydział.

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.

Potrzebna dalsza pomoc?

Rozwijaj swoje umiejętności
Poznaj szkolenia
Uzyskuj nowe funkcje w pierwszej kolejności
Dołącz do niejawnych testerów firmy Microsoft

Czy te informacje były pomocne?

Dziękujemy za opinię!

Dziękujemy za opinię! Wygląda na to, że połączenie Cię z jednym z naszych agentów pomocy technicznej pakietu Office może być pomocne.

×