none
Automatisches ausführen eines Scriptes RRS feed

  • Frage

  • Hallo,

    ich möchte ein Script zur Datensicherung automatisch jeden Tag einmal laufen lassen. Das Script zu Datensicherung läuft, nur die automatische Ausführung nicht.

    Leider geht bei mir die Aufgabenplanung nicht, daher möchte ich es programmbasiert lösen?

    Kann mir jemand weiterhelfen?


    Danke Vg

    Dienstag, 18. Juni 2013 09:26

Antworten

  • Du brauchst auf jeden Fall einen Rechner der dauernd läuft, das sind typischerweise Server.
    Auf diesem kannst du ein PowerShell Script laufen lassen, mit einer Endlosschleife. in der Schleife kannst du mit Get-Date auf ein bestimmte Zeit warten oder mit Start-Sleep etwas in einem Zeitintervall starten.
    Start-Sleep muss du auf jeden Fall anwenden, sonnst frisst deine Endlosschleife sehr viel CPU !

    Das Script wird am besten mit dem Start des Rechners gestartet (Longon script startet dieses Script).

    Beispiel:

    # Das Datum und die Zeit auslesen
    $DateTime = Get-Date

    # den Wert für gestern berechnen # wird gebraucht um dinge nur einmal am Tag laufen zu lassen! $Today = $DateTime.Year + $DateTime.Month + $DateTime.Day - 1 # eine Endlosschleife generieren while ($true) { # Das Datum und die Zeit auslesen $DateTime = Get-Date # Einmal am Tag ($Today) um 16:30 etwas ausführen lassen If($DateTime.Hour -eq 16 -and $DateTime.Minute -eq 30 -and ($DateTime.Year + $DateTime.Month + $DateTime.Day) -lt $Today ) { # den Wert für heute neu setzen # wird gebraucht um dinge nur einmal am Tag laufen zu lassen! $Today = $DateTime.Year + $DateTime.Month + $DateTime.Day ############### Mach was hier ! ############################## # Am besten einen Job starten! Dann kann dieses Script mit der Endlosschleife weiterarbeiten. Start-Job -FilePath \\Mein\Tolles\Arbeits-Script.ps1 ############################################################## } # Diese Script für 15 Sekunden schlafen legen und CPU sparen Start-Sleep -Seconds 15 }


    oder du nimmst dies hier:

    http://www.freebyte.com/fbtaskscheduler/


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    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' '
    German ? Come to German PowerShell Forum!

    Mittwoch, 19. Juni 2013 09:08
  • Alternativ kannst du auch einen Timer verwenden. Bsp:

    $timer = new-object timers.timer 
    $action = {write-host "lets do it..."}  
    $timer.Interval = 86400000 # alle 24 Stunden
    Register-ObjectEvent -InputObject $timer -EventName elapsed –SourceIdentifier BackupTimer -Action $action
    $timer.start() 
    
    # Um den Timer wieder zu entfernen....
    # $timer.stop() 
    # Unregister-Event BackupTimer 
    

    Gruß Malte
    Mittwoch, 19. Juni 2013 10:50

Alle Antworten

  • Was geht denn mit der Aufgabenplanung nicht, damit kannst Du sehr wohl PowrShellScrite starten?

    Einen Task mit der Aufgabenplanung bauen, und an der entspechnenden Stelle Tab Aktion dass eintragen

    powershell.exe -noProfile -ExecutionPolicy Bypass -File \\System\Share\deinscript.ps1 


    • Bearbeitet brima Dienstag, 18. Juni 2013 11:10
    Dienstag, 18. Juni 2013 11:09
  • Die Aufgabenplanung hat die IT bei uns deaktiviert und sagt die darf ich net benutzen, deswegen geht die net...

    Die sind hier dermaßen borniert, die PS 3.0 wollen Sie nicht installieren damit ich nicht als einziger damit arbeite (einer von dreien....)

    Mittwoch, 19. Juni 2013 07:40
  • Du brauchst auf jeden Fall einen Rechner der dauernd läuft, das sind typischerweise Server.
    Auf diesem kannst du ein PowerShell Script laufen lassen, mit einer Endlosschleife. in der Schleife kannst du mit Get-Date auf ein bestimmte Zeit warten oder mit Start-Sleep etwas in einem Zeitintervall starten.
    Start-Sleep muss du auf jeden Fall anwenden, sonnst frisst deine Endlosschleife sehr viel CPU !

    Das Script wird am besten mit dem Start des Rechners gestartet (Longon script startet dieses Script).

    Beispiel:

    # Das Datum und die Zeit auslesen
    $DateTime = Get-Date

    # den Wert für gestern berechnen # wird gebraucht um dinge nur einmal am Tag laufen zu lassen! $Today = $DateTime.Year + $DateTime.Month + $DateTime.Day - 1 # eine Endlosschleife generieren while ($true) { # Das Datum und die Zeit auslesen $DateTime = Get-Date # Einmal am Tag ($Today) um 16:30 etwas ausführen lassen If($DateTime.Hour -eq 16 -and $DateTime.Minute -eq 30 -and ($DateTime.Year + $DateTime.Month + $DateTime.Day) -lt $Today ) { # den Wert für heute neu setzen # wird gebraucht um dinge nur einmal am Tag laufen zu lassen! $Today = $DateTime.Year + $DateTime.Month + $DateTime.Day ############### Mach was hier ! ############################## # Am besten einen Job starten! Dann kann dieses Script mit der Endlosschleife weiterarbeiten. Start-Job -FilePath \\Mein\Tolles\Arbeits-Script.ps1 ############################################################## } # Diese Script für 15 Sekunden schlafen legen und CPU sparen Start-Sleep -Seconds 15 }


    oder du nimmst dies hier:

    http://www.freebyte.com/fbtaskscheduler/


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    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' '
    German ? Come to German PowerShell Forum!

    Mittwoch, 19. Juni 2013 09:08
  • Alternativ kannst du auch einen Timer verwenden. Bsp:

    $timer = new-object timers.timer 
    $action = {write-host "lets do it..."}  
    $timer.Interval = 86400000 # alle 24 Stunden
    Register-ObjectEvent -InputObject $timer -EventName elapsed –SourceIdentifier BackupTimer -Action $action
    $timer.start() 
    
    # Um den Timer wieder zu entfernen....
    # $timer.stop() 
    # Unregister-Event BackupTimer 
    

    Gruß Malte
    Mittwoch, 19. Juni 2013 10:50