Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

PowerShell - Registry x64

Mitglied: emeriks

emeriks (Level 5) - Jetzt verbinden

13.02.2018, aktualisiert 14.02.2018, 652 Aufrufe, 5 Kommentare

Hi,
ich will sicherstellen, dass ein PowerShell Script immer im x64-Zweig der Registry liest, egal ob die PowerShell in 32 oder 64 Bit läuft.
Also greife ich folgendermaßen zu:
01.
$Reg = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, [Microsoft.Win32.RegistryView]::Registry64)
02.
$Value1 = $Reg.OpenSubKey("SOFTWARE\MySoftware").GetValue("Value1")

Das funktioniert unter PS v4 tadellos. Jedoch unter PS v2.0 kommt

Microsoft.Win32.RegistryView : Der Typ [Microsoft.Win32.RegistryView] kann nicht gefunden werden: Stellen Sie sicher, dass die Assembly, die diesen Typ enth„lt, geladen wird.
Bei ........ps1:108 Zeichen:127
_+ $Reg = [Microsoft.Win32.RegistryKey]::OpenBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, [Microsoft.Win32.RegistryView] <<<< ::Registry64)
_+ CategoryInfo : InvalidOperation: (Microsoft.Win32.RegistryView:String) [], RuntimeException
_+ FullyQualifiedErrorId : TypeNotFound

Mit Get-ItemProperty liest er doch immer abhängig davon, ob PS als x86 oder x64 läuft. Das ist doch richtig?

Welche Optionen habe ich in PS v2.0 für o.g.?

Ich benötige PS v2.0, weil dieses Script in einer Exchange 2010 PowerShell laufen muss.

E.
Mitglied: 135333
13.02.2018, aktualisiert um 15:07 Uhr
Checke einfach am Anfang des Skriptes ob es eine 32 oder 64 Bit Konsole ist und restarte die Session als 64bit wenn es keine 64bit ist
https://www.reddit.com/r/PowerShell/comments/2rv3y3/force_script_to_rela ...
Gruß snap
Bitte warten ..
Mitglied: emeriks
14.02.2018 um 08:35 Uhr
Checke einfach am Anfang des Skriptes ob es eine 32 oder 64 Bit Konsole ist und restarte die Session als 64bit wenn es keine 64bit ist.
Das wäre eine Variante ...
Bitte warten ..
Mitglied: emeriks
14.02.2018, aktualisiert um 11:37 Uhr
Danke, damit bin ich jetzt weiter gekommen.

So habe ich es gelöst: s.u.
(Achtung: Ich habe es nicht getestet, wenn auf einem Computer nur die v2.0 installiert ist und auch nur ein x86 OS.)

Jetzt kann ich einfach mit Get-ItemProperty in der Registry lesen.

01.
$IsPowerShellx64 = ([IntPtr]::size -eq 8)
02.
$IsPowerShellv2 = ($PSVersionTable.PSVersion -eq [Version]"2.0")
03.
If(-not $IsPowerShellv2 -or -not $IsPowerShellx64) {
04.
  # PS-Version ist größer als 2.0 --> Das Script startet sich selbst noch einmal mit PS v2.0
05.
  # und/oder
06.
  # PS läuft nicht als x64 --> Das Script startet sich selbst noch einmal mit PS v2.0 und x64
07.
  
08.
  # Hinweis: Normalerweise ist in einen 32bit-Prozess der SYSWOW64-Pfad nicht sichtbar, er wird als "System32" emuliert.
09.
  # Trotzdem verweist $PSHOME in seinem Pfad auf SYSWOW64, wenn es als x86 läuft.
10.
  $PSpath = $PSHOME.ToLower().Replace("syswow64","sysnative") + "\powershell.exe"
11.
  $ScriptPath = $MyInvocation.MyCommand.Definition
12.
  Start-Process -FilePath $PSpath -ArgumentList "-Version 2 -File `"$ScriptPath`" `"$DataFilePath`"" -Wait
13.
  exit
14.
}
Bitte warten ..
Mitglied: emeriks
14.02.2018 um 11:39 Uhr
Nee, das war es doch noch nicht.

Ich habe hier zwei Server mit Win2008R2. Beide mit PowerShell 4. Auf dem einen funktioniert es, auf dem anderen nicht.
Wo es nicht funktioniert, da wird auch beim Start der Powershell aus dem Script heraus mit "-Version 2" weiterhin Version 4 gemeldet.

