none
Power Shell Script in Aufgabenplanung in Windows 7 RRS feed

  • Frage

  • Hallo.

    Also ich habe ein Shell Script geschrieben, was eine E-Mail schickt wenn der Speicherplatz einer Festplatte unter xxx GB beträgt.
    Manuell gestartet klappt es auch einwandfrei.
    Ich möchte dieses Script aber in die Aufgabenplanung einfügen.
    Habe dies auch gemacht, aber es klappt nicht. Es erscheinen zwar keine Fehler, aber es wird diese E-Mails nicht gesendet. Habe mich damit jetzt knapp 3 Std. beschäftigt. Im Anhang ist ein Bild der Einstellungen
    Habe es mit ca. 100 verschiedenen Einstellungen versucht
    Habe es auch mit folgender Anleitung versucht:
    http://www.elasticsky.de/2011/11/powershell-skript-als-geplanten-task-auf-server-2008-r2-starten/
    trotzdem kein Erfolg!

    Unter "Argumente" ist der Pfad des Scriptes angegeben.

    http://www.pic-upload.de/view-13726248/Unbenannt.jpg.html
    Mittwoch, 11. April 2012 12:22

Antworten

  • So, ich finde 33 Posts reichen um ein relativ einfaches Problem zu bearbeiten. Pakito92, ich denke wir sind nun an einem Punkt angelangt wo -wenn du es bis jetzt nicht lösen konntest- die Hilfsmöglichkeiten in einem Forum an ihre Grenze kommen. Ich möchte aber noch darauf Hinweisen, das ich den -von dir bisher ignorierten- Vorschlag von Peter für sehr sinnvoll halte.

     

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".

    • Als Antwort markiert Alex Pitulice Freitag, 20. April 2012 10:07
    Freitag, 20. April 2012 09:44
    Moderator
  • Ich glaube nicht dass man dein Problem auf diese Art debuggen kann!

    Programme (auch Skripts) die mit dem Tasksheduler gestartet werden können ja keine Fehlermeldungen in Form eines Fensters Anzeigen. Deshalb MUSS dein Skript möglichst jede Aktion in ein Logfile schreiben!

    Als allererste Aktion schreibt dein Skript natürlich in das Logfile das es gestarted wurde (Datum, Uhrzeit, Sekunden!).
    Somit entfällt auch das Ratespiel, ob die Kommandozeile im Tasksheduler richtig ist oder nicht!

    http://jdhitsolutions.com/blog/2011/03/powershell-automatic-logging/
    http://poshcode.org/2566

    Nach dem Start deines Skripts mit dem Tasksheduler läuft dies wie gesagt als Dienst (in der Windows Session 0)! Ich vermute mal dass der Mail-Aufruf dann einfach nicht mehr durchkommt!


    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '




    Freitag, 13. April 2012 11:30
  • Ciao Pakito

    Versuch es mal so:

     

    Wenn das nicht funktioniert, schreibe diesen Befehl ( start /wait %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden "C:\Users\mein benutzername\monitor-drivespace.ps1" ) mal in eine Batch-File (.bat oder .cmd) und führ sie mal aus. Mal schauen ob das ginge. Sollte das dann funktionieren, binde einfach die Batch-File in deinen Task ein.

    Wenn das auch nicht funktioniert, dann prüfe bitte nochmal was du eingegeben hast.

    Wenn auch das nicht funktioniert, prüf es nochmal und frag dann jemanden, der dir an deinem PC zeigen kann wie das funktioniert.

    Mittwoch, 18. April 2012 06:04

