Benutzer mit den meisten Antworten
Script auf Userabmeldeereignisse reagieren lassen

Frage
-
Hi,
ich bin gerade über eine herausforderung gestolpert, wo ich momentan noch keinen Ansatz habe wie ich diese Lösen könnte.
Folgende Situation:
Script wird bei Anmeldung eines Users ausgeführt und läuft soweit :)
Meldet man sich jedoch ab, wird das Abmelden/Herunterfahren durch die ausführung des Scripts blockiert, d.h. man muss immer auf den Timeout warten.
Jemand eine Idee dazu ?
PS: Ich möchte keine zusätzlichen Module verwenden.
Gruß
Antworten
-
PowerShell kann nur schlecht auf Ereignisse reagieren, da PowerShell nur in einem einzigen Prozess = Thread läuft.
Um Ereignisse sofort abzuarbeiten ist Multithreading notwendig.
Dies kannst du in der PowerShell mit Jobs (Start-Job) simulieren!
Du hast 2 Scripts das eine abonniert Shutdown Ereignis und beendet (Killt) das andere Logon-Script bei eintreten von dem Event.
1. Logon script wird gestartet
2. das Logonscript startet sofort das Event Überwachungsscript mit Start-Job
3. bei eintreten des Events beendet das Überwachungsscript BEIDE Scripts (sich selbst auch)
4. Wenn das Shutdown Event nicht eintritt beendet das Logonscript den Job kurz bevor es selbst zu ende ist
Siehe hier: http://social.technet.microsoft.com/Forums/en-US/ITCG/thread/760a3afb-70dc-48f6-810a-fc1d85fe43c1
Oder du kannst ein Shutdow-Script machen, dass das Logon-Script Killt
Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
German ? Come to German PowerShell Forum!- Als Antwort vorgeschlagen Alex Pitulice Montag, 18. März 2013 07:33
- Als Antwort markiert Denniver ReiningMVP, Moderator Sonntag, 24. März 2013 21:23
Alle Antworten
-
Sorry, habs vorhin falsch verstanden. Hab den Post gelöscht.
Eventuell hilft dir dieser Link.
The following is my signature:Powershell Programmer & Advanced Lua Programmer
Location: Switzerland
Beside that, whenever you see a reply, you think is helpful, click "
Vote As Helpful"! And whenever you see a reply being an answer to the main question of the thread, click "
Mark As Answer" (if you opened the thread).
I published the URL's for the icons in my signature.
Please contact me, before reporting me, thank you.
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('577076797174-87661607769657424-8687168065964').substring(($_*2),2))})-replace' '
- Als Antwort vorgeschlagen Alex Pitulice Montag, 18. März 2013 07:34
-
PowerShell kann nur schlecht auf Ereignisse reagieren, da PowerShell nur in einem einzigen Prozess = Thread läuft.
Um Ereignisse sofort abzuarbeiten ist Multithreading notwendig.
Dies kannst du in der PowerShell mit Jobs (Start-Job) simulieren!
Du hast 2 Scripts das eine abonniert Shutdown Ereignis und beendet (Killt) das andere Logon-Script bei eintreten von dem Event.
1. Logon script wird gestartet
2. das Logonscript startet sofort das Event Überwachungsscript mit Start-Job
3. bei eintreten des Events beendet das Überwachungsscript BEIDE Scripts (sich selbst auch)
4. Wenn das Shutdown Event nicht eintritt beendet das Logonscript den Job kurz bevor es selbst zu ende ist
Siehe hier: http://social.technet.microsoft.com/Forums/en-US/ITCG/thread/760a3afb-70dc-48f6-810a-fc1d85fe43c1
Oder du kannst ein Shutdow-Script machen, dass das Logon-Script Killt
Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
German ? Come to German PowerShell Forum!- Als Antwort vorgeschlagen Alex Pitulice Montag, 18. März 2013 07:33
- Als Antwort markiert Denniver ReiningMVP, Moderator Sonntag, 24. März 2013 21:23
-
Hallo Alle,
habe es jetzt folgendermaßen gelöst:
$sd = $false $sysevent = [microsoft.win32.systemevents] Register-ObjectEvent -InputObject $sysevent -EventName "SessionEnding" -Action {$sd = $true} Register-ObjectEvent -InputObject $sysevent -EventName "SessionEnded" -Action {$sd = $true} while($true){ Start-Sleep -milliseconds 250 if ($sd) { get-process powershell |%{$_.kill()} } # hier wird das eigentliche script ausgeführt.... }
Vielleicht hilft es jemand weiter...
Gruß
KK