Seite 1 von 2

Ist ein user angemeldet?

Verfasst: 06 Feb 2018, 18:00
von Cdn
Hallo zusammen,

ich bräuchte für ein Skript die Möglichkeit um abzufragen ob jemand an dem Client angemeldet ist. Leider habe ich hier noch nichts dazu gefunden.

Beste Grüße

cdn

Re: Ist ein user angemeldet?

Verfasst: 07 Feb 2018, 13:36
von uncle_scrooge
Du kannst versuchen, mit Powershell und/oder wmic was zu bauen. Ist aber aufwendig und nicht immer wirklich verlässlich.
Ich würde es mit psloggedon.exe (sysinternals) probieren. In eine DOS-Sektion einbauen und den Output entsprechend parsen.

Re: Ist ein user angemeldet?

Verfasst: 07 Feb 2018, 13:43
von Cdn
Hmm also git es keine Möglichkeit mit OPSI? Parsen und dann ins Opsiscript mit reinbringen? Gibt es dazu ein Beispiel? Habe ich wirklich gar keinen Ansatz.

Re: Ist ein user angemeldet?

Verfasst: 07 Feb 2018, 14:23
von n.wenselowski
Geht es um ein winst-Script?

Opsi hat die Methode hostControlSafe_getActiveSessions, aber je nachdem was mit den Infos gewollt ist, ist vllt ein anderer Weg besser.

Re: Ist ein user angemeldet?

Verfasst: 07 Feb 2018, 14:35
von Cdn
Es geht um ein normales OPSI skript :-)

Mein Szenario: Wir haben mehrere Clients die via Autologin angemeldet sind. Nur manche müssen mit einem Passwort angemeldet werden.

Bei bestimmten Updates wie bspw. Windows 10 klappt das Update nur wenn ein Nutzer angemeldet ist (wisst ihr ja schon :-) )

Leider ist die Methode mit dem Auto Admin Login nicht ganz so zuverlässig: OPSI startet einige male nicht richtig nach dem Update, sodass das Rollback ohne den AutoAdmin nicht durchgeführt wird. Ergo: Man muss an die Rechner dran und diese händisch neu starten.

Wenn ich nun weiß, dass ein Benutzer gerade eingelogt ist, dann kann ich das Skript ausführen.

Geht das mit dieser Methode? Finde dazu keine wirklichen Infos bei Euch.

Re: Ist ein user angemeldet?

Verfasst: 07 Feb 2018, 19:55
von uncle_scrooge
Quick and (very) dirty mit psloggedon.exe

Code: Alles auswählen

[Actions]
DefVar $exitcode$

DosInAnIcon_psloggedon
set $exitcode$ = getLastExitcode
; if $exitcode$ = 0 do your funky stuff.
; Else fail the script and break out

[DosInAnIcon_psloggedon]
%scriptpath%\psloggedon.exe -x -l /accepteula | find /i "Users logged on locally"
exit %ERRORLEVEL%

Re: Ist ein user angemeldet?

Verfasst: 08 Feb 2018, 13:13
von Cdn
Also ich habe mir hier aus den anderen Threads was gebastelt. Irgendwo scheint aber noch ein Syntax Fehler zu sein, kann ich aber irgendwie nicht nachvollziehen:

Code: Alles auswählen

[DosInAnIcon_get_logged_in_users]
@echo off
query session

[Sub_check_logged_in_users]
Set $local_users_unfiltered$ = getOutStreamFromSection ("DosInAnIcon_get_logged_in_users")
Set $local_users_filter$ = takeFirstStringContaining ($local_users_unfiltered$,"Aktiv")
if not ($local_users_filter$ = "")
	set $AutoAdmin$ = "true"
  Message "Es ist kein Benutzer angemeldet, setzte ADMIN" 
endif

Code: Alles auswählen

  Syntax Error in Section: Sub_check_logged_in_users (Command in line 302 origin: p:\windows_10\setup.opsiscript line: 303): $local_users_unfiltered$ = getOutStreamFromSection ("DosInAnIcon_get_logged_in_users") -> getOutStreamFromSection ("DosInAnIcon_get_logged_in_users") illegal String Expressionstr
(2209)    [6] [Feb 07 19:24:14:619] [windows_10]     
(2210)    [6] [Feb 07 19:24:14:619] [windows_10]     ~~~~~~~ End Sub   ~~~~~~~  Sub_check_logged_in_users
Jemand eine Idee?

Re: Ist ein user angemeldet?

Verfasst: 08 Feb 2018, 15:41
von uncle_scrooge
%systemroot%\cmd64 /c query session

Re: Ist ein user angemeldet?

Verfasst: 08 Feb 2018, 15:51
von Cdn
Tak :-)

Re: Ist ein user angemeldet?

Verfasst: 08 Feb 2018, 15:56
von uncle_scrooge
Det var så lidt.