Powershell bei Button X einen Befehl auführen
Hi,
hoffe Ihr könnt mir helfen. Ich habe ein Windows 7 X64 System und habe ein Script das den Befehl "Register-EngineEvent PowerShell.Exiting" beim drücken des "X" ausführt.
Ich möchte damit erreichen, dass wenn man das Script mit Gewalt per X beendet dieser noch einen aller letzten Befehl ausführt.
Er sollte dann diesen Befehl ausführen was verhindert das die Datei nicht schreibgeschützt bleibt.
Das ganze funktioniert soweit in ISE aber nicht mit der Console....
Gruß
Matthias
hoffe Ihr könnt mir helfen. Ich habe ein Windows 7 X64 System und habe ein Script das den Befehl "Register-EngineEvent PowerShell.Exiting" beim drücken des "X" ausführt.
Ich möchte damit erreichen, dass wenn man das Script mit Gewalt per X beendet dieser noch einen aller letzten Befehl ausführt.
Er sollte dann diesen Befehl ausführen was verhindert das die Datei nicht schreibgeschützt bleibt.
Register-EngineEvent PowerShell.Exiting -SupportEvent -Action {(Get-ItemProperty "$env:windir\system32\Empirum\AgentConfig.xml").isReadOnly = $false}
Das ganze funktioniert soweit in ISE aber nicht mit der Console....
Gruß
Matthias
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 226341
Url: https://administrator.de/contentid/226341
Ausgedruckt am: 17.11.2024 um 05:11 Uhr
6 Kommentare
Neuester Kommentar
Hallo Matthias,
also hier geht es auch in einer Konsole einwandfrei. Eventuell stimmt was mit deinem Powershell-Profil nicht. Starte mal eine Konsole mit
Geht denn folgendes überhaupt in einer separaten Konsole?
Oder vermutlich schlägt das setzen des ReadOnly-Attributs fehl weil die Datei noch von deinem Script in Benutzung ist. Hier müsste man dann den jeweiligen Prozess erst beenden bzw. diesen vorher mit Start-Process starten, in einer Variablen speichern, und dann im Event den Prozess stoppen bevor man das Attribut setzt.
Grüße Uwe
also hier geht es auch in einer Konsole einwandfrei. Eventuell stimmt was mit deinem Powershell-Profil nicht. Starte mal eine Konsole mit
powershell.exe -noprofile
und führe dann die Zeile darin aus.Geht denn folgendes überhaupt in einer separaten Konsole?
Register-EngineEvent PowerShell.Exiting -SupportEvent -Action {start-process "notepad.exe"}
Oder vermutlich schlägt das setzen des ReadOnly-Attributs fehl weil die Datei noch von deinem Script in Benutzung ist. Hier müsste man dann den jeweiligen Prozess erst beenden bzw. diesen vorher mit Start-Process starten, in einer Variablen speichern, und dann im Event den Prozess stoppen bevor man das Attribut setzt.
Grüße Uwe
Dir ist schon bewusst das das Event auch ausgeführt wird wenn die Konsole normal geschlossen wird ? D.h. nach dem setzen von ReadOnly und starten des Dienstes wird der Schreibschutz des Files wieder entfernt, wenn sich die Konsole schließt.
Entferne doch einfach schon vor dem Read-Host-Befehl präventiv den Schreibschutz des Files oder geht das nicht weil der Dienst da die Finger drauf hat ?
Entferne doch einfach schon vor dem Read-Host-Befehl präventiv den Schreibschutz des Files oder geht das nicht weil der Dienst da die Finger drauf hat ?