PowerShellPlus – 32Bit & 64 Bit Snapin’s


PowerShellPlus – 32Bit & 64 Bit Snapin’sPowerShellPlus, eine Powershell-Erweiterung mit grafischer Oberfläche wird an Montag, 25.August als Download zur Verfügung stehen.PowerShellPlusWas PowerShellPlus ist, will ich hier nicht beschreiben, vielleicht nur eines: die perfekte Integration der Konsolen Oberfläche von PowerShell, einem Code-Editor mit Intellisense und einer fantastische Hilfe. Hinter dem Programm steht der in der Scripting Welt nicht ganz unbekannte Dr. Tobias Weltner. Einfach ausprobieren.Für mich stellte sich gestern die Frage, wie sich Powershell mit der Problematik: „Powershell-SnapIn’s auf 64 Bit Systemen“ verhält und wie sich diese Probleme umgehen lassen. PowerShellPlus ist ein 32Bit Programm. Es läuft natürlich auch in Umgebungen wie Exchange Server 2007 oder System Center Virtual Machine Manger 2008. Aber das sind reinrassige 64 Bit Systeme. Installieren wir PowerShellPlus, dann werden alle SnapIn’s ausgelesen und in PowerShell eingeklinkt. Mit allem was dazugehört, einschließlich Hilfe. Vollautomatisch.Nach dem Download und der Installation auf dem System Center Virtual Machine Manager 2008 und dem ersten Aufruf liest er die vorhandenen SnapIn‘s ein. Nochmal: Basis für den SCCM 2008 ist Windows Server 2008, 64 Bit Edition. Im Learning Center der PowerShellPlus finden wir unter „PSSnapin Reference“ alle SnapIn’s aufgelistet, die PowerShellPlus gefunden hat. 5 SnapIn’s sind immer vorhanden:PowerShellPlus Learning CenterWo aber sind die SCVMM 2008 SnapIn’s?Die Informationen der SnapIn’s werden in der Registry angelegt. OK, starten wir Regedit über „Run“ – Regedit und springen zu [HKEY_LOCAL_MACHINESOFTWAREMicrosoftPowerShell1PowerShellSnapIns] dann finden wir dort das PowerShellSnappIn „Microsoft.SystemCenter.VirtualMachineManager“Registry: PowerShell SnapIn'sWarum also findet PowerShellPlus dieses SnapIn nicht? Schauen wir uns doch einmal im Task Manager an, was für ein Regedit wir aufgerufen haben.Taskmanager: Regedit 64 BitRegedit ohne *32, also die 64BIT Version . PowerShellPlus ist eine 32 Bit Programm. Also kann es die 64-Bit Registry nicht auslesen.
Wir brauchen Regedit in der 32 Bit Variante. Dies finden wir unter C:WindowsSysWOW64. Starten wir diesen Registrations-Editor:Taskmanager: Regedit 32 BitOk, also haben wir jetzt die 32 Bit Version. Und suchen uns dort die Stelle, wo sich die PowerShell SnapIn’s befinden müssen:Registry: PowerShell SnapIn'sNichts vorhanden, deshalb kann auch PowerShellPlus nichts finden. Die gleiche Problematik finden wir unter Exchange Server 2007 vor, weil auch hier das Betriebssystem eine 64 Bit Variante sein muss.Was nicht funktioniert:Die relevanten DLL ‚s in der 32 BIT Registry zu referenzieren. Es handelt sich ja um 64 BIT DLL’s. Wir brauchen aber die 32 Bit DLL’s und die sind nicht auf dem System vorhanden. Aber der Lösungsansatz ist richtig.Wo bekommen wir jetzt die 32-BIT DLL’s her? Step 1: Download der 32 Bit VersionenFür Exchange gilt zu beachten, dass Sie die Sprach-Variante downloaden (943 MB), für die Sie später in PowerShellPlus auch die Erklärungen und Hilfe angezeigt bekomme, auch auswählen. Wir benötigen die 32BIT EditionSystem-Center Virtual Machine Manager 2008 ist derzeit noch im Beta-Status. Es ist derzeit nur über Microsoft Connect nach Anmeldung zu beziehen.Als Basis für die Installation dient eine 32BIT-Variante von Windows Vista. Dort installieren wir ausschließlich die Management Funktionen von Exchange 2007 bzw. die Verwaltungs-Konsole von SCVMM 2008. SCVMM 2008 installiert sich übrigens in der Sprachversion, die dem Betriebssystem zu Grunde liegt.Step 2: Identifizieren der DLLsWir starten unter Vista Regedit.Registry: PowerShell SnapIn'sIch habe hier sowohl Exchange 2007 als auch SCVMM 2008 installiert. Deshalb werden jetzt 3 SnapIn’s angezeigt. Mit einem Doppelklick auf den Modulnamen erhalten wir Pfad und Datei.

