PowerShell parallel Script Block schluckt erstes Objekt
Hallo,
für Backup Export aus Acronis Cyberbackup mittels acrocmd hol ich mir die arcuids und führe folgendes aus. Letzte Zeile des Return des Exports als Success-Indication.
WSUS wegen 3 TB soll raus. Bleibt es auch. Es sollten dann 41 von 42 Exportiert werden. Ich bekomm aber nur 40 heraus! Es gibt keine *.ERROR Datei oder Log Eintrag dazu.
Ginge vlt. noch schöner aber es läuft. Wenn es um 4 Uhr nachts startet wird parallel gut 1 TB in 2,5 Std. geschrieben. Auch OK soweit.
Nur es fehlt mir immer eine VM - das Archiv01. Ist aber so im Array mit drin. Wenn ich als Trockenübung nur ein "Out-File" jetzt mache und parallel statt des Exportes einfach eine TXT schreiben lassen, ist Archiv01 mit drin. Auch im Array is die arc_uid enthalten.
Es schlägt immer nur der Lauf in der Nacht via Taskplaner fehl.
Bei mehreren Blöcken kann man ja -Begin und -End auf $null setzen. Ich hab aber nur diesen einen Block. Es verhält sich nur nun fast so, als wenn das 1. Object in $null reinläuft. Hab es aber unten nicht so aufgebaut.
In VScode ist alles schön. Man bekommt jedes mal die 41 Dateien (sortiert nach letzten Backup/ Archiv Erstelldatum vor x-Monaten). Liege also nun immer beim 08. Mai. Wollte eh noch Log einbauen.
Hat jemand spontan eine Idee wieso es in VScode läuft, aber via pwsh.exe + Taskplaner das 1. Objekt immer raushaut?
mfg Crusher
für Backup Export aus Acronis Cyberbackup mittels acrocmd hol ich mir die arcuids und führe folgendes aus. Letzte Zeile des Return des Exports als Success-Indication.
WSUS wegen 3 TB soll raus. Bleibt es auch. Es sollten dann 41 von 42 Exportiert werden. Ich bekomm aber nur 40 heraus! Es gibt keine *.ERROR Datei oder Log Eintrag dazu.
Ginge vlt. noch schöner aber es läuft. Wenn es um 4 Uhr nachts startet wird parallel gut 1 TB in 2,5 Std. geschrieben. Auch OK soweit.
Nur es fehlt mir immer eine VM - das Archiv01. Ist aber so im Array mit drin. Wenn ich als Trockenübung nur ein "Out-File" jetzt mache und parallel statt des Exportes einfach eine TXT schreiben lassen, ist Archiv01 mit drin. Auch im Array is die arc_uid enthalten.
$_ | Out-File -FilePath "d:\temp\test\$($_).txt"
Es schlägt immer nur der Lauf in der Nacht via Taskplaner fehl.
Bei mehreren Blöcken kann man ja -Begin und -End auf $null setzen. Ich hab aber nur diesen einen Block. Es verhält sich nur nun fast so, als wenn das 1. Object in $null reinläuft. Hab es aber unten nicht so aufgebaut.
In VScode ist alles schön. Man bekommt jedes mal die 41 Dateien (sortiert nach letzten Backup/ Archiv Erstelldatum vor x-Monaten). Liege also nun immer beim 08. Mai. Wollte eh noch Log einbauen.
Hat jemand spontan eine Idee wieso es in VScode läuft, aber via pwsh.exe + Taskplaner das 1. Objekt immer raushaut?
$backupLoc="D:\Sicherungen\Acronis_CB_Local\"
$expDir="D:\Sicherungen\Acronis_EXP\"
$successMessage="The operation completed successfully."
$DateValLen = $("_20240506_080135.ERROR").Length
$dateFormat = 'dd.MM.yyyy HH:mm:ss'
# "" Blank ALLE - Mehrach "aaa|bbb|ccc"
$excludeUID = "WSUS"
$includeUID = ""
Function DetermineArcFailed() {
$Script:arc_failed = $(Get-ChildItem -Path $expDir -Filter "*.ERROR" | Where-Object { $_.LastWriteTime.Day -eq (Get-date).Day }).Name `
| ForEach-Object { $_.ToString().Substring(0,$($_.ToString().Length-$DateValLen)) }
}
$arc_list = acrocmd list archives --loc=$backupLoc --output=raw --all
$arc_list_csv = ConvertFrom-CSV -Delimiter "`t" -InputObject $arc_list -Header "Name","Mode","Date","Appliance","User","Size","VM" | Where-Object { $_.Mode -eq 'disk' } `
| Select-Object *,@{Name = 'DateTime'; Expression = {[datetime]::ParseExact($_.Date, $dateFormat, [cultureinfo]::InvariantCulture)}} -ExcludeProperty datetime
$arc_list_csv_orderd = $arc_list_csv | Sort-Object -Property DateTime -Descending | Group-Object -Property 'VM' | ForEach-Object {$_.Group[0]}
$arc_uid = $arc_list_csv_orderd.Name | Where-Object {$_ -notmatch "$excludeUID" -and $_ -match "$includeUID"}
$acro_job = $arc_uid | ForEach-Object -Parallel {
$expDirL=$using:expDir
$backupLocL=$using:backupLoc
$successMessageL=$using:successMessage
$exportJob = acrocmd export backup --loc=$backupLocL --arc=$_ --target=$expDirL
if ($($exportJob | Select-Object -Last 1) -eq $successMessageL) {
$timeStamp=(Get-Date).ToString("yyyyMMdd_HHmmss")
$dateStamp=(Get-Date).ToString("yyyy_MM_dd")
Rename-Item -Path "$expDirL\$_.tibx" -NewName "$($_)_$timeStamp.tibx"
New-Item -Path "$expDirL\$($_)_$timeStamp.OK" -ItemType File
} ELSE {
New-Item -Path "$expDirL\$($_)_$timeStamp.ERROR" -ItemType File
}
} -ThrottleLimit 4 -AsJob
$acro_job
mfg Crusher
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 72437228923
Url: https://administrator.de/contentid/72437228923
Ausgedruckt am: 21.11.2024 um 18:11 Uhr
2 Kommentare
Neuester Kommentar