Umgang mit verschiedenen Versionen von Powershellmodulen und Ermittlung von Unterschieden


Microsoft hat mit Veröffentlichung von Windows 10 auch neue Cmdlets für Powershell eingeführt. Bei Windows 10 Pro und vergleichbaren Versionen, wo der Client Hyper-V enthalten ist, gibt es viele neue Cmdlets für die Verwaltung von virtuellen Maschinen. Interessant dabei ist, dass es eine neue Version des Hyper-V-Moduls gibt. Bis Windows 8.1 und Server 2012 R2 kam die Version 1.1 zum Einsatz und mit Windows 10 gibt es das Hyper-V-Modul in Version 2.0.0.0.

Aus Kompatibilitätsgründen macht es Sinn ein Modul mit einer spezifischen Version zu laden. Vor allem, wenn man z. B. vergleichen möchte, was sich in der neuen Version des Moduls verändert hat.

Welche Version aktuell geladen ist, bekommt man mit Get-Module heraus:

PS> get-module hyper-v

ModuleType Version    Name                                ExportedCommands
———- ——-    —-                                —————-
Binary     1.1        hyper-v                             {Add-VMDvdDrive,…

Mittels Remove-Module kann man das Modul entladen und mit Hilfe von Get-Module –Listavailable erhält man alle verfügbaren Versionen:

PS> Remove-Module hyper-v
PS> Get-Module -ListAvailable Hyper-V

    Verzeichnis: C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules

ModuleType Version    Name                                ExportedCommands
———- ——-    —-                                —————-
Binary     2.0.0.0    Hyper-V                             {Add-VMDvdDrive, Add-VMFibreChannelHba, Add-VMGroupMember, Add-VMHardDiskDrive…}
Binary     1.1        Hyper-V                             {Add-VMDvdDrive, Add-VMFibreChannelHba, Add-VMHardDiskDrive, Add-VMMigrationNetwork…}

Mittels Import-Module kann man nun ein Modul laden:

PS> Import-Module Hyper-V
PS> Get-Module Hyper-V

ModuleType Version    Name                                ExportedCommands
———- ——-    —-                                —————-
Binary     2.0.0.0    Hyper-V                             {Add-VMDvdDrive, Add-VMFibreChannelHba, Add-VMGroupMember, Add-VMHardDiskDrive…}

Man bekommt automatisch die neueste Version. Mit dem Parameter –RequiredVersion kann man nun eine spezifische Version laden:

Import-Module Hyper-V -RequiredVersion 1.1

Nun kann man mittels dieser Möglichkeit beide Versionen laden, die Cmdlets einer Variablen zuweisen und diese Vergleichen lassen:

PS> Import-Module Hyper-V -RequiredVersion 1.1
PS> $cV1 = Get-Command -Module Hyper-V
PS> Remove-Module Hyper-V
PS> Import-Module Hyper-V -RequiredVersion 2.0.0.0
PS> $cV2 = Get-Command -Module Hyper-V
PS> compare $cv1 $cv2

InputObject                              SideIndicator
———–                              ————-
Add-VMGroupMember                        =>
Add-VMNetworkAdapterRoutingDomainMapping =>
Add-VMSwitchTeamMember                   =>
Add-VMTPM                                =>
Disable-VMConsoleSupport                 =>
Enable-VMConsoleSupport                  =>
Get-VHDSet                               =>
Get-VHDSnapshot                          =>
Get-VMGroup                              =>
Get-VMHostCluster                        =>
Get-VMNetworkAdapterIsolation            =>
Get-VMSwitchTeam                         =>
Get-VMTPM                                =>
Get-VMVideo                              =>
New-VMGroup                              =>
Optimize-VHDSet                          =>
Remove-VHDSnapshot                       =>
Remove-VMGroup                           =>
Remove-VMGroupMember                     =>
Remove-VMSwitchTeamMember                =>
Rename-VMGroup                           =>
Set-VMHostCluster                        =>
Set-VMNetworkAdapterIsolation            =>
Set-VMNetworkAdapterRoutingDomainMapping =>
Set-VMSwitchTeam                         =>
Set-VMTPM                                =>
Set-VMVideo                              =>
Start-VMTrace                            =>
Stop-VMTrace                             =>
Update-VMVersion                         =>
Add-VmNetworkAdapterRoutingDomainMapping <=
Get-VmNetworkAdapterIsolation            <=
Set-VmNetworkAdapterIsolation            <=
Set-VmNetworkAdapterRoutingDomainMapping <=

Dabei fällt auf, dass keine Cmdlets entfernt wurden, auch wenn es auf den ersten Blick so aussieht. Es wurde lediglich die Schreibweise bei den letzten vier Cmdlets von …-Vm… in …-VM… geändert.

Halten wir also fest, dies sind die neuen Cmdlets in Hyper-V 2.0.0.0:

Add-VMGroupMember
Add-VMNetworkAdapterRoutingDomainMapping
Add-VMSwitchTeamMember
Add-VMTPM
Disable-VMConsoleSupport
Enable-VMConsoleSupport
Get-VHDSet
Get-VHDSnapshot
Get-VMGroup
Get-VMHostCluster
Get-VMNetworkAdapterIsolation
Get-VMSwitchTeam
Get-VMTPM
Get-VMVideo
New-VMGroup
Optimize-VHDSet
Remove-VHDSnapshot
Remove-VMGroup
Remove-VMGroupMember
Remove-VMSwitchTeamMember
Rename-VMGroup
Set-VMHostCluster
Set-VMNetworkAdapterIsolation
Set-VMNetworkAdapterRoutingDomainMapping
Set-VMSwitchTeam
Set-VMTPM
Set-VMVideo
Start-VMTrace
Stop-VMTrace
Update-VMVersion

4 Antworten to “Umgang mit verschiedenen Versionen von Powershellmodulen und Ermittlung von Unterschieden”

  1. Quirel Says:

    Hier einige Infos zu den neuen Hyper-V Cmdlets: https://charbelnemnom.com/2015/07/whats-new-in-powershell-for-hyper-v-in-windows-server-2016-technical-preview-2-hyperv-powershell-ws2016/

  2. Quirel Says:

    Übrigens, wie man feststellen kann, von welchen Modulen es mehrere Versionen gibt, der verwendet dieses Konstrukt:

    Get-Module -ListAvailable| sort Name | group Name | where Count -gt 1

    Count Name Group
    —– —- —–
    2 Hyper-V {Hyper-V, Hyper-V}

  3. Quirel Says:

    Hier die Infos, was es mit den angesprochenen Cmdlets Disable-VMConsoleSupport und Enable-VMConsoleSupport auf sich hat: https://blogs.msdn.microsoft.com/virtual_pc_guy/2016/03/04/disable-vmconsolesupport/

  4. Hardware direkt einer virtuellen Maschine im Hyper-V mittels Discrete Device Assignment zuordnen | Das nie endende Chaos! Says:

    […] Allerdings verschwanden diese Cmdlets wieder zum Release von Windows 10, weshalb sie bei diesem Vergleich nicht auftauchten: https://newyear2006.wordpress.com/2015/07/30/umgang-mit-verschiedenen-versionen-von-powershellmodule&#8230;. […]

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s


%d Bloggern gefällt das: