Jump to content

Wie die Registry durchsuchen und Werte an Variablen übergeben?


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo Leute,

 

dies ist mein erster Beitrag, oder besser "erste Frage", hier im Forum.

Ich arbeite im öffentlichen Dienst in der IT-Abteilung und versuche einige meiner Aufgaben mit der Powershell zu lösen. Das klappt mal mehr mal weniger und meine Literatur hilft mir auch nicht immer weiter.

Anfangs (die ersten Jahre :D) werde ich wohl mehr Fragen müssen als Antworten können, hoffe aber, dass sich das schnell ändern wird.

 

Jetzt geht es los ;)

 

Ich durchsuche mit einem Script die Registrierung und will mit vielen IFs später viele Prozesse beenden und anschließend mit dem UnInstallString Software deinstallieren.

Mit meinem Script (aus dem Internet geliehen) bekomme ich genau das angezeigt, was ich haben will. Ich weiß aber nicht wie ich das an eine oder mehrere Variablen übergeben kann. Mit einfachen Übergabemechanismen kenne ich mich schon aus, nur wie ich diese "Where-Object" oder "ForEach-Object" anzapfe weiß ich nicht. Zudem kann es passieren, dass mir mehrere Möglichkeiten angezeigt werden, aber dass will ich erst einmal ignorieren.

 

Hier das Script, welches mir meine Infos liefert:

Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{*" | Where-Object -FilterScript { $_.GetValue("DisplayName") -like "*sketchup*"} | ForEach-Object -Process {$_.GetValue("DisplayName"), $_.GetValue("UninstallString") }

Hier das Script mit der nicht funktionierenden "Übergabeidee":

Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{*" | Where-Object -FilterScript { $_.GetValue("DisplayName") -like "*sketchup*"} | ForEach-Object -Process {$_.GetValue("DisplayName"), $_.GetValue("UninstallString") }
if ($_.GetValue("DisplayName") -eq "Google SketchUp 8")
{
"Treffer"
}
else
{
"Falsch"
}

 

Danke und Gruß an alle hier

Pascal

Link zu diesem Kommentar

Was macht denn "-Process" bei "ForEach-Object" ?

 

Wieso vergleichst du 2x (einmal in Get-Childitem mit dem Filter, einmal mit If)?

 

Was meinst du mit einfachen Übergabemechanismen? Dem "="?

Das kannst du bei deinem Code auch nutzen:

 

$uninstall = ""
Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{*" | Where-Object -FilterScript { $_.GetValue("DisplayName") -like "*sketchup*"} | ForEach-Object -Process { $uninstall = $_.GetValue("UninstallString") }
$uninstall

Link zu diesem Kommentar

Hallo Dukel,

 

Zu 1:

Process ist wohl dafür, falls mehrere "sketchup"s installiert sind. Damit werden doch dann alle angezeigt, oder? Zumindest funktioniert es bei mir.

 

Zu 2:

Welches IF, dass im erweiterten Codebeispiel? Das hat sowieso nicht funktioniert.

 

Zu 3:

Ja, genau. Und jetzt habe ich auch die Lösung:

$_P_DisplayName = Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{*" | Where-Object -FilterScript { $_.GetValue("DisplayName") -like "*sketchup*"} | ForEach-Object -Process {$_.GetValue("DisplayName"), $_.GetValue("UninstallString") }

Ich hatte schon eine Variable, habe diese nur immer irgendwo und nicht am Anfang untergebracht.

Nun kann ich mit

write-output $_P_DisplayName[1]

mir z.B. den zweiten Eintrag in meiner Variable ausgeben lassen.

Das hatte ich gesucht und von einem neuen Arbeitskollegen gerade zeigen lassen. Der schein die PS ein wenig zu beherschen.

 

Ich hoffe auch andere können dies gebrauchen.

 

Gruß

Pascal

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...