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
Please also mark the comments that contributed to the solution of the article
Content-Key: 226341
Url: https://administrator.de/contentid/226341
Printed on: April 28, 2024 at 12:04 o'clock
6 Comments
Latest comment
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 ?