Powershell - Script wird über Aufgabe nicht ohne vorherige Anmeldung ausgeführt
Hallo,
ich habe folgendes Script:
Die Aufgabe funktioniert nicht, wenn der Benutzer Task nicht vorher am Server angemeldet war. Wenn ich mich mit dem Benutzer einmal an- und wieder abmelde kann ich die Aufgabe mit dem Task Benutzer ausführen. Bin dann mit Admin angemeldet. Kann mir jemand erklären warum das so ist?
Ich habe das Script in eine exe umgewandelt und das funktioniert einwandfrei auch ohne vorherige Anmeldung. Würde trotzdem gerne wissen, warum das so ist
Gruß
Bugger
ich habe folgendes Script:
Get-WMIObject -class Win32_UserProfile | Where {(!$_.Special) -and ($_.LocalPath -ne "C:\Users\Administrator") -and ($_.LocalPath -ne "C:\Users\Task") -and ($_.ConvertToDateTime($_.LastUseTime) -lt (Get-Date).AddHours(-1))} | Remove-WmiObject
Die Aufgabe funktioniert nicht, wenn der Benutzer Task nicht vorher am Server angemeldet war. Wenn ich mich mit dem Benutzer einmal an- und wieder abmelde kann ich die Aufgabe mit dem Task Benutzer ausführen. Bin dann mit Admin angemeldet. Kann mir jemand erklären warum das so ist?
Ich habe das Script in eine exe umgewandelt und das funktioniert einwandfrei auch ohne vorherige Anmeldung. Würde trotzdem gerne wissen, warum das so ist
Gruß
Bugger
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 517561
Url: https://administrator.de/contentid/517561
Ausgedruckt am: 22.11.2024 um 08:11 Uhr
9 Kommentare
Neuester Kommentar
Würde trotzdem gerne wissen, warum das so ist
Wir würden gerne wissen was du so alles in deinem Task eingestellt hast. Befehlszeile in der Action? Pfad/LW der ohne Anmeldung nicht verfügbar ist?
Die Sicherheitsoptionen des Task so einstellen dann klappt's auch mit dem Nachbarn
Unter Aktionen dann:
- Programm/Skript:
powershell
- Argumente:
-EP Bypass -NoP -File "C:\script.ps1"
- Argumente:
-EP Bypass -NoP -C "Get-WMIObject -class Win32_UserProfile | Where {(!$_.Special) -and ($_.LocalPath -ne 'C:\Users\Administrator') -and ($_.LocalPath -ne 'C:\Users\Task') -and ($_.ConvertToDateTime($_.LastUseTime) -lt (Get-Date).AddHours(-1))} | Remove-WmiObject"
Bau ein Start-Transcript um den Code dann siehst du was schief läuft.
Hi
du verwendest LastUseTime und versuchst das zu convertieren, auch wenn da nix drin steht. Wenn du einen user im System hast der aber noch nie mit einem Profil angemeldet war, dann steht da halt nix drin. Dann gibts eine Exception und das Script geht auf die Bretter.
Schau dir die Ausgabe von
an, dann siehst du wahrscheinlich eine Reihe ohne Datum
Das musst du entsprechend abfangen, dann sollte das passen
du verwendest LastUseTime und versuchst das zu convertieren, auch wenn da nix drin steht. Wenn du einen user im System hast der aber noch nie mit einem Profil angemeldet war, dann steht da halt nix drin. Dann gibts eine Exception und das Script geht auf die Bretter.
Schau dir die Ausgabe von
Get-WMIObject -class Win32_UserProfile | ft -Property Special, Localpath, Lastusetime
Das musst du entsprechend abfangen, dann sollte das passen
Uups ist mir doch tatsächlich ein x dazwischen gerutscht, die Abkürzung dafür lautet natürlich -EP ByPass, sorry, ist oben korrigiert. Da ich momentan zwei Finger verbunden habe zählt jeder Buchstabe .
Naja, eigentlich sollte man sich schon mal mit der Executionpolicy auseinandersetzen wenn man schon PS Skripte einsetzt .
Naja, eigentlich sollte man sich schon mal mit der Executionpolicy auseinandersetzen wenn man schon PS Skripte einsetzt .