Benutzeranmeldung mit Einschränkung
Hallo zusammen,
ich habe da ein kleines Problemchen und zwar versuche ich mich im PowerShell einzulernen, habe da eine kleine Aufgabe bekommen, dennoch krieg ich es irgendwie nicht wirklich hin. Ich brauche ein Skript, der beim Anmelden eines Benutzers ausgeführt wird, dieser soll überprüfen ob die Uhrzeit die angegeben ist übereinstimmt und falls dass der Fall ist, wird der Computer ausgeschaltet, also so eine Art Kindersicherung. Beispiel zwischen 21 Uhr und 8 Uhr morgens soll beim Anmelden des jeweiligen Benutzers der PC ausgeschaltet werden.
Mein Versuch sieht wie folgt aus:
Wäre Dankbar für jegliche Hilfe
Mit freundlichen Grüßen
FreeBSD
ich habe da ein kleines Problemchen und zwar versuche ich mich im PowerShell einzulernen, habe da eine kleine Aufgabe bekommen, dennoch krieg ich es irgendwie nicht wirklich hin. Ich brauche ein Skript, der beim Anmelden eines Benutzers ausgeführt wird, dieser soll überprüfen ob die Uhrzeit die angegeben ist übereinstimmt und falls dass der Fall ist, wird der Computer ausgeschaltet, also so eine Art Kindersicherung. Beispiel zwischen 21 Uhr und 8 Uhr morgens soll beim Anmelden des jeweiligen Benutzers der PC ausgeschaltet werden.
Mein Versuch sieht wie folgt aus:
$user = $true
while($user)
{
if ((get-date -Format HH) -gt 21 -and (get-date -Format HH) -lt 8)
{
Stop-Computer -ComputerName localhost -Force
}
else
{
$user = $false
}
}
Wäre Dankbar für jegliche Hilfe
Mit freundlichen Grüßen
FreeBSD
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 643964
Url: https://administrator.de/contentid/643964
Ausgedruckt am: 25.11.2024 um 09:11 Uhr
11 Kommentare
Neuester Kommentar
Ich kann Powershell nicht wirklich, aber es ist kein Powershellfehler, sondern ein ZDO-Problem. Es wird nicht funktionieren, weil eine Zahl kann nicht gleichzeitig größer als 21 und kleiner als 8 sein, damit wird deine Abfrage niemals WAHR.
Entweder aus dem AND wird ein OR oder du musst großer und kleiner vertauschen, sowie das ganze negieren.
Entweder aus dem AND wird ein OR oder du musst großer und kleiner vertauschen, sowie das ganze negieren.
Array mit Benutzernamen einbauen und dann einfach ne weitere Abfrage, wie der Benutzer heißt, in dessen Kontext das Script ausgeführt wird. Ist der Kontext-Benutzer im Array enthalten, die Zeitabfrage und dann rein bzw. raus.
Oder du packst das Script für jeden Benutzer gesondert in die Aufgabenplanung mit dem Flag "nur bei angemeldetem Benutzer ausführen".
Oder du packst das Script für jeden Benutzer gesondert in die Aufgabenplanung mit dem Flag "nur bei angemeldetem Benutzer ausführen".
Moin,
Das Wie kannst du dir dann selbst erarbeiten, hast du ja schließlich die Aufgabe gestellt bekommen, nicht wir
Gruß
em-pie
Zitat von @tikayevent:
Array mit Benutzernamen einbauen und dann einfach ne weitere Abfrage, wie der Benutzer heißt, in dessen Kontext das Script ausgeführt wird. Ist der Kontext-Benutzer im Array enthalten, die Zeitabfrage und dann rein bzw. raus.
Oder du packst das Script für jeden Benutzer gesondert in die Aufgabenplanung mit dem Flag "nur bei angemeldetem Benutzer ausführen".
Oder, wenn eine AD-Struktur besteht, per GPO verteilen und alle relevanten User in eine Gruppe packen. Die GPO wird dann auf die Gruppe angewendet.Array mit Benutzernamen einbauen und dann einfach ne weitere Abfrage, wie der Benutzer heißt, in dessen Kontext das Script ausgeführt wird. Ist der Kontext-Benutzer im Array enthalten, die Zeitabfrage und dann rein bzw. raus.
Oder du packst das Script für jeden Benutzer gesondert in die Aufgabenplanung mit dem Flag "nur bei angemeldetem Benutzer ausführen".
Das Wie kannst du dir dann selbst erarbeiten, hast du ja schließlich die Aufgabe gestellt bekommen, nicht wir
Gruß
em-pie
Eine Bitte: stelle die Bilder bitte direkt hier ein.
Hat den Vorteil: wenn in 5 Jahren jemand anderes selbiges Problem hat, kann er auf die Bilder noch zugreifen und muss nicht hoffen, dass du sie noch bei dem (vielleicht ja dubiosen) ANbieter liegen hast.
Links in der Leiste neben dem Editor, das unterste Icon...
Zur Problemlösung eins:
Baue in das Script ein
dann per mmc den lokalen Gruppenrichtlinieneditor starten und unter den Benutzereinstellungen dein Script beim Anmelden einbinden
Hat den Vorteil: wenn in 5 Jahren jemand anderes selbiges Problem hat, kann er auf die Bilder noch zugreifen und muss nicht hoffen, dass du sie noch bei dem (vielleicht ja dubiosen) ANbieter liegen hast.
Links in der Leiste neben dem Editor, das unterste Icon...
Zur Problemlösung eins:
Baue in das Script ein
$allUsers = 'mmustermann', 'lmueller', 'rwahnsinn'
if ($allUsers.Contains($env:UserName)) {
Write-Output 'Tu was tolles'
}
dann per mmc den lokalen Gruppenrichtlinieneditor starten und unter den Benutzereinstellungen dein Script beim Anmelden einbinden
Wenn ich die Uhr auf 20:57 stelle und 3 Minuten warte, passiert nichts obwohl der Eintrag in der GPO beim Anmelden eingebunden ist. Melde ich den User ab und wieder ein, funktioniert mein Skript.
Ist ja auch absolut richtig. Das Script wird bei der Anmeldung einmal ausgeführt und beendet sich dann, um dann bei der nächsten Anmeldung ein weiteres Mal ausgeführt zu werden. Was du vorhast würde erfordern, dass das Script jede Minute einmal gestartet wird.