PowerShellPlus – 32Bit & 64 Bit Snapin’sPowerShellPlus, eine Powershell-Erweiterung mit grafischer Oberfläche wird an Montag, 25.August als Download zur Verfügung stehen.Was 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:
Wo 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“
Warum also findet PowerShellPlus dieses SnapIn nicht? Schauen wir uns doch einmal im Task Manager an, was für ein Regedit wir aufgerufen haben.
Regedit 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:Ok, also haben wir jetzt die 32 Bit Version. Und suchen uns dort die Stelle, wo sich die PowerShell SnapIn’s befinden müssen:
Nichts 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.
Ich 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!Step 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 ManagerBeispiel 2: Exchange und Virtual Machine Manager
Step 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 remotesignedZusammenfassung:
- 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.