Alle Antworten

  • Hallo,

    versuche es mal so:

    Program/script: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

    Add arguments (optional): -NoProfil -Command "& { & "[Pfad Powershellskript]" -[Parametername] [Parameterwert] }"

    Mfg


    • Bearbeitet Schlieng Mittwoch, 11. April 2012 13:05
    Mittwoch, 11. April 2012 13:04
  • Muss ich "Parametername" und "Parameterwert" durch ingendetwas ersetzen? Wenn ja wo finde ich diese Infos? Wenn nein, klappt es nicht :)
    Mittwoch, 11. April 2012 13:16
  • >Muss ich "Parametername" und "Parameterwert" durch ingendetwas ersetzen? Wenn ja wo finde ich diese Infos? Wenn nein, klappt es nicht :)

    Das setzt Du das ein, was Dein Script gerne als Parameter hätte. Wenn das keine haben will, entfallen die beiden Parameter einfach.


    Grüße aus Berlin schickt Robert
    MVP Exchange Server
    Mittwoch, 11. April 2012 13:44
  • habs die zwei Sachen ausgelassen bzw. entfernt, klappt leider immer noch nicht
    Mittwoch, 11. April 2012 13:59
  • >habs die zwei Sachen ausgelassen bzw. entfernt, klappt leider immer noch nicht

    Das ist schade....
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    .
    Was meinst Du, wieviele Leute Dir ohne eine Fehlerbeschreibung und genauer Information, was Du da eingetragen hast, helfen können oder wollen? ;)


    Grüße aus Berlin schickt Robert
    MVP Exchange Server
    Mittwoch, 11. April 2012 14:00
  • Also unter Programm/Skript steht:

    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

    Unter Argumente:

    -NoProfil -Command "&[C:\Users\mein benutzername\monitor-drivespace.ps1]"

    oder auch mit:

    NoProfil -Command "& { & "[C:\Users\mein benutzername\monitor-drivespace.ps1]" -[Parametername] [Parameterwert] }"

    ausprobiert.

    Mittwoch, 11. April 2012 14:13
  • Moin,

    -NoProfil -Command "&[C:\Users\mein benutzername\monitor-drivespace.ps1]"

    Sollten da wirklich die eckigen Klammern stehen, wäre die falsch. Das war nur eine Abgrenzung für den Platzhalter


    Grüße aus Berlin schickt Robert
    MVP Exchange Server
    Mittwoch, 11. April 2012 14:16
  • mit:

    -NoProfil -Command & "C:\Users\mein benutzername\monitor-drivespace.ps1"

    gehts auch nicht :(

    Mittwoch, 11. April 2012 14:23
  • Moin,

    -NoProfil -Command & "C:\Users\mein benutzername\monitor-drivespace.ps1"

    das &-Zeichen muss mit in die Anführungszeichen (hat Schlieng aber auch so geschrieben):

    -Command "& 'C:\Users\mein benutzername\monitor-drivespace.ps1'"

    Achte GANZ GENAU auf die Anführungszeichen, das ist:
    "
    &
    Space
    '
    Befehl
    '
    "


    Grüße aus Berlin schickt Robert
    MVP Exchange Server
    Mittwoch, 11. April 2012 14:32
  • geht auch nicht :(
    Mittwoch, 11. April 2012 14:43
  • >geht auch nicht :(

    Du machst es nicht leicht, Dir helfen zu wollen, wenn Du so viel Informationen lieferst. ;)

    Was geht denn nicht? Fehlermeldung?

    Ist sicher gestellt, dass das Scriptz ÜBERHAUPT funktioniert?

    Bei mir sehen gänige Taskplaner-Einträge so aus - und die funktionieren!

    %SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -NonInteractive -WindowStyle Hidden -nologo -command "& 'c:\scripts\migration.ps1'"

    Grüße aus Berlin schickt Robert
    MVP Exchange Server
    • Als Antwort vorgeschlagen birgberg Donnerstag, 14. Juni 2012 15:15
    Mittwoch, 11. April 2012 14:48
  • nein es erscheint keine Fehlermeldung.

    Das Skript klappt wenn ich es manuell mit Power Shell öffne...hab jetzt Feierabend, werde morgen früh weiterschreiben, ich hoffe es klappt dann morgen... Danke für eure Hilfe bisher :)

    Mittwoch, 11. April 2012 14:56
  • wird der Task mit Returncode 0 beendet (siehst unter "Last Run Result")?

    siehst du Fehler in der History oder im LogFile (C:\Windows\Tasks\SCHEDLGU.TXT).

    Oder poste mal die komplette Config des Tasks (rechte Maustaste / Export...)

    Mfg

    Donnerstag, 12. April 2012 05:23
  • <?xml version="1.0" encoding="UTF-16"?>
    <Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
      <RegistrationInfo>
        <Date>2012-04-11T10:23:11.7208508</Date>
        <Author>XXXX\XXX</Author>
      </RegistrationInfo>
      <Triggers>
        <CalendarTrigger>
          <StartBoundary>2012-04-11T11:10:32</StartBoundary>
          <Enabled>true</Enabled>
          <ScheduleByDay>
            <DaysInterval>1</DaysInterval>
          </ScheduleByDay>
        </CalendarTrigger>
      </Triggers>
      <Principals>
        <Principal id="Author">
          <UserId>XXXX\XXX</UserId>
          <LogonType>Password</LogonType>
          <RunLevel>LeastPrivilege</RunLevel>
        </Principal>
      </Principals>
      <Settings>
        <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
        <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
        <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>
        <AllowHardTerminate>false</AllowHardTerminate>
        <StartWhenAvailable>false</StartWhenAvailable>
        <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
        <IdleSettings>
          <StopOnIdleEnd>true</StopOnIdleEnd>
          <RestartOnIdle>false</RestartOnIdle>
        </IdleSettings>
        <AllowStartOnDemand>true</AllowStartOnDemand>
        <Enabled>true</Enabled>
        <Hidden>true</Hidden>
        <RunOnlyIfIdle>false</RunOnlyIfIdle>
        <DisallowStartOnRemoteAppSession>false</DisallowStartOnRemoteAppSession>
        <UseUnifiedSchedulingEngine>false</UseUnifiedSchedulingEngine>
        <WakeToRun>false</WakeToRun>
        <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
        <Priority>7</Priority>
        <RestartOnFailure>
          <Interval>PT1M</Interval>
          <Count>3</Count>
        </RestartOnFailure>
      </Settings>
      <Actions Context="Author">
        <Exec>
          <Command>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe</Command>
          <Arguments>-Command "&amp; 'C:\Users\XXX\monitor-drivespace.ps1'"</Arguments>
        </Exec>
      </Actions>
    </Task>
    Donnerstag, 12. April 2012 12:02
  • änder mal die Argumentszeile:

    <Arguments>-Command "&amp; { &amp; "C:\Users\XXX\monitor-drivespace.ps1" }"</Arguments>

    Unter "Add arguments" sollte das dann so aussehen: -Command "& { & "C:\Users\XXX\monitor-drivespace.ps1" }"

    Donnerstag, 12. April 2012 12:50
  • klappt auch nicht :/ ...
    Donnerstag, 12. April 2012 13:14
  • Ich bin mir mittlerweile ziemlich sicher, dass das Problem nicht die Einbindung im Task Planer ist. ;)


    Grüße aus Berlin schickt Robert
    MVP Exchange Server
    Donnerstag, 12. April 2012 13:15
  • wenn ich aber das Skript manuell starte (Rechtsklick -> Öffnen) kommt die E-Mail ca. 10 sek. später bei mir an :)
    Donnerstag, 12. April 2012 13:20
  • unter welchem User läuft der Task, hat dieser ev. nicht ausreichend Rechte!?
    • Bearbeitet Schlieng Donnerstag, 12. April 2012 13:40
    Donnerstag, 12. April 2012 13:40
  • unter meinem. Ich bin Admin
    Donnerstag, 12. April 2012 13:43
  • versuch mal den Task mit höheren Rechten laufen zulassen. 

    <RunLevel>HighestAvailable</RunLevel>

    statt

    <RunLevel>LeastPrivilege</RunLevel>

    Donnerstag, 12. April 2012 14:09
  • "Mit höchsten Privilegien" ist auch schon gesetzt :/
    Donnerstag, 12. April 2012 14:14
  • Ich glaube nicht dass man dein Problem auf diese Art debuggen kann!

    Programme (auch Skripts) die mit dem Tasksheduler gestartet werden können ja keine Fehlermeldungen in Form eines Fensters Anzeigen. Deshalb MUSS dein Skript möglichst jede Aktion in ein Logfile schreiben!

    Als allererste Aktion schreibt dein Skript natürlich in das Logfile das es gestarted wurde (Datum, Uhrzeit, Sekunden!).
    Somit entfällt auch das Ratespiel, ob die Kommandozeile im Tasksheduler richtig ist oder nicht!

    http://jdhitsolutions.com/blog/2011/03/powershell-automatic-logging/
    http://poshcode.org/2566

    Nach dem Start deines Skripts mit dem Tasksheduler läuft dies wie gesagt als Dienst (in der Windows Session 0)! Ich vermute mal dass der Mail-Aufruf dann einfach nicht mehr durchkommt!


    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '




    Freitag, 13. April 2012 11:30
  • Hallo,

    probiermal beim Parameter staat " (Hochkomma) '(einfache Hochkomma). Damit bewirkts du das, das Wert als Befehl interpitierst wirst.

    Weitere Frage , wie hast du ExecutionPolicy gesetzt?

    Samstag, 14. April 2012 21:08
  • Funktioniert auch nicht mit dem "einfachen" Komma.

    Die hab ich "so" gesetzt dass ich Scripte ausführen darf, bzw. aktiviert das was deaktiviert war.

    Montag, 16. April 2012 13:48
  • Geht es denn jetzt? Hast du Peters Rat mal befolgt?

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".

    Montag, 16. April 2012 15:04
    Moderator
  • Ciao Pakito

    Versuch es mal so:

     

    Wenn das nicht funktioniert, schreibe diesen Befehl ( start /wait %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden "C:\Users\mein benutzername\monitor-drivespace.ps1" ) mal in eine Batch-File (.bat oder .cmd) und führ sie mal aus. Mal schauen ob das ginge. Sollte das dann funktionieren, binde einfach die Batch-File in deinen Task ein.

    Wenn das auch nicht funktioniert, dann prüfe bitte nochmal was du eingegeben hast.

    Wenn auch das nicht funktioniert, prüf es nochmal und frag dann jemanden, der dir an deinem PC zeigen kann wie das funktioniert.

    Mittwoch, 18. April 2012 06:04
  • Wenn ich den Pfad von Powershell wie in den Screens von toexelchen umänder erscheinen Fehler.

    Habe die Argumente so "eingestellt", leider klappts auch nicht. Und mit der Batch File klappts auch nicht. Es öffnet sich Power Shell und alles aber die E-Mail wird nicht versendet.

    Donnerstag, 19. April 2012 09:04
  • Hab jetzt die Batch Datei so erstellt dass sie funktioniert.

    Jedoch klappt es wieder nicht in der Aufgabeplanung.

    Kann mir jemand sagen was ich in der Aufgabeplanung falsch eingegeben habe?

    Programm/Skript: C:\Windows\System32\cmd.exe

    Argumente: C: "C:\Users\Mein Benutzername\PC-DT\MD.bat"

    funktioniert auch nicht mit nur: "C:\Users\Mein Benutzername\PC-DT\MD.bat"

    Starten in: C:\Users\Mein Benutzername\PC-DT

    Auch ohne den Eintrag in "Starten in" gehts nicht.

    Donnerstag, 19. April 2012 10:21
  • Programm/Skript: C:\Windows\System32\cmd.exe

    Argumente: C: "C:\Users\Mein Benutzername\PC-DT\MD.bat"

    funktioniert auch nicht mit nur: "C:\Users\Mein Benutzername\PC-DT\MD.bat"

    Starten in: C:\Users\Mein Benutzername\PC-DT

    Auch ohne den Eintrag in "Starten in" gehts nicht.

    Programm/Script: "C:\Users\Mein Benutzername\PC-DT\MD.bat"

    Starten in: "C:\Users\Mein Benutzername\PC-DT"

    So muss es sein und so wird es auch laufen, wenn der Rest richtig eingestellt ist.

    Hast du auch die anderen Einstellungen überprüft die ich dir geschrieben habe? Hast du ein Administratorkonto ausgesucht, welches auch die Rechte hat die Abfragen zu starten. Hast du den Haken für "Mit höchsten Privilegien" gesetzt und den Haken bei "Unabhängig von der Benutzeranmeldung" gesetzt?

    Wenn es noch immer nicht läuft, kopier doch bitte mal Verlauf, bzw die Fehlermeldungen im Verlauf hier rein, so kann man dir dann auch helfen.

    Donnerstag, 19. April 2012 13:41
  • Programm/Skript: C:\Windows\System32\cmd.exe

    Argumente: C: "C:\Users\Mein Benutzername\PC-DT\MD.bat"

    funktioniert auch nicht mit nur: "C:\Users\Mein Benutzername\PC-DT\MD.bat"

    Starten in: C:\Users\Mein Benutzername\PC-DT

    Auch ohne den Eintrag in "Starten in" gehts nicht.

    Programm/Script: "C:\Users\Mein Benutzername\PC-DT\MD.bat"

    Starten in: "C:\Users\Mein Benutzername\PC-DT"

    So muss es sein und so wird es auch laufen, wenn der Rest richtig eingestellt ist.

    Hast du auch die anderen Einstellungen überprüft die ich dir geschrieben habe? Hast du ein Administratorkonto ausgesucht, welches auch die Rechte hat die Abfragen zu starten. Hast du den Haken für "Mit höchsten Privilegien" gesetzt und den Haken bei "Unabhängig von der Benutzeranmeldung" gesetzt?

    Wenn es noch immer nicht läuft, kopier doch bitte mal Verlauf, bzw die Fehlermeldungen im Verlauf hier rein, so kann man dir dann auch helfen.

    Fehlermeldungen jetzt:

    Die Aufgabenplanung konnte die Aktion "C:\Windows\System32\cmd.exe" in der Instanz "{db9e5016-7ea3-4f73-b515-779c0c3e1bc2}" der Aufgabe "\Monitor Drive Space" nicht starten. Zusätzliche Daten: Fehlerwert: 2147942667

    Die Aufgabenplanung konnte die Instanz "{db9e5016-7ea3-4f73-b515-779c0c3e1bc2}" der Aufgabe "\Monitor Drive Space" für den Benutzer "DOMAIN\Mein Benutzername" nicht starten. Zusätzliche Daten: Fehlerwert: 2147942667


    Die Aufgabenplanung konnte die Aufgabe "\Monitor Drive Space" nicht ausführen. Ein Neustart wird ausgeführt. Zusätzliche Daten: Fehlerwert: 2147942667

    So wie ich es vorhin eingestellt hatte erschienen keine Fehlermeldungen aber auch kein Erfolg.


    • Bearbeitet Pakito92 Donnerstag, 19. April 2012 13:54
    Donnerstag, 19. April 2012 13:52
  • Wie ich oben schon gesagt habe, glaube ich nicht, dass man mit diesem unkoordinierten herumgestocherte einen Fehler finden kann!
    Wenn, dann wäre das Zufall(Hurra ein 6er im Lotto ;-))
    (Wie viele TaskSheduler Zeilen willst du noch ausprobieren ? Bis zu Rente?)

    Bei der Fehlersuche sollte man systematisch vorgehen:

    Wenn dein Script im Tasksheduler keine Fehlermeldung und keine Erfolgsmeldung liefert warum gehst du dann davon aus das dein Skript nicht gestartet wurde?
    Meist liegt es dann daran das das Skript hängt!

    Dir kann einzig nur Logging helfen!
    Das heißt: Erstelle ein Skript das jede Aktion in eine Textdatei schreibt und die erste Meldung ist das das Skript gestartet wurde!

    1.    Erstelle ein Skript das ganz einfach und nur eine Zeile hat (Ausgabe in eine Textdatei, das das Skript gestartet wurde. Und starte es mit dem TaskSheduler.
    Danach weißt du dass deine Startzeile im Tasksheduler richtig ist!
    2.    Kopiere deine Code von deinem Skript mit deiner eigentlichen Aufgabe in das Skript das eben Funktioniert hat
    3.    Wenn dann wieder nichts kommt dann hilft nur Logging, Logging, Loging ……

    Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '


    Freitag, 20. April 2012 05:40
  • So, ich finde 33 Posts reichen um ein relativ einfaches Problem zu bearbeiten. Pakito92, ich denke wir sind nun an einem Punkt angelangt wo -wenn du es bis jetzt nicht lösen konntest- die Hilfsmöglichkeiten in einem Forum an ihre Grenze kommen. Ich möchte aber noch darauf Hinweisen, das ich den -von dir bisher ignorierten- Vorschlag von Peter für sehr sinnvoll halte.

     

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".

    • Als Antwort markiert Alex Pitulice Freitag, 20. April 2012 10:07
    Freitag, 20. April 2012 09:44
    Moderator
  • Fehler 2147942667: Bei "Starten in:" den Pfad OHNE "" schreiben - dann klappt es.
    Donnerstag, 14. Juni 2012 14:48