Powershell - Current User Registry
Hallo,
ich habe hier folgenden Code um mit Powershell die Current User Registry zu bearbeiten:
Das hatte auch mal funktioniert aber auf einmal nicht mehr. Jetzt kommt immer diese Fehlermeldung:
Jemand eine Idee, wie man den wieder zum laufen bekommt?
ich habe hier folgenden Code um mit Powershell die Current User Registry zu bearbeiten:
$root = [Microsoft.Win32.RegistryHive]::Users
$regKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($root, $ComputerName)
# Get all SIDs that don't end with _Classes and are
# long enough to be a domain SID (not local machine).
$users = $regKey.GetSubKeyNames() | where { $_.Length -gt 10 -and $_.EndsWith("_Classes") -eq $false }
foreach ($usersid in $users)
{
# Open the key for write access
$key = "$usersid\SOFTWARE\Microsoft"
$regKey = $regKey.OpenSubKey($key, $true)
$regKey.SetValue("A Test Value", "a meaningless string", 'String')
}
Das hatte auch mal funktioniert aber auf einmal nicht mehr. Jetzt kommt immer diese Fehlermeldung:
Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
In Zeile:8 Zeichen:2
+ $regKey.SetValue("A Test Value", "a meaningless string", 'String' ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) , RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Jemand eine Idee, wie man den wieder zum laufen bekommt?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 382431
Url: https://administrator.de/contentid/382431
Ausgedruckt am: 04.12.2024 um 08:12 Uhr
5 Kommentare
Neuester Kommentar
Servus.
Also prüfe erst ob die Keys existieren z.B. über Try-Catches bevor du Methoden auf Ihnen ausführst. Denn hat eine Variable keinen Inhalt, kannst du auch keine Methode darauf ausführen , deswegen auch die passende Fehlermeldung:
Grüße Uwe
$key = "$usersid\SOFTWARE\Microsoft"
$regKey = $regKey.OpenSubKey($key, $true)
Keiner weiß weiß hier was in $users drin steht und ob es die SID im Users Key gibt. Ich vermute das es eben eine der SIDs im "Users" Key nicht gibt und damit die Variable $regKey (welche übrigens bereits dem Basekey zugewiesen wurde(ebenfalls Schlecht da du dadurch den Basekey nicht mehr ordnungsgemäß über die Close-Methode schließen kannst)) leer ist.$regKey = $regKey.OpenSubKey($key, $true)
Also prüfe erst ob die Keys existieren z.B. über Try-Catches bevor du Methoden auf Ihnen ausführst. Denn hat eine Variable keinen Inhalt, kannst du auch keine Methode darauf ausführen , deswegen auch die passende Fehlermeldung:
Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
Grüße Uwe
Zitat von @Bugger:
Habe den Code auch nur in einem Microsoft Forum gefunden.^^ Beitrag ist allerdings schon von 2011 also gibt es da heute möglicherweise bessere Methoden zum Ziel.
Nicht gerade schlau Code zu verwenden den man nicht 100% trauen kann .Habe den Code auch nur in einem Microsoft Forum gefunden.^^ Beitrag ist allerdings schon von 2011 also gibt es da heute möglicherweise bessere Methoden zum Ziel.
Wenn ich ein echo $users eingebe, kommt auf jedenfall die richtige SID bei raus. Und wie gesagt, es hatte auch mal funktioniert, dass wurdert mich am meisten.
Und bei dem Ziel Computer ist jemand angemeldet und das Profil löscht sich auch nicht von alleine.
- Als erstes prüfe die Firewall für die Remote-Verwaltungsausnahme und ob der RemoteRegistry-Dienst auf dem Zielsystem läuft.
- Passende Rechte (hier ja ebenfalls Schreibrechte) für den Zugriff auf den Unterschlüssel in der Registry müssen gegeben sein. Skript muss mit diesen Rechten gestartet sein.
- Fürs Debugging setze Start-Transcript für's Logging ein und um jeden kritischen Abschnitt Try-Catches mit Fehlerausgabe. So bekommst du das schnell in den Griff.