Powershell: Irgendeinen Wert in Registry-Schlüssel erkennen
Moin alle!
Ich hätt' da gern mal 'n Problem:
Ich will in einem PS-Script feststellen, ob es überhaupt irgendeinen Wert (oder ist es eine Eigenschaft?) in einem Registry-Schlüssel gibt. Da die Einträge dynamisch erzeugt werden und ich die Namen nicht kenne (immer wieder neue 30-stellige GUIDs), komme ich gerade nicht weiter.
Hier ein Beispiel:
if (Get-WasAuchImmer HKLM:\Software\Microsoft\WIndows\CurrentVersion\WindowsUpdate\Services\Pending | UndWasJetztHier?) {$Vorhanden = $true}
Ich will wissen, ob es unter diesem Schlüssel einen Eintrag gibt (DWORD), dessen Namen ich nicht kenne.
Alle Anleitungen, die ich bisher gefunden habe, beziehen sich immer auf einen bekannten Wert. Alles, was ich bisher ausprobiert habe, führt nicht zum Ziel.
Kann mir jemand meine ImKreisDreherei beenden?
Gruß
Jörg
Ich hätt' da gern mal 'n Problem:
Ich will in einem PS-Script feststellen, ob es überhaupt irgendeinen Wert (oder ist es eine Eigenschaft?) in einem Registry-Schlüssel gibt. Da die Einträge dynamisch erzeugt werden und ich die Namen nicht kenne (immer wieder neue 30-stellige GUIDs), komme ich gerade nicht weiter.
Hier ein Beispiel:
if (Get-WasAuchImmer HKLM:\Software\Microsoft\WIndows\CurrentVersion\WindowsUpdate\Services\Pending | UndWasJetztHier?) {$Vorhanden = $true}
Ich will wissen, ob es unter diesem Schlüssel einen Eintrag gibt (DWORD), dessen Namen ich nicht kenne.
Alle Anleitungen, die ich bisher gefunden habe, beziehen sich immer auf einen bekannten Wert. Alles, was ich bisher ausprobiert habe, führt nicht zum Ziel.
Kann mir jemand meine ImKreisDreherei beenden?
Gruß
Jörg
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 2340604895
Url: https://administrator.de/contentid/2340604895
Ausgedruckt am: 24.11.2024 um 15:11 Uhr
6 Kommentare
Neuester Kommentar
Moin,
du bist doch schon auf dem richtigen Weg:
Klar. Du musst ja irgendwo definieren welche Werte du kennst. Wenn du das definierst hast, dann rufst du einfach deinen Registry Key ab und vergleichst ob da Werte drin sind, die du nicht als bekannt deklariert hast. Ist das der Fall, hast du einen neuen Wert entdeckt.
Gruß
Doskias
du bist doch schon auf dem richtigen Weg:
Zitat von @YotYot:
Alle Anleitungen, die ich bisher gefunden habe, beziehen sich immer auf einen bekannten Wert. Alles, was ich bisher ausprobiert habe, führt nicht zum Ziel.
Kann mir jemand meine ImKreisDreherei beenden?
Alle Anleitungen, die ich bisher gefunden habe, beziehen sich immer auf einen bekannten Wert. Alles, was ich bisher ausprobiert habe, führt nicht zum Ziel.
Kann mir jemand meine ImKreisDreherei beenden?
Klar. Du musst ja irgendwo definieren welche Werte du kennst. Wenn du das definierst hast, dann rufst du einfach deinen Registry Key ab und vergleichst ob da Werte drin sind, die du nicht als bekannt deklariert hast. Ist das der Fall, hast du einen neuen Wert entdeckt.
Gruß
Doskias
Zitat von @YotYot:
Bisher bekomme ich, je nachdem, was ich abfrage, immer false oder immer true heraus.
Bisher bekomme ich, je nachdem, was ich abfrage, immer false oder immer true heraus.
Ist doch noch einfacher. Ich weiß nicht was du abfragst, aber true und false sollten ja reichen um zu wissen ob das was ist oder nicht. Poste doch einfach hier mal deinen Code, dann kann man die zielführender helgen.
Zitat von @YotYot:
Normalerweise ist der Schlüssel leer. Nach Windows Updates tauchen hier gelegentlich 30-stellige GUIDs auf, die ich vorher nicht kenne. Das erfordert dann möglicherweise einen Neustart, der aber nicht immer automatisch durchgeführt wird. Also will ich wissen, wenn es hier einen Eintrag gibt, um den Server per Script neu starten zu lassen.
Normalerweise ist der Schlüssel leer. Nach Windows Updates tauchen hier gelegentlich 30-stellige GUIDs auf, die ich vorher nicht kenne. Das erfordert dann möglicherweise einen Neustart, der aber nicht immer automatisch durchgeführt wird. Also will ich wissen, wenn es hier einen Eintrag gibt, um den Server per Script neu starten zu lassen.
Moin,
mach doch einfach ein get-childitem mit count und wenn das Ergebnis größer als 0 ist weißt du das dort Werte drin sind.
/Thomas
Zitat von @YotYot:
Normalerweise ist der Schlüssel leer. Nach Windows Updates tauchen hier gelegentlich 30-stellige GUIDs auf, die ich vorher nicht kenne. Das erfordert dann möglicherweise einen Neustart, der aber nicht immer automatisch durchgeführt wird. Also will ich wissen, wenn es hier einen Eintrag gibt, um den Server per Script neu starten zu lassen.
Da gehört mehr dazu, das zeigt nicht zuverlässig an das ein Reboot erforderlich ist, guckst du ...Normalerweise ist der Schlüssel leer. Nach Windows Updates tauchen hier gelegentlich 30-stellige GUIDs auf, die ich vorher nicht kenne. Das erfordert dann möglicherweise einen Neustart, der aber nicht immer automatisch durchgeführt wird. Also will ich wissen, wenn es hier einen Eintrag gibt, um den Server per Script neu starten zu lassen.
Check for pending reboot with PowerShell
Um noch die Frage zu beantworten, wenn es Unterschlüssel sind dann
if (Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Services\Pending' | ? Name -match '[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}'){
# do whatever you want
}
if (Get-ItemProperty -Path 'HKLM:\Software\Microsoft\Windows\CurrentVersion\WindowsUpdate\Services\Pending' | ?{$_ -match '[a-f\d]{8}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{4}-[a-f\d]{12}'}){
# do whatever you want
}
Bitte dann auch schließen nicht vergessen ...