SnapIn DLL Pfad
Virtual Machine Manager Microsoft.SystemCenter.VirtualMachineManager.dll Program FilesMicrosoft System Center Virtual Machine Manager 2008bin
Exchange…. Admin Microsoft.Exchange.PowerShell.Configuration.dll Program FilesMicrosoftExchange Serverbin
Exchange… Support Microsoft.Exchange.Management.Powershell.Support.dll Program FilesMicrosoftExchange Serverbin

  Step 3: Kopieren der 32-Bit Dateien Jetzt müssen wir di relevanten Dateien kopieren. Tobias Weltner und ich haben uns gestern Nacht nicht die Mühe gemacht, alle Abhängigkeiten der verschiedenen DLL’s zu testen.Für SCCVM 2008 sind es:

about_Changes_in_VMM_2008.help.txt
about_VMM.help.txt
about_VMM_Scripting.help.txt
about_VMM_Tutorial.help.txt
AxInterop.QuickMksAxLib30.dll
AxInterop.QuickMksAxLib35.dll
AxVMRCActiveXClient.dll
cli.psc1
DundasWinChart.dll
Errors.dll
GroupingListView.dll
Interop.QuickMksAxLib30.dll
Interop.QuickMksAxLib35.dll
Microsoft.EnterpriseManagement.UI.ConsoleFramework.dll
Microsoft.ReportViewer.Common.dll
Microsoft.ReportViewer.Winforms.dll
Microsoft.SystemCenter.VirtualMachineManager.dll
Microsoft.SystemCenter.VirtualMachineManager.dll-Help.xml
Microsoft.Virtualization.Client.RdpClientAxHost.dll
Microsoft.Virtualization.Client.RdpClientInterop.dll
NativeMethods.dll
Remoting.dll
SQMapi.dll
SQMWrapper.dll
TraceWrapper.dll
UI.AddHostWizard.dll
UI.Bitbos.dll
UI.CommonControls.dll
UI.GlobalSettingsDialog.dll
UI.HardwareConfig.dll
UI.HardwareProperties.dll
UI.HostPropertiesDialog.dll
UI.Images.dll
UI.Library.dll
UI.MmcContainer.dll
UI.NewVmWizard.dll
UI.OSProperties.dll
UI.Reporting.dll
UI.SelfService.dll
Utils.dll
virtualmachinemanager.types.ps1xml
VMRCActiveXClient.dll
VMRCClientControlLib.dll
WizardFramework.dll
 

Für Exchange Server 2007 sind es:

