Error while uploading file using FTP

Welcome Forums General PowerShell Q&A Error while uploading file using FTP

This topic contains 5 replies, has 3 voices, and was last updated by

 
Participant
2 months, 3 weeks ago.

  • Author
    Posts
  • #158568

    Participant
    Topics: 2
    Replies: 6
    Points: 37
    Rank: Member

    Hello

    The script is not work any moor..

    this is the error:

    Exception calling "UploadFile" with "2" argument(s): "System error."
    
    At C:\MMC\batch_graphe.ps1:917 char:6
    
    + $Xwebclient.UploadFile($Xuri, $XLocalFile)
    
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    
    + FullyQualifiedErrorId : WebException
    

    Thank for your help

    Arnold

    ======================

    $Xftp = " "
    $XlocalDirectory = "c:\studio\"
    $Xuser = " "
    $Xpass = " "
    
    $Xwebclient = New-Object System.Net.WebClient
    $Xwebclient.Credentials = New-Object System.Net.NetworkCredential($Xuser,$Xpass)
    $XFiles = Get-ChildItem -Path "c:\studio\*" -Rec -For | ? {$_.LastWriteTime -gt (Get-Date).AddHours(-1)} | where { ! $_.PSIsContainer } | Select-Object FullName
    $Xnombre = $XFiles.Count
    foreach ($XFile in $XFiles)
    {
    $XLocalFile = $XFile.FullName
    
    $XRemoveDirectory = $XLocalFile.Replace("C:\studio\","")
    $XChangeSlashes = $XRemoveDirectory.Replace('\', '/')
    $XRemoveSpaces = $XChangeSlashes.Trim()
    $XRemoteFile = $Xftp+$XRemoveSpaces
    $Xuri = New-Object System.Uri($XRemoteFile)
    $Xwebclient.UploadFile($Xuri, $XLocalFile)
    
    Write-Host "Getting $XFile from $XlocalDirectory" -Foreground "Red" -BackgroundColor DarkBlue
    Write-Host "Puting $XFile to $Xftp" -Foreground "Yellow" -BackgroundColor DarkBlue
    }
    
    ""
    Write-Host "Finished Sync to $Xftp" -Foreground "Green" -BackgroundColor DarkBlue
    
  • #163350

    Participant
    Topics: 0
    Replies: 44
    Points: 235
    Helping Hand
    Rank: Participant

    @Arnold

    I have checked above script from my end and it is running as expected. As per error you have mention you need to make sure you are giving correct ftp path should be something like"ftp://{username}@{ftpa_address}{folder structure}"

    Example: 
    “ftp://evilaosa@ftp.drivehq.com/drivehqshare/evilaosa/GroupWrite/”

    Simple way to check the correct path using Filezilla.

    Thank,
    Nitesh Bhat

  • #163377

    Participant
    Topics: 2
    Replies: 6
    Points: 37
    Rank: Member

    Hello

    Thanks for your reply

    I no, this scripte works well!!

    But i have to change the protocole to us "FTPES":

    [Net.SecurityProtocolType]::Tls

    Explicite

    Passive

    Porte 21

    Thanks Arnold

  • #163449

    Participant
    Topics: 0
    Replies: 44
    Points: 235
    Helping Hand
    Rank: Participant

    you can try for below command in your script which enable the TLS security Connection for the session

    [Net.ServicePointManager]::SecurityProtocol =[Net.SecurityProtocolType]:: Ssl3 -bor[Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor[Net.SecurityProtocolType]::Tls12

    Thanks,
    Nitesh

  • #163581

    Participant
    Topics: 2
    Replies: 999
    Points: 1,946
    Helping Hand
    Rank: Community Hero

    Or to be sure,

    # enable all SSL protocols
    [Net.ServicePointManager]::SecurityProtocol = 'Ssl3,Tls, Tls11, Tls12'
  • #163608

    Participant
    Topics: 2
    Replies: 6
    Points: 37
    Rank: Member

    Thanks for your reply

    I have this (no resultat)

    cls
    
    Set-ExecutionPolicy RemoteSigned
    $errorActionPreference = 'SilentlyContinue'
    
    $Xa = (Get-Host).UI.RawUI
    $Xa.WindowTitle = "Sync Folder To Ftpes"
    
    $Xftpes = "ftp://perso-ftp.orange/"
    $Xftpes = [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls
    
    $Xftpes = Get-Content "c:\studio\"
    $XftpesW = "...……."
    $XftpesP = "...……..."
    
    $Xftpes = New-Object System.Net.WebClient
    
    $Xftpes.ToString()
    

    Also, divers Test: 🙁

    cls
    
    " 1"
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls
    Invoke-WebRequest "https://arenas.pagesperso-orange.fr/GradientExample/frameset-mediaplayer.html"
    "=============================================="
    " 2"
    [Net.SecurityProtocolType]
    " =============================================="
    " 3"
    # get TSL !!!
    [enum]::GetNames([Net.SecurityProtocolType])
    " =============================================="
    " 4"
    # Force PowerShell to use TLS 1.1
    [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls11
    # ???
    " ================================================= "
    " 5"
    # Force PowerShell to use it's default of TLS 1.0
    [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls
    # ???
    " ================================================= "
    " 6"
    # Force PowerShell ti use TLS 1.3
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls13
    < #
    Exception setting "SecurityProtocol": "Cannot convert null to type "System.Net.SecurityProtocolType" due to enumeration values that are not valid.
    Specify one of the following enumeration values and try again. The possible enumeration values are "Ssl3,Tls,Tls11,Tls12"."
    At C:\Users\admin\AppData\Local\Temp\f5d4da71-5524-47fe-8946-bb485ab4f8f6.ps1:26 char:1
    + [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolTy ...
    + CategoryInfo : NotSpecified: (:) [], SetValueInvocationException
    + FullyQualifiedErrorId : ExceptionWhenSetting
    #>
    " ================================================ "
    " 7"
    [Net.ServicePointManager]::SecurityProtocol += [Net.SecurityProtocolType]::Tls12
    
    " ================================================ "
    
    "8"
    
    $AllProtocols = [System.Net.SecurityProtocolType]'Ssl3, Tls, Tls11, Tls12'
    [System.Net.ServicePointManager]::SecurityProtocol = $AllProtocols
    $test = (Invoke-WebRequest -Uri "https://...........").StatusCode
    $test
    $AllProtocols
    

    Thanks for your help

    Arnold

You must be logged in to reply to this topic.