OK pardon mein Skript noobness, ich habe ein PowerShell-Skript, die einen Ordner für bestimmte Dateien Erweiterung suchen und sie auf eine FTP-Site hochladen und erstellt eine Protokolldatei.FTP-Upload und REname
Dies funktioniert gut, aber es gibt eine neue Anforderung, die Dateierweiterung nach dem Upload umzubenennen. Ich verstehe, dass ich WebRequest anstelle von WebClient verwenden muss, aber ich habe damit zu kämpfen. Wie kann ich das erreichen? Hier ist das aktuelle Skript:
$LogFile='C:\test\log.txt'
$TimeStamp= get-date -Format yyyyMMdd"_"HHmmss
$ScriptrunTime= get-date
Add-Content $LogFile ' '
Add-Content $LogFile '------------------------------------------------------'
Add-Content $LogFile ' '
$msg= '----------- Script run time: ' + $TimeStamp +' -----------'
Add-Content $LogFile $msg
Add-Content $LogFile ' '
$FTP="ftp://username:[email protected]/folder/"
$webclient = New-Object System.Net.WebClient
$webclient.Proxy = [System.Net.WebRequest]::DefaultWebProxy
$Source ='C:\source'
try{
$data = @(dir -file $Source\*.tmp | select fullname, name)
$msg='Source: ' + $Source
Add-Content $LogFile $msg
Add-Content $LogFile ' '
$msg='Target: ' + $FTP
Add-Content $LogFile $msg
Add-Content $LogFile ' '
$msg='There are ' + $data.Count + ' files to upload'
Add-Content $LogFile $msg
foreach($item in $data){
Add-Content $LogFile ' '
$UploadFile=$ftp+$item.Name
$UploadFileName=$item.FullName
try
{
$msg="Uploading $UploadFile"
Add-Content $LogFile $msg
$webclient.UploadFile($UploadFile, $UploadFileName)
Add-Content $LogFile ' '
Add-Content $LogFile "Upload completed"
Add-Content $LogFile ' '
Add-Content $LogFile ' '
Add-Content $LogFile "Delete file"
}
catch
{
$ErrorDesc=$_.Exception.Message
Add-Content $LogFile ' '
$msg='Error occured: '+ $ErrorDesc
Add-Content $LogFile $msg
}
Add-Content $LogFile ' '
}
}
catch
{
$ErrorDesc=$_.Exception.Message
Add-Content $LogFile ' '
$msg='Error occured: '+ $ErrorDesc
Add-Content $LogFile $msg
}
$TimeStamp= get-date -Format yyyyMMdd"_"HHmmss
$ScriptrunTime= get-date
Add-Content $LogFile ' '
$msg='----------- Script end time: ' + $TimeStamp +' -----------'
Add-Content $LogFile $msg
Könnten Sie die Datei vor dem Upload mit Move-Item nicht umbenannt, um es zu einem Bereitstellungsbereich (zugleich) bewegen, laden Sie die neu-Datei umbenannt, dann löschen Sie alle in der Bereitstellungsbereich? – VendableFall
Warum ändern Sie einfach die Erweiterung vor dem Hochladen auf FTP? –
Mögliches Duplikat von [Datei auf FTP mit PowerShell umbenennen] (http://stackoverflow.com/questions/12070808/rename-file-on-ftp-with-powershell) –