Jump to content

Powershell - Parallele Jobs


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben (bearbeitet)

Hey Scripting Guys,

 

ich habe ein Skript, dass ein Backup zu jeder Datenbanken in einem bestimmten Ordner erstellt. Die Backups laufen in parallelen Jobs, die eine maximale Anzahl nicht überschreiten dürfen.  

#count running jobs
    Function ThreadsCount{
    Get-Job -State Running | Out-File -FilePath $filepath
    $find=Select-String -path $filepath -pattern "Running"
    return,$find.count
}


#backup 
ForEach($db in (Get-ChildItem -Path $datadir -Filter "*gdb" -Name)-replace ".GDB","") {  


                    $backup = "$firebird -b -v -user USER -password PASSWORD $datadir$db.GDB $backupdir$db.gbk -y $backupdir$db.log"
                    $backup_job = [scriptblock]::Create("cmd /c '$backup'")
                    $var = {Start-Job -Name Backup-$db -ScriptBlock $backup_job}
                    .$var 

                    #check running jobs                    
                    $tmp = ThreadsCount
                    while ($tmp -eq $MAXTHREADS){
                        echo "max Anzahl"
                        # Sleep time between next background check
                        Start-Sleep -s $WAITSECONDS
                        $tmp = ThreadsCount
                    }
Nun möchte ich die Backup-Datei zippen. Welchen Befehl muss ich nutzen, dass nach dem Backup-Job die Datei gezippt wird und diese trotzdem parallel laufen?
 
Danke im Voraus!
bearbeitet von 0815newby
Geschrieben (bearbeitet)

Wenn ich die folgende Zeile ausführe, passiert nix mehr. Er zeigt zwar an, dass er was macht, allerdings werden keine Dateien erstellt.

$backup_job = [scriptblock]::Create("cmd /c '$backup'" -and "cmd /c $zippen'")
bearbeitet von 0815newby
Geschrieben (bearbeitet)

Wenn ich die folgende Zeile ausführe, passiert nix mehr. Er zeigt zwar an, dass er was macht, allerdings werden keine Dateien erstellt.

$backup_job = [scriptblock]::Create("cmd /c '$backup'" -and "cmd /c $zippen'")

 

Ich schrub ja auch nicht -and, sondern & - der Befehls-Konkatenator von cmd.exe:

 

echo 1 & echo 2 & echo 3

 

smile.gif

bearbeitet von daabm
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...