PowerShell "Login Script" läuft als Scheduled Task nicht
Hallo zusammen,
ich stecke bei folgendem Problem fest:
Ziel ist es, dass wenn sich ein User auf einem Server anmeldet ein Abfragefenster kommt und nach Eingabe einer Bemerkung und "OK" daraufhin eine Email versendet wird.
Das Power Shell Script mit der Abfrage und dem Senden der Email funktioniert bei einem manuellen Aufruf wunderbar.
Als Scheduled Task funktioniert es auch auf meinem Windows 10 Client. Allerdings funktioniert es als Scheduled Task nicht auf einem Server (2016, 2022 egal...). Der Scheduled Task gibt zwar an, dass er erfolgreich gelaufen ist (0x0), allerdings ist das Script nicht wirklich gelaufen.
Da die Server über diverse GPO´s gehärtet sind bin ich mir ziemlich sicher, dass da etwas dazwischenfunkt, bloß habe ich noch nicht herausfinden können welche Regel das sein könnte.
Vielleicht die Remote Execution Policy...
Das Script sieht wie folgt aus, vielleicht weiß ja jemand wodurch dessen Ausführung als Scheduled Task geblockt sein könnte.
Schönen Gruß und Dank für eure Tipps,
Stecken
PS: Eigentlich will ich das Ganze über eine GPO machen, mit einem Scheduled Task lässt sich aber schneller Testen um herauszufinden woran es liegt. (über eine GPO, die das Script beim Login ausführen soll hatte es urpsprünglich auch nicht geklappt).
ich stecke bei folgendem Problem fest:
Ziel ist es, dass wenn sich ein User auf einem Server anmeldet ein Abfragefenster kommt und nach Eingabe einer Bemerkung und "OK" daraufhin eine Email versendet wird.
Das Power Shell Script mit der Abfrage und dem Senden der Email funktioniert bei einem manuellen Aufruf wunderbar.
Als Scheduled Task funktioniert es auch auf meinem Windows 10 Client. Allerdings funktioniert es als Scheduled Task nicht auf einem Server (2016, 2022 egal...). Der Scheduled Task gibt zwar an, dass er erfolgreich gelaufen ist (0x0), allerdings ist das Script nicht wirklich gelaufen.
Da die Server über diverse GPO´s gehärtet sind bin ich mir ziemlich sicher, dass da etwas dazwischenfunkt, bloß habe ich noch nicht herausfinden können welche Regel das sein könnte.
Vielleicht die Remote Execution Policy...
Das Script sieht wie folgt aus, vielleicht weiß ja jemand wodurch dessen Ausführung als Scheduled Task geblockt sein könnte.
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$form = New-Object System.Windows.Forms.Form
$form.Text = 'Data Entry Form'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'
$okButton = New-Object System.Windows.Forms.Button
$okButton.Location = New-Object System.Drawing.Point(75,120)
$okButton.Size = New-Object System.Drawing.Size(75,23)
$okButton.Text = 'OK'
$okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)
$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Location = New-Object System.Drawing.Point(150,120)
$cancelButton.Size = New-Object System.Drawing.Size(75,23)
$cancelButton.Text = 'Cancel'
$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'Please enter your name and reason for login:'
$form.Controls.Add($label)
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(260,20)
$form.Controls.Add($textBox)
$form.Topmost = $true
$form.Add_Shown({$textBox.Select()})
$result = $form.ShowDialog()
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
$x = $textBox.Text
$date = Get-Date
Send-MailMessage -To "Empfangsadresse@Empfangsadresse.com" -From "Sendeadresse@Sendeadresse.com" -Subject "Das ist der Betreff" -Body " Computername: $env:computername User: $env:UserDomain $env:USERNAME Date: $date Reason:$x" -SmtpServer "mailrelay"
$x
}
Schönen Gruß und Dank für eure Tipps,
Stecken
PS: Eigentlich will ich das Ganze über eine GPO machen, mit einem Scheduled Task lässt sich aber schneller Testen um herauszufinden woran es liegt. (über eine GPO, die das Script beim Login ausführen soll hatte es urpsprünglich auch nicht geklappt).
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 83018940576
Url: https://administrator.de/forum/powershell-login-script-laeuft-als-scheduled-task-nicht-83018940576.html
Ausgedruckt am: 29.04.2025 um 09:04 Uhr
4 Kommentare
Neuester Kommentar
Moin,
wie sind denn eure ExecutionPolicies definiert auf den Servern?
Kannst du mal folgendes in die interaktive Konsole eingeben:
Welche Parameter gibst du im Scheduled Task unter General & Action mit? (muss im User-Kontext laufen "Run only when user is logged on").
Das Script selbst sollte nicht das Problem sein. Funktioniert bei mir auf einem Server.
VG
Celiko
wie sind denn eure ExecutionPolicies definiert auf den Servern?
Kannst du mal folgendes in die interaktive Konsole eingeben:
Get-ExecutionPolicy -List
Welche Parameter gibst du im Scheduled Task unter General & Action mit? (muss im User-Kontext laufen "Run only when user is logged on").
Das Script selbst sollte nicht das Problem sein. Funktioniert bei mir auf einem Server.
VG
Celiko

Hier ist der Fehler
Die GUI kann nur erscheinen wenn sie im Kontext des angemeldeten Users ausgeführt wird, denn nur dieser hat eine GUI Session! Der Service-Account hat aber keine GUI Session, ergo wird die GUI auch niemals sichtbar beim angemeldeten User ausgeführt werden, also ein völlig normales Verhalten !
Es darf also kein Account im Task hinterlegt werden, sondern es muss im Kontext des Users ausgeführt werden also "Run only when user is logged on" gewählt werden.
Des weiteren setzt man in PowerShell Skripten des Aufgabenplaners folgende Parameter
Dann ist die ExecutionPolicy für das Script außer Gefecht.
PJ.
Unter "General" aktuell einen Service Account mit "Run whether user is logged on or not"
Wenn das aber nicht der sich gerade anmeldenende User ist wird niemals eine GUI erscheinen!Die GUI kann nur erscheinen wenn sie im Kontext des angemeldeten Users ausgeführt wird, denn nur dieser hat eine GUI Session! Der Service-Account hat aber keine GUI Session, ergo wird die GUI auch niemals sichtbar beim angemeldeten User ausgeführt werden, also ein völlig normales Verhalten !
Es darf also kein Account im Task hinterlegt werden, sondern es muss im Kontext des Users ausgeführt werden also "Run only when user is logged on" gewählt werden.
Des weiteren setzt man in PowerShell Skripten des Aufgabenplaners folgende Parameter
-EP ByPass -File "c:\pfad\script.ps1"
PJ.