Was ist das jetzt schon wieder?
Bitte warten ..
Mitglied: 135333
14.02.2018, aktualisiert um 17:13 Uhr
Zitat von emeriks:

Checke einfach am Anfang des Skriptes ob es eine 32 oder 64 Bit Konsole ist und restarte die Session als 64bit wenn es keine 64bit ist.
Das wäre eine Variante ...
Zweite Variante: Über "StdRegProvider" und WMI und "__ProviderArchitecture" arbeiten
https://gallery.technet.microsoft.com/scriptcenter/6062bbfc-53bf-4f92-99 ...
https://msdn.microsoft.com/en-us/library/aa393067(v=vs.85).aspx
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell Registry
gelöst Frage von MarabuntaBatch & Shell1 Kommentar

Hallo, ich will mit Powershell einen neuen Registry Key erstellen(bzw. ersetzten falls vorhanden), mit Name und Wert. Set-ItemProperty erstellt ...

Windows Tools
Powershell Remotezugriff auf Registry
gelöst Frage von kushMichiWindows Tools15 Kommentare

Hallo Leute, ich habe ein Skript geschrieben welches aus der Registry auf einem Remoteserver etwas auslesen soll. Problem: ich ...

Batch & Shell
Powershell - Current User Registry
gelöst Frage von BuggerBatch & Shell5 Kommentare

Hallo, ich habe hier folgenden Code um mit Powershell die Current User Registry zu bearbeiten: Das hatte auch mal ...

Batch & Shell
Registry-Backup mit PowerShell
gelöst Frage von 112TimoBatch & Shell8 Kommentare

Hallo an alle Leser, ich möchte ein Backup der aktuellen (lokalen) Registry erstellen. Dies soll ein Teil eines größeren ...

Neue Wissensbeiträge
Google Android

Google sperrt Android-Updates und den Play Store für Huawei

Information von Deepsys vor 23 StundenGoogle Android8 Kommentare

Das finde ich schon ein starkes Stück, Trump der Welt Diktator. So kann man mit einem Dekret mal eben ...

Windows 7

Südkoreas Regierung setzt auf Linux, um Windows 7 Clients abzulösen

Information von kgborn vor 1 TagWindows 74 Kommentare

Kleiner Infosplitter zum Wochenanfang: Während München (LiMux) und die niedersächsische Finanzverwaltung von Linux auf einen Windows 10-Client (und Office) ...

Internet
Big Brother is Watching You
Information von transocean vor 1 TagInternet1 Kommentar

Moin, die Datenkrake Google fischt Informationen über Einkäufe ab, die GMail Nutzer im Netz tätigen. Gruß Uwe

Datenschutz
TeamViewer gehackt !
Information von aqui vor 1 TagDatenschutz7 Kommentare

Hat schon einen Grund warum verantwortungsvolle Admins diese Software nicht einsetzen und sie in den meisten größeren Firmen aus ...

Heiß diskutierte Inhalte
Windows 10
Windows am MAC
Frage von LeeX01Windows 1016 Kommentare

Guten Abend zusammen, ich habe gerade ein Macbook Pro vor mir welches ich mit einem Windows 10 to go ...

Humor (lol)
Mitarbeiter meldet: VPN funktioniert nicht
gelöst Frage von Epixc0reHumor (lol)13 Kommentare

Servus, einer unserer Mitarbeiter meldete heute, sein VPN funktioniert Zuhause nicht, im LTE Netz aber schon. Per Teamviewer hin ...

Linux Userverwaltung
Ist sudo auf Servern Pflicht?
gelöst Frage von lcer00Linux Userverwaltung13 Kommentare

Hallo zusammen, wir haben für einige Netzwerkdienste einige Debian Server. Auf diesen Servern arbeiten keine Benutzer im eigentlichen sinne. ...

Batch & Shell
Powershell Datum der zuletzt eingespielten Patche bei remote Servern ermitteln
Frage von bensonhedgesBatch & Shell13 Kommentare

Hallo, ich möchte gerne anhand einer Serverliste (bsp. computers.txt) via PS ermitteln, wann derjeweilige Server zuletzt gepatcht wurde (Liste ...