AirSyncTiStateParser.dll
BPA.Common.dll
BPA.ConfigCollector.dll
BPA.NetworkCollector.dll
BPA.UserInterface.dll
BPA.WizardEngine.dll
chksgfiles.dll
dsaccessperf.dll
e12pidgen.dll
epoxy.dll
escprint.dll
ese.dll
eseback2.dll
esebcli2.dll
ExBPA.ESECollector.dll
ExBPA.ExchangeCollector.dll
ExBPA.Shared.dll
ExBPAMdb.dll
ExBPAMon.dll
exchange.format.ps1xml
Exchange.Support.format.ps1xml
exchmem.dll
exchsetupmsg.dll
exrpc32.dll
exrw.dll
exsetdata.dll
extrace.dll
ExTraceMan.dll
Interop.ActiveDS.dll
Interop.adsiis.dll
Interop.CertEnroll.dll
Interop.Migbase.dll
Interop.MSClusterLib.dll
Interop.stdole2.dll
Interop.XEnroll.dll
MapiProtocolHandlerStub.dll
Microsoft.Exchange.AirSync.AirSyncMsg.dll
Microsoft.Exchange.AirSync.dll
Microsoft.Exchange.AirSync.SyncStateConverter.dll
Microsoft.Exchange.Cluster.Replay.dll
Microsoft.Exchange.Cluster.ReplicaSeeder.dll
Microsoft.Exchange.Common.dll
Microsoft.Exchange.Common.IL.dll
Microsoft.Exchange.Common.ProcessManagerMsg.dll
Microsoft.Exchange.CommonMsg.dll
Microsoft.Exchange.Configuration.ObjectModel.dll
Microsoft.Exchange.ContentIndexing.Tasks.dll
Microsoft.Exchange.Core.Strings.dll
Microsoft.Exchange.Data.Directory.dll
Microsoft.Exchange.Data.dll
Microsoft.Exchange.Data.Mapi.dll
Microsoft.Exchange.Data.Storage.ClientStrings.dll
Microsoft.Exchange.Data.Storage.dll
Microsoft.Exchange.Diagnostics.dll
microsoft.exchange.edgesync.common.dll
Microsoft.Exchange.Extensibility.Internal.dll
Microsoft.Exchange.Infoworker.CalendarSettings.dll
Microsoft.Exchange.InfoWorker.Common.dll
Microsoft.Exchange.Isam.Interop.dll
Microsoft.Exchange.Management-Help.xml
Microsoft.Exchange.Management.DetailsTemplates.dll
Microsoft.Exchange.Management.dll
Microsoft.Exchange.Management.Edge.SystemManager.dll
Microsoft.Exchange.Management.NativeResources.dll
Microsoft.Exchange.Management.Powershell.Support.dll
Microsoft.Exchange.Management.PublicFolders.dll
Microsoft.Exchange.Management.SnapIn.Esm.dll
Microsoft.Exchange.Management.SystemManager.dll
Microsoft.Exchange.ManagementMsg.dll
Microsoft.Exchange.MessageSecurity.dll
Microsoft.Exchange.MessagingPolicies.Rules.dll
Microsoft.Exchange.Net.dll
Microsoft.Exchange.PowerShell.Configuration.dll
Microsoft.Exchange.RoutingTableLogParser.dll
Microsoft.Exchange.Rpc.dll
Microsoft.Exchange.RPCOverHTTPAutoconfig.dll
Microsoft.Exchange.Search.exSearchMsg.dll
Microsoft.Exchange.Setup.Common.dll
Microsoft.Exchange.StoreProvider.dll
Microsoft.Exchange.SystemAttendantMailboxServicelet.dll
Microsoft.Exchange.Transport.Agent.AntiSpam.Common.dll
Microsoft.Exchange.Transport.Agent.SenderId.Core.dll
Microsoft.Exchange.Transport.dll
Microsoft.Exchange.Transport.Logging.Search.dll
Microsoft.Exchange.UM.ClientStrings.dll
Microsoft.Exchange.UM.Management.dll
Microsoft.Exchange.UM.UMCommon.dll
Microsoft.Exchange.UM.UmDiagnostics.Common.dll
Microsoft.Rtc.Collaboration.dll
Microsoft.Rtc.Media.dll
migbase.dll
migmsg.dll
RulesAuditMsg.dll
ScheduleEditor.dll
SIPEPS.dll
sqmapi.dll 

Step 4: Registry-Schlüssel exportierenExportieren Sie die einzelnen SnapIn‘s aus der Registry (2 Dateien für Exchange 2007, 1 Datei für SCVMM 2008).Für Exchange 2007:Klicken Sie mit der rechten Maustaste auf Microsoft.Exchange.Management.PowerShell.Admin und exportieren sie diesen Registry-Zweig.
Klicken Sie mit der rechten Maustaste auf Microsoft.Exchange.Management.PowerShell.Support und exportieren sie diesen Registry-ZweigFür System Center Virtual Machine Manager 2008:Klicken Sie mit der rechten Maustaste auf Microsoft.SystemCenter.VirtualMachineManager und exportieren sie diesen Registry-Zweig.Step 5: Dateien ins Zielsystem kopierenAuf dem Zielsystem (Exchange Server 2007 bzw. SCVMM) erstellen wir unter “Program Files (x86)“ ein neues Verzeichnis: „ PowerShell_SnapIn“In dieses Verzeichnis erstellen wir für Exchange ein weiteres Subdirectory: „EX2K7“ und „SCVMM“ für System Center Virtual Machine Manager.In diese Unterverzeichnisse kopieren Sie die jeweiligen o.a. Dateien und die exportierten Reg-Dateien

PowerShell_SnapIn EX2K7 Dateien für Exchange
  SCVMM Dateien für SCVMM

