Progressbar Powershell
Wie kann ich zu diesem Quellcode ein Ladebalken hinzufügen, dieses soll während des Kopie-Vorgang starten?
<#
AUTO COPY DISK ON INSERT
#>
# ==============
# drive letter to monitor
$drive = 'D:'
# backup root folder
$target = 'C:\tmp'
# =============
# only continue if PS >= Version 3.0
if ($PSVersionTable.PSVersion.Major -lt 3){write-host "ERROR: Minimum Powershell Version 3.0 is required!" -F Yellow; return}
# create root folder if not exist
if (!(Test-Path $target)) {md $target -Force | out-null}
# delete eventcubscriber if there are still open ones
Get-EventSubscriber | Unregister-Event -Force
# shell object
$global:shell = New-Object -Com Shell.Application
# WMI Event Registration (Action fires when CD-Drive changes it's state)
Register-WmiEvent -Query "Select * From __InstanceModificationEvent Within 1 where TargetInstance isa 'Win32_LogicalDisk' and TargetInstance.DriveType = 5 and TargetInstance.Size != null and TargetInstance.DeviceId = '$drive'" -SourceIdentifier 'RemovableDetector' -Action {
$deviceid = $Event.SourceEventArgs.NewEvent.TargetInstance.DeviceID
# create target subfolder with name format
$targetfolder = "c:\tmp\$(Read-host 'Patientennamen eingeben')$('_')$(get-date -f yyyy)$('__')$(get-date -f HH.mm.ss)"
md $targetfolder -Force | out-null
# list drive information
write-host "CD lädt..." -F Green
write-host ($Event.SourceEventArgs.NewEvent.TargetInstance | select DeviceId | ft -AutoSize | out-string)
write-host "CD-Inhalte werden kopiert ... '$targetfolder' ... " -F Green
# copy to target
copy-item "$deviceid\*" -Recurse -Destination $targetfolder -Force -exclude *.txt
# eject disk
write-host "Fertig. CD wird ausgeworfen ... '$deviceid' ..." -F Red
$global:shell.Namespace(17).ParseName($deviceid).Verbs() | ?{$_.Name.replace('&','') -match '^(Auswerfen|Eject)$'} | %{$_.Doit()}
write-host 'Nächste CD einlegen ...' -F white
} | out-null
cls
write-host 'CD einlegen ...' -F Green
while($true){sleep 1}
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 425846
Url: https://administrator.de/forum/progressbar-powershell-425846.html
Ausgedruckt am: 20.04.2025 um 14:04 Uhr
8 Kommentare
Neuester Kommentar
Moin,
guck mal, was Google dazu findet:
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
hth
Erik
guck mal, was Google dazu findet:
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell. ...
hth
Erik

Suche benutzen
Powershell Progressbar will nicht
Powershell Progressbar will nicht

Du kannst den Kopiervorgang von Copy-Item vom Codebeispiel damit nicht loggen! Dazu müsstest du z.B. Robocopy verwenden und dessen Statusausgabe auswerten, oder jede Datei einzeln mit Foreach-Schleife kopieren, dazu gibt es hier aber im Forum schon genügend Beispiele.
Wie gesagt Suchfunktion nutzen.
Vorgehensweise
Wie gesagt Suchfunktion nutzen.
Vorgehensweise
- Mit Get-childitem alle Dateien enumerieren
- Die Anzahl mit der Eigenschaft Count ermitteln
- Mit for each Schleife die Dateien kopieren und in der Schleife mit Write-progress den Status aktualisieren. Prozentsatz bekommst du ja mit einer Grundschulrechenaufgabe => Schleifenvariable / Gesamtanzahl Dateien * 100
- So und jetzt Birne anschalten und ran ans Werk.

Dann holt er sich eben ein Grid-Girl das bei jedem Wechsel mit einem Schild mit der Prozentzahl vorbei kommt 😄