none
Terminalsitzung auslesen RRS feed

  • Frage

  • Hallo zusammen,

    ich würde gerne ein Script einsetzen, welches auf bestimmten Server ausliest wer dort angemeldet ist (ICA, RDP) und wenn niemand angemeldet ist ein Reboot des Systems veranlässt.

    Jemand eine Idee?

    Gruß

    Karsten

    Dienstag, 5. März 2013 10:50

Antworten

  • Das ganze könnte je nach den genauen Anforderungen etwas komplexer sein als du denkst. Deine Erwähnung von ICA lässt auf eine Citrix-Umgebung schliessen. Falls ja würde ich auf jeden Fall die Xenapp-Cmdlets benutzen, die bieten dir alles was du möchtest. Du darfst ja nicht vergessen das du z.b. auch Disconnected-Sitzungen haben könntest. Hier ist dann zu entscheiden ob du diese ausloggst, je nachdem wie lange sie bereits inaktiv sind. Außerdem sollte der Server aus dem Loadbalancing rausgenommen werden, für die Zeit des reboots. Das alles geht mit den CMDlets kinderleicht.

    Des weiteren musst du überlegen ob du das Skript auf jedem Server zb. als Task laufen lässt oder remote von einem zentralen Server aus. Soll das Skript automatisiert alle x-minuten die Server checken? Dann ist bei einer Remotelösung die Frage nach der Größe der Umgebung und der erzeugten Last.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".

    Dienstag, 5. März 2013 11:53
    Moderator
  • Es gibt mehrere Möglichkeiten dies auszulesen.

    Bei Betriebsystemen die neuer sind als als Windows Vista kannst du den folgenden Dos Befehl verwenden:
    Query Session /server:"<Rechnername>"

    Siehe: http://learn-powershell.net/2010/11/01/quick-hit-find-currently-logged-on-users/

    Nützlich sind dort auch die Tipps in den Komentaren (z.B. Mit dem Bildschirmschoner Logon.scr)


    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!

    Dienstag, 5. März 2013 11:53
  • Dienstag, 5. März 2013 13:34

Alle Antworten

  • Hallo,

    die angemeldeten Benutzer könntes du über WMI auslesen:

    Get-WmiObject -Class Win32_LoggedOnUser -ComputerName SERVER1

    Für den Reboot, könntest du das Cmdlet "Restart-Computer" verwenden!

    MfG

    Dienstag, 5. März 2013 11:11
  • Das ganze könnte je nach den genauen Anforderungen etwas komplexer sein als du denkst. Deine Erwähnung von ICA lässt auf eine Citrix-Umgebung schliessen. Falls ja würde ich auf jeden Fall die Xenapp-Cmdlets benutzen, die bieten dir alles was du möchtest. Du darfst ja nicht vergessen das du z.b. auch Disconnected-Sitzungen haben könntest. Hier ist dann zu entscheiden ob du diese ausloggst, je nachdem wie lange sie bereits inaktiv sind. Außerdem sollte der Server aus dem Loadbalancing rausgenommen werden, für die Zeit des reboots. Das alles geht mit den CMDlets kinderleicht.

    Des weiteren musst du überlegen ob du das Skript auf jedem Server zb. als Task laufen lässt oder remote von einem zentralen Server aus. Soll das Skript automatisiert alle x-minuten die Server checken? Dann ist bei einer Remotelösung die Frage nach der Größe der Umgebung und der erzeugten Last.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".

    Dienstag, 5. März 2013 11:53
    Moderator
  • Es gibt mehrere Möglichkeiten dies auszulesen.

    Bei Betriebsystemen die neuer sind als als Windows Vista kannst du den folgenden Dos Befehl verwenden:
    Query Session /server:"<Rechnername>"

    Siehe: http://learn-powershell.net/2010/11/01/quick-hit-find-currently-logged-on-users/

    Nützlich sind dort auch die Tipps in den Komentaren (z.B. Mit dem Bildschirmschoner Logon.scr)


    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!

    Dienstag, 5. März 2013 11:53
  • Hi,

    ich habe mal sowas ähnliches mit folgendem Modul realisiert:

    RDS-Manager Modul

    Vielleich hilft dir das weiter

    Dienstag, 5. März 2013 11:56
  • Schon mal vielen Dank für die Antworten. Ich schaue mir alles in Ruhe an und geb später Feedback.
    Dienstag, 5. März 2013 12:16
  • Das ganze könnte je nach den genauen Anforderungen etwas komplexer sein als du denkst. Deine Erwähnung von ICA lässt auf eine Citrix-Umgebung schliessen. Falls ja würde ich auf jeden Fall die Xenapp-Cmdlets benutzen, die bieten dir alles was du möchtest. Du darfst ja nicht vergessen das du z.b. auch Disconnected-Sitzungen haben könntest. Hier ist dann zu entscheiden ob du diese ausloggst, je nachdem wie lange sie bereits inaktiv sind. Außerdem sollte der Server aus dem Loadbalancing rausgenommen werden, für die Zeit des reboots. Das alles geht mit den CMDlets kinderleicht.

    Des weiteren musst du überlegen ob du das Skript auf jedem Server zb. als Task laufen lässt oder remote von einem zentralen Server aus. Soll das Skript automatisiert alle x-minuten die Server checken? Dann ist bei einer Remotelösung die Frage nach der Größe der Umgebung und der erzeugten Last.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".

    So, kaum probiert schon die erste Hürde. Ich habe mir die Xenapp-Cmdlets auf einem Remotecomputer installiert. Eine Abfrage die ich stellestelle, erzeugt folgende folgende Fehlermeldung:

    Get-XAServer : Citrix commands must be executed at the Citrix server or using remoting. Make sure that your user account is a Citrix administrator and that the IMA service is started.
    At line:1 char:13
    + Get-XAServer <<<<  -ServerName "XXXX"
        + CategoryInfo          : InvalidOperation: (:) [Get-XAServer], InvalidOperationException
        + FullyQualifiedErrorId : ImaInteropError,Citrix.XenApp.Commands.GetServerCmdlet

    Ich bin Citrix-Admin, aber kein lokaler Admin des Servers.IMA-Service ist auch gestartet.

    Gruß

    Karsten


    • Bearbeitet KSeifert Dienstag, 5. März 2013 12:48
    Dienstag, 5. März 2013 12:33
  • Dienstag, 5. März 2013 13:34
  • Hast du hier noch Fragen, KSeifert? Wenn deine Fragen beantwortet wurden, markiere bitte alle Beiträge mit hilfreichen Antworten.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".

    Dienstag, 12. März 2013 10:44
    Moderator