Das Forum wurde aktualisiert. Wurde höchste Zeit. Wenn etwas nicht funktioniert, bitte gerne hier jederzeit melden.

PowerCLI mit Objekten verstehen

Alles zum Thema vSphere 6.5, ESXi 6.5 und vCenter Server.

Moderatoren: Dayworker, continuum, Tschoergez, irix

Member
Beiträge: 2
Registriert: 05.12.2018, 09:08

PowerCLI mit Objekten verstehen

Beitragvon maino » 05.12.2018, 12:18

Hallo,

ich habe in einem Forum folgenden Code entdeckt:

Code: Alles auswählen

$vmName = 'VM1'
$nicName = 'Network Adapter 1'
$directPath = $false   # or $true to enable Direct Path IO
$vm = Get-VM -Name VM1
$nic = Get-NetworkAdapter -VM $vm -Name $nicName

 
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec

$dev = New-Object VMware.Vim.VirtualDeviceConfigSpec

$dev.Operation = [VMware.Vim.VirtualDeviceConfigSpecOperation]::edit

$dev.Device = [VMware.Vim.VirtualDevice]$nic.ExtensionData

$dev.Device.UptCompatibilityEnabled = $directPath

$spec.DeviceChange += $dev

$vm.ExtensionData.ReconfigVM($spec)


Kann mir jemand erklären wie das genau funktioniert und wie man soweit kommt?
Oder weiß jemand nach was ich suchen soll?

Vielen Dank für die Hilfe ;)

Jenseits von Gut & Böse
Beiträge: 11505
Registriert: 02.08.2008, 15:06
Wohnort: Hannover/Wuerzburg
Kontaktdaten:

Re: PowerCLI mit Objekten verstehen

Beitragvon irix » 05.12.2018, 15:46

Na warum hast du dann den guten Luc nicht gleich gefragt. Der ist voll nett und macht gefuehlt den ganzen Tag eh nichts anderes ausser Powershell :) Tolle Buecher schreibt er auch.

Das was im Code fehlt ist Anmeldung an vCenter/ESXi.
Ansonsten wird in dem Code eine Configuration der vNIC #1 der VM mit dem Namen "VM1" vorgenommen. Ich muesste nachlesen was UptCompatibilityEnabled ist und in welchen Faellen man es denn aendern will.

Ok.. in der API gegoogled und https://pubs.vmware.com/vsphere-6-5/index.jsp?topic=%2Fcom.vmware.wssdk.apiref.doc%2Fvim.vm.device.VirtualEthernetCard.html das kommt heraus.

Somit ist das Code Beispielt nicht ganz korrekt weil es davon aus geht das die NIC generell eine VMXNET3 ist und nur da kann an laut Doku den Parameter aendern bzw. existiert der nur. Wenn man also eine E1000(e) hat in der VM dann wird wohl eine Fehlermeldung kommen.

Ansonsten liest der Code die vorhanden vNIC Konfiguration aus und speichert diese. Dann wird eine neue/leere Konfig angelegt und nur der eine Wert hineingeschrieben. Diese Konfig ueberschreib dann die vorhandene und die Aenderung wird ausgefuehrt.

Gruss
Joerg

Member
Beiträge: 2
Registriert: 05.12.2018, 09:08

Re: PowerCLI mit Objekten verstehen

Beitragvon maino » 07.12.2018, 07:24

Hi,

wer ist Luc?
Wenn er das Thema auch behandelt, bin ich für jeder Erkenntnis oder jedes Buch offen;)

Ich beschreibe mein Verständnisproblem etwas konkreter:


Code: Alles auswählen

 
  $spec = New-Object VMware.Vim.VirtualMachineConfigSpec



Hier erstelle ich ein Objekt in schreibe diese in eine Variable.
Warum erstelle ich ein Objekt in als Name "VMware.Vim.VirtualMachineConfigSpec" und nicht eines das XYZ heißt?
Wie komme ich darauf, dass ich genau dort oder mit diesem Namen ein Objekt erstellen soll?

Code: Alles auswählen

$dev = New-Object VMware.Vim.VirtualDeviceConfigSpec
 


Das gleiche auch hier. Warum ein spezifisches und keines das ZYX?

Code: Alles auswählen

$dev.Operation = [VMware.Vim.VirtualDeviceConfigSpecOperation]::edit
 

Was möchte ich erreichen wenn ich eine Eigenschaft/property (glaube ich ) erzeuge und wieder in eine Variable schreibe?
Was bedeuten die "::" und was soll das "edit"?


Code: Alles auswählen

$dev.Device = [VMware.Vim.VirtualDevice]$nic.ExtensionData
 


Ok, hier schreibe ich die Eigenschaften einer bestimmten Netzwerkarte in die Variable !


Code: Alles auswählen

$dev.Device.UptCompatibilityEnabled = $directPath
 


Jetzt greife ich eine bestimmte Eigenschaft der erzeugten Variable ab und setze sie gleich false!

Code: Alles auswählen

$spec.DeviceChange += $dev
 

Was macht das?

Code: Alles auswählen

$vm.ExtensionData.ReconfigVM($spec)
 

Das scheint wohl da zu sein damit die Veränderung zurückgeschrieben werden, oder?

Vielen Dank

Experte
Beiträge: 1966
Registriert: 23.02.2012, 12:26

Re: PowerCLI mit Objekten verstehen

Beitragvon ~thc » 07.12.2018, 11:13

Mit einer halbwegs aktuellen PowerCLI (6.5) funktioniert das nicht mehr - "Operation" und "Device" sind keine gültigen Eigenschaften von "VirtualDeviceConfigSpec".

Als Lern-Beispiel taugt das daher nicht.

P.S.: Das hier ist eher geeignet: https://scriptingblog.com/tag/vmware-vim-virtualmachineconfigspec/


Zurück zu „vSphere 6.5“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste