Das ganze funktioniert bisher recht robust – ich möchte nur noch eine (visuelle) Statusanzeige dazu programmieren.
param ([switch] $schedule)
#Set-PSDebug -Trace 1
Import-Module FileTransfer -Verbose
$today = get-date
$yesterday = $today.AddDays(-1)
$today = Get-Date -date $today -uformat "%Y%m%d"
$yesterday = Get-Date -date $yesterday -uformat "%Y%m%d"
$today = $today.tostring()
$yesterday = $yesterday.tostring()
if ($schedule) {
$taskname = $myinvocation.mycommand.definition -replace '\W','_'
schtasks /create /ru PIVO9\Christian /rl HÖCHSTE /sc MINUTE /MO 5 /tn "$taskname" /tr "%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell -c $($myinvocation.mycommand.definition)"
return;
}
pushd (split-path -parent $myinvocation.mycommand.definition)
$feed=[xml](New-Object System.Net.WebClient).DownloadString("http://***.*****.net/mythfeed/feed.php")
foreach($i in $feed.rss.channel.item) {
$url = New-Object System.Uri($i.enclosure.url)
$absURL = $url.AbsoluteUri
$filename = "C:\Users\Public\Videos\ElskeTV\" + $url.Segments[-1]
If ((Test-Path $filename) -eq $FALSE)
{
echo ----------------------------------------------------------------------------------------------------
echo $url.Segments[-1]
$joblist = Get-FileTransfer
$jobexist = $false
foreach ($i in $joblist) {
foreach ($j in $i.filelist) {
if ($j.IsTransferComplete) { Complete-FileTransfer $i }
if ($j.RemoteName -eq $absURL) {
echo "Job wurde gefunden..."
if ($j.BytesTotal -gt 0) { "{0:P1}" -f ($j.BytesTransferred / $j.BytesTotal) }
$i.JobState
$i.CreationTime
$jobexist = $true
if ($j.RemoteName -match $today) {$i | Set-FileTransfer -Priority "FOREGROUND" }
if ($j.RemoteName -match $yesterday) {$i | Set-FileTransfer -Priority "FOREGROUND" }
}
}}
if ($jobexist -eq $false) {
New-FileTransfer -ServerFileName $absURL -ClientFileNamePrefix C:\users\Public\videos\ElskeTV\ -Displayname $url.Segments[-1] -Asynchronous
Echo "Neuer Download-Job wurde hinzugefügt!"
}
}
}
echo ----------------------------------------------------------------------------------------------------
popd
#Fortschritt in Prozent der einzelnen Downloads
#$joblist = Get-FileTransfer ; foreach ($i in $joblist) { foreach ($j in $i.filelist) { if ($j.BytesTotal -gt 0) { "{0:P1}" -f ($j.BytesTransferred / $j.BytesTotal) }}}
#Summe aller übertragenen Bytes aller Downloadjobs
#$joblist = Get-FileTransfer ; $total = 0 ; foreach ($i in $joblist) { foreach ($j in $i.filelist) { if ($j.BytesTotal -gt 0) {$total = $total + $j.BytesTransferred}}} ; $total ; get-date
#Downloadjobs auflisten, die in den letzten 10 Minuten erstellt wurden
#get-FileTransfer | Where {$(Get-Date).AddMinutes(-10) -lt $_.CreationTime}
#Dateien auflisten mit einem bestimmten Datum im Dateinamen
#$joblist = Get-FileTransfer ; foreach ($i in $joblist) { foreach ($j in $i.filelist) { if ($j.RemoteName -match "20090418") {$i | fl * } }}
#Priority hochsetzen für Downloads mit einem bestimmten Datum im Dateinamen
#$joblist = Get-FileTransfer ; foreach ($i in $joblist) { foreach ($j in $i.filelist) { if ($j.RemoteName -match "20090418") {$i | Set-FileTransfer -Priority "FOREGROUND" } }}