Powershell bzw Windows Taskscheduler Fehler ?
Grüß euch
Ich habe einige Wochen gebraucht bis ich ein Skript "reparieren" konnte. Ich wollte euch fragen ob die ihr euch das erklären könnt ?
Erklärung:
Ich frage zu beginn das Datum ab (Get-Date -Format yyyyMMdd) und speichere dieses in der Variable $date ab.
Mit dieser wird dann in den folgenden Zeilen jeweils eine .csv Datei erstellt die jeden Tag einen neuen Namen hat. (eben $date + XYZ)
Problem:
Wenn ich das Skript unter ISE oder einfach in Powershell laufen lasse funktioniert es einwandfrei.
(Sieht dann als Ergebnis z.B. so aus: 20180315-client.csv)
Wenn ich im Taskscheduler von Windows einen Task einrichte und das Skript von dort ausführe kommt dann nur noch
-Client.csv
Daher, der Taskscheduler "schluckt" mir das Datum weg. Der Taskscheduler braucht auch 2-3 Minuten um den Teil auszuführen (fast so als würde er in ein Timeout laufen)
Nach ewigen herumprobieren habe ich als Lösung nun gefunden die Variable $Datum unter einer neuen zu speichern und dann diese zu verwenden - auf einmal funktioniert es....
Kann sich das jemand erklären warum der Taskscheduler Probleme mit der Variable $Date hat, das ist eigentlich nur eine 8 stellige Zahlenfolge... ??
...Skript geht hier lange weiter.....
P.s. Ich habe den Task im Scheduler mehrfach neu angelegt um zu schauen ob das ein Problem beim anlegen des Jobs war.
Danke für euren Imput sollte euch etwas auffallen .
LG.Sven
Ich habe einige Wochen gebraucht bis ich ein Skript "reparieren" konnte. Ich wollte euch fragen ob die ihr euch das erklären könnt ?
Erklärung:
Ich frage zu beginn das Datum ab (Get-Date -Format yyyyMMdd) und speichere dieses in der Variable $date ab.
Mit dieser wird dann in den folgenden Zeilen jeweils eine .csv Datei erstellt die jeden Tag einen neuen Namen hat. (eben $date + XYZ)
Problem:
Wenn ich das Skript unter ISE oder einfach in Powershell laufen lasse funktioniert es einwandfrei.
(Sieht dann als Ergebnis z.B. so aus: 20180315-client.csv)
Wenn ich im Taskscheduler von Windows einen Task einrichte und das Skript von dort ausführe kommt dann nur noch
-Client.csv
Daher, der Taskscheduler "schluckt" mir das Datum weg. Der Taskscheduler braucht auch 2-3 Minuten um den Teil auszuführen (fast so als würde er in ein Timeout laufen)
Nach ewigen herumprobieren habe ich als Lösung nun gefunden die Variable $Datum unter einer neuen zu speichern und dann diese zu verwenden - auf einmal funktioniert es....
Kann sich das jemand erklären warum der Taskscheduler Probleme mit der Variable $Date hat, das ist eigentlich nur eine 8 stellige Zahlenfolge... ??
$ErrorActionpreference = "silentlycontinue"
$date = (Get-Date -Format yyyyMMdd)
$datenew = $date #mit diesem Teil geht es auf einmal ....
New-Item -Path "\\.......\06 SkriptExporte\AWSInventory\Client\" -ItemType File -Name "$datenew-client.csv"
New-Item -Path "\\.......\06 SkriptExporte\AWSInventory\Monitor\" -ItemType File -Name "$datenew-Monitor.csv"
New-Item -Path "\\.......\06 SkriptExporte\AWSInventory\Software\" -ItemType File -Name "$datenew-Software.csv"
New-Item -Path "\\.......\06 SkriptExporte\AWSInventory\Offline\" -ItemType File -Name "$datenew-Offline.csv"
New-Item -Path "\\.......\06 SkriptExporte\AWSInventory\Bitlocker\" -ItemType File -Name "$datenew-Bitlocker.csv"
New-Item -Path "\\.......\06 SkriptExporte\AWSInventory\NIC\" -ItemType File -Name "$datenew-NIC.csv"
...Skript geht hier lange weiter.....
P.s. Ich habe den Task im Scheduler mehrfach neu angelegt um zu schauen ob das ein Problem beim anlegen des Jobs war.
Danke für euren Imput sollte euch etwas auffallen .
LG.Sven
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 368348
Url: https://administrator.de/contentid/368348
Ausgedruckt am: 22.11.2024 um 07:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo Sven,
wie immer bei sowas über den Taskplaner, den Code mit Start-Transcript und Stop-Transcript kapseln um alle Meldungen in eine Log-Datei ausgeben zu lassen.
Der auf die Variable folgende Bindestrich ist hier zwar jetzt direkt kein Bestandteil der Variable, aber er könnte es sein denn generell ist er erlaubt. Trotzdem sollte bei deiner Variante das gewünschte Ergebnis herauskommen denn Variablen bei denen Bindestiche vorkommen müsste man dann so in einen String schreiben
Also analysieren erst mal das Transcript auf Fehler, da wir hier ja nicht das ganze Script sehen.
Und vor allem erst mal das
Grüße Uwe
wie immer bei sowas über den Taskplaner, den Code mit Start-Transcript und Stop-Transcript kapseln um alle Meldungen in eine Log-Datei ausgeben zu lassen.
Start-Transcript -Path 'C:\Ordner\debug.log'
$date = get-date -F yyyyMMdd
"$date-Client.csv"
Stop-Transcript
"${var-test}-Client.csv"
.Also analysieren erst mal das Transcript auf Fehler, da wir hier ja nicht das ganze Script sehen.
Und vor allem erst mal das
$ErrorActionpreference = "silentlycontinue"
entfernen damit das Skript auch Fehler auswirft.Grüße Uwe