bugger
Goto Top

Powershell - Script wird über Aufgabe nicht ohne vorherige Anmeldung ausgeführt

Hallo,

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 face-smile

Gruß
Bugger

Content-ID: 517561

Url: https://administrator.de/forum/powershell-script-wird-ueber-aufgabe-nicht-ohne-vorherige-anmeldung-ausgefuehrt-517561.html

Ausgedruckt am: 25.12.2024 um 06:12 Uhr

SeaStorm
SeaStorm 21.11.2019 aktualisiert um 18:21:58 Uhr
Goto Top
hi

wie führst du das Script denn aus? Also per powershell.exe -Path .... ?
Und wie genau sind da die parameter?
141965
141965 21.11.2019, aktualisiert am 22.11.2019 um 13:50:13 Uhr
Goto Top
Würde trotzdem gerne wissen, warum das so ist
Wir würden gerne wissen was du so alles in deinem Task eingestellt hast. face-smile

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 face-wink

screenshot

Unter Aktionen dann:

  • Programm/Skript: powershell
  • Argumente: -EP Bypass -NoP -File "C:\script.ps1"
oder als Alternative den Einzeiler direkt als Command in die Argumente packen:

  • 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"
Bugger
Bugger 22.11.2019 um 09:11:47 Uhr
Goto Top
Ja, das hätte ich gestern wohl noch besser erwähnen sollen face-smile

Programm: powershell
Argument: -command "\\server\script.ps1"

Die Aufgabe beendet immer mit (0x1). Habe es auch mit deinen Argumenten probiert, gleiches Ergebnis. Ob die Datei auf dem Server liegt oder lokal ist auch egal. Auf System User habe ich auch geändert. OS ist Server2012R2.
141965
141965 22.11.2019 aktualisiert um 10:22:52 Uhr
Goto Top
Bau ein Start-Transcript um den Code dann siehst du was schief läuft.
Bugger
Bugger 22.11.2019 um 11:42:37 Uhr
Goto Top
Habe
Start-Transcript -Path "C:\transcript.txt"  
am Anfang hinzugefügt, die Datei wird aber nicht erst erstellt.
Das Script ansich funktionniert ja auch, nur halt nicht unter den oben genannten Voraussetzungen.
SeaStorm
SeaStorm 22.11.2019 um 12:50:30 Uhr
Goto Top
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
Get-WMIObject -class Win32_UserProfile | ft -Property Special, Localpath, Lastusetime
an, dann siehst du wahrscheinlich eine Reihe ohne Datum

Das musst du entsprechend abfangen, dann sollte das passen
Bugger
Bugger 22.11.2019 um 12:54:02 Uhr
Goto Top
Habs gelöst, läuft jetzt.

Als Argument muss stehen:

-ExecutionPolicy ByPass -File "\\server\script.ps1"  

Mit -ExP Bypass hat es nicht funktioniert, ausgeschrieben schon. Trotzdem danke für die Hilfe face-smile
141965
141965 22.11.2019 aktualisiert um 13:55:12 Uhr
Goto Top
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 face-wink.

Naja, eigentlich sollte man sich schon mal mit der Executionpolicy auseinandersetzen wenn man schon PS Skripte einsetzt face-wink.
Bugger
Bugger 22.11.2019 aktualisiert um 14:07:01 Uhr
Goto Top
Ja, ExecutionPolicy ist mir nicht fremd, allerdings habe ich es halt nie abgekürzt und in einer Aufgabe verwendet. So kam halt eins zum anderen.^^ Und -ExP hat ja auch sinn gemacht :D