Frage von Stuck1234, 53

Einfaches Powershell Script was den Windows Script Host deaktivieren soll funktioniert nicht?

Das Script sieht so aus:

$val2 = Get-ItemProperty -Path HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings -Name "Enable" if($val2.Enable = 1)

{set-itemproperty -Path HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Script Host\Settings -Name "Enable" -value 0}

Als Fehler kommt: Get-ItemProperty : Es wurde kein Positionsparameter gefunden, der das Argument "Script" akzeptiert.

Jemand eine Idee? :/

Antwort
von Etter, 24

Nun abgesehen davon, dass du den Pfad einfach so versuchst reinzuschreiben (du brauchst Anführungszeichen links und rechts), wird er es vmtl auch nicht annehmen, da die Syntax glaube ich HKLM: (also die Kurzschreibweise+Doppelpunkt) benötigt.

Zudem solltest du darauf achten, dass der Eintrag "Enable" überhaupt existiert (tut er bei mir z.B. nicht). Ansonsten brauchst du zum Ändern glaube ich Administratorrechte.

https://bitbucket.org/snippets/Ettar/5jEq7

Das ist mal meine Lösung dazu. Habs bei mir probiert, hat bei jedem Test funktioniert.

Es wird geprüft, ob das Script mit Administratorrechten ausgeführt wird. Wenn nicht wird ein Hinweis eingeblendet mit der Bitte um Bestätigung.

Wenn "Enable" mit 1 gesetzt ist, dann wird der Eintrag auf 0 gesetzt. Falls er nicht existiert, wird der Eintrag mit 0 angelegt.

Falls noch Fragen sind oder du Probleme hast, kannste dich gerne melden.

Kommentar von Stuck1234 ,

Die Anführungszeichen hatten gefehlt stimmt. Das hatte ich nicht bedacht. mit HKLM: hatte ich es auch probiert, da ging es aber auch nicht. Der Eintrag Enable existiert natürlich, weil ich ja weiß was ich da eigentlich bezwecken will. ^^ (kommt vielleicht nicht so rüber, weil ich vom Scripten nichts verstehe und mir das nur logisch zusammenreime). Adminrechte hatte ich natürlich auch. Powershell über cmd geöffnet als admin. Daran konnte es also auch nich liegen.
Ich schau mir mal deine Lösung an und vergleiche mal.
Danke dir trotzdem erst einmal für die Mühe. Hätte nich gedacht, dass da noch was kommt :P

Kommentar von Etter ,

Dass du weißt, was du bezwecken willst, davon gehe ich aus ^^.

Ich wollte damit nur sagen, dass man abfangen sollte, dass der Eintrag gar nicht existiert (ist bei mit Win 8.1 standardmäßig so gewesen). Wenn man dann versucht den Value zu ändern, bekommt man auch einen Fehler raus ;)

"Hätte nich gedacht, dass da noch was kommt :P"

Joa kann manchmal etwas dauern, da ich immer mal sporadisch in das Thema sehe, da recht wenig los ist ;)

Kommentar von Stuck1234 ,

Was ich eigentlich machen wollte war das automatisierte Runterladen einer Host Datei aus einem Https Pfad ausm netz und das ersetzen mit der derzeitigen Host Datei. Dazu hatte ich auch was zusammen geschrieben, wollte aber sichergehen, dass bevor das Script ausgeführt wird im regedit der Wert von WSH schnell geändert wird und nach Beendigung wieder rückgängig gemacht wird. Dann kann ich jetzt das Teil in den Windows Aufgabenplaner stecken und muss mich darum nich mehr kümmern. Prima :D

Kommentar von Stuck1234 ,

ahh ich hab noch rausfinden können, dass der Zeichenwert Enabled heißt und nicht Enable. Das war auch noch ein Fehler. Naja, es war spät und es war warm und ich mag Scripts nich. ;D

Vielen Dank klappt jetzt alles. Von 0 auf 1 und andersrum klappt prima :)

Kommentar von Etter ,

Perfekt ^^.

Ach spätestens wenn du 200 mal das selbe machen sollst, dann bist du dankbar für Scripte ;)

Dann mal viel Spaß damit ^^.

Kommentar von Stuck1234 ,

Ich bin ja als Sysadmin irgendwo abhängig davon abundzu mal en Script zu schreiben. Aber wenn man halt die ganze Zeit auf Arbeit nur Firewalls und Router konfiguriert und Powershell Scripting nich übt, lernt man es nie. :/

Keine passende Antwort gefunden?

Fragen Sie die Community