Sollten Sie sowohl Exchange Server 2007 als auch SCVMM (auf getrennten Servern) einsetzen, können Sie hierdurch mit PowerShellPlus beide Systeme von einem Server aus managen!PowerShell SnapIn Struktur 32 BitStep 6: Exportierte Reg-Datei anpassenÖffnen Sie die reg-Datei zum Bearbeiten (hier als Beispiel SCVMM). Die rot gekennzeichneten Teile müssen angepasst werden

Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINESOFTWAREMicrosoftPowerShell1PowerShellSnapInsMicrosoft.SystemCenter.VirtualMachineManager]
„PowerShellVersion“=“1.0“
„Vendor“=“Microsoft Corp.“
„Description“=“Dieses Windows PowerShell-Snap-In enthält Cmdlets für Microsoft System Center Virtual Machine Manager 2008 zum Verwalten des Virtual Machine Manager-Servers sowie der Bibliothekserver, Hosts und virtuellen Maschinen.“
„Version“=“1.0.523.0“
„ApplicationBase“=“C:\Program Files\Microsoft System Center Virtual Machine Manager 2008\bin
„AssemblyName“=“Microsoft.SystemCenter.VirtualMachineManager, Version=1.0.523.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35“
„ModuleName“=“C:\Program Files\Microsoft System Center Virtual Machine Manager 2008\bin\Microsoft.SystemCenter.VirtualMachineManager.dll
„Types“=hex(7):76,00,69,00,72,00,74,00,75,00,61,00,6c,00,6d,00,61,00,63,00,68,
  00,69,00,6e,00,65,00,6d,00,61,00,6e,00,61,00,67,00,65,00,72,00,2e,00,74,00,
  79,00,70,00,65,00,73,00,2e,00,70,00,73,00,31,00,78,00,6d,00,6c,00,00,00,00,
  00 

 Achten Sie beim ersetzen der Programmpfade auf korrekte Syntax: (\)

Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINESOFTWAREMicrosoftPowerShell1PowerShellSnapInsMicrosoft.SystemCenter.VirtualMachineManager]
„PowerShellVersion“=“1.0“
„Vendor“=“Microsoft Corp.“
„Description“=“Dieses Windows PowerShell-Snap-In enthält Cmdlets für Microsoft System Center Virtual Machine Manager 2008 zum Verwalten des Virtual Machine Manager-Servers sowie der Bibliothekserver, Hosts und virtuellen Maschinen.“
„Version“=“1.0.523.0“
„ApplicationBase“=“C:\Program Files (x86)\PowerShell_SnapIn\SCVMM
„AssemblyName“=“Microsoft.SystemCenter.VirtualMachineManager, Version=1.0.523.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35“
„ModuleName“=“C:\Program Files (x86)\PowerShell_SnapIn\SCVMM\Microsoft.SystemCenter.VirtualMachineManager.dll
„Types“=hex(7):76,00,69,00,72,00,74,00,75,00,61,00,6c,00,6d,00,61,00,63,00,68,
  00,69,00,6e,00,65,00,6d,00,61,00,6e,00,61,00,67,00,65,00,72,00,2e,00,74,00,
  79,00,70,00,65,00,73,00,2e,00,70,00,73,00,31,00,78,00,6d,00,6c,00,00,00,00,
  00 

Das gleiche führen Sie für die 2 Reg-Dateien von Exchange Server 2007 aus. 

Step 7: geänderte Registry Datei(en) importieren (Regedit 32 Bit) Bitte keinen Doppelklick auf die Reg-Datei. Sie wird sonst in die 64-Bit Registry eingetragen! Wechseln Sie ins Verzeichnis WindowsSysWow64 und rufen Sie dort die 32-Bit Variante Regedit auf. Importieren Sie die soeben geänderten Reg-Dateien (2x für Exchange bzw. 1x für SCVMM)Step 8: PowerShellPlus IntegrationStarten Sie PowerShellPlus. Wechseln Sie in das PowerShell Learning Center. Unter den PSSnapin.Reference finden sich jetzt weitere ReferenzenBeispiel 1:Virtual Machine ManagerPowerShellPlus Learning CenterBeispiel 2: Exchange und Virtual Machine ManagerPowerShellPlus Learning CenterStep 9: SnapIn zur PowerShell Umgebung hinzufügenDamit wir mit PowerShellPlus auch mit den neuen Befehlen des SnapIn‘s arbeiten können, müssen wir noch 2 Befehle in der Powershell eingeben:für System Center Virtual Machine Manager: 

Add-PSSnapin Microsoft.SystemCenter.VirtualMachineManager
Set-ExecutionPolicy remotesigned 

für Exchange Server: Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin
Set-ExecutionPolicy remotesignedPowerShellPlus Add-PSSnapinZusammenfassung:

  • PowershellPlus ist ein 32 BIT Programm und kann nur auf 32 BIT Snap-Ins zugreifen.
  • Hilfskostruktion: Installation von Exchange Server 2007 auf einem 32Bit-Betriebssystem
  • Hilfskonstruktion: Installation der Verwaltungskonsole des SCVMM 2008)
  • Über die Registry exportieren wir die Schlüssel
  • Über die Registry extrahieren wir die benötigten DLLs
  • Die Dateien werden auf das Zielsystem kopiert
  • Die Registry-Dateien werden angepasst
  • Über Regedit (32 Bit) werden die bearbeiteten Dateien importiert
  • In PowerShellPlus werden die SnapIns hinzugefügt

Tobias Weltner hat versprochen, diesen Vorgang mittels mehreren Powershell-Scripts zu automatisieren. 

 

Kommentar verfassen

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 )

Verbinde mit %s

Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden..