PowerShell - FTP Upload Script No Longer Working
-
I have the following FTP upload script that stopped working after a server migration and IP change.
$File = "D:\Data\BAUPC.CSV" $ftp = "ftp://user.name:[email protected]/BAUPC.CSV" "ftp url: $ftp" $webclient = New-Object System.Net.WebClient $uri = New-Object System.Uri($ftp) "Uploading $File..." $webclient.UploadFile($uri, $File)
It was run on a schedule to upload a csv file to a web server. I changed the IP address (obviously, not the one above). The username is now in a [email protected] syntax. After updating credentials, I get a 530 error (not logged in).
I am guessing it no longer likes the username and password as part of the URL. Any suggestions on how to modify this script?
And yes, I did verify that the settings work in FileZilla (I did have to change it to Only use plain FTP).
-
Did the password change? Do you have special character in it?
-
That said, I have never had good luck with the
System.Net.WebClient
back when I was developing.I ended up getting the dll from this and doing things.
https://winscp.net/eng/index.php -
@JaredBusch Yes, password changed. Only alphanumeric.
-
If the username has an @ symbol in it, wouldn't he have to escape that?
-
@dafyre, I would have thought so because the @ is used for here-strings but powershell seems fine with them:
PS C:\Users\manxam> $test = "@" PS C:\Users\manxam> echo $test @ PS C:\Users\manxam> $test2 = '@' PS C:\Users\manxam> echo $test2 @
-
@manxam said in PowerShell - FTP Upload Script No Longer Working:
@dafyre, I would have thought so because the @ is used for here-strings but powershell seems fine with them:
PS C:\Users\manxam> $test = "@" PS C:\Users\manxam> echo $test @ PS C:\Users\manxam> $test2 = '@' PS C:\Users\manxam> echo $test2 @
But it is not powershell. it is
System.Net.WebClient
that is using it. -
I am trying a winscp script. Haven't gotten in correct yet.
-
WinSCP doesn't like [email protected] syntax for the username either. WTF
-
What version of Windows does this run on?
When i try to run it (Windows 10), it crashes on the $uri line.
-
@dafyre said in PowerShell - FTP Upload Script No Longer Working:
What version of Windows does this run on?
When i try to run it (Windows 10), it crashes on the $uri line.
Server 2012 R2 (is where the FTP client/script is running)
-
@wrx7m said in PowerShell - FTP Upload Script No Longer Working:
WinSCP doesn't like [email protected] syntax for the username either. WTF
because it is smarter and has credential variables to be supplied.
-
@JaredBusch So it looks like I will have to use url-encoding. However, I can't get this to work either.
https://winscp.net/eng/docs/session_url -
@wrx7m Why don't you just use the (built-in) ftp client in windows?
ftp -s:filename_with_ftp_commands
Run whatever commands you need for instance:
open 10.43.0.0 [email protected] user_password put D:\Data\BAUPC.CSV /BAUPC.CSV bye
Do it manually first so you know it works then just put the commands in the file.
PS. Here is a list of the command in the built-in windows ftp client. https://www.nsftools.com/tips/MSFTP.htm
-
@Pete-S I used to have that setup, but there was something that happened where it got deprecated or something like that. can't remember now. It was a couple of years ago. I will try it again.
-
@Pete-S it still gives login incorrect
-
@wrx7m said in PowerShell - FTP Upload Script No Longer Working:
@Pete-S it still gives login incorrect
Then you probably made a mistake somewhere.
Login works here with a username in the format [email protected]. Win7 client connecting to linux ftp server.
So it's not the windows ftp client that is the problem. -
It could be that the server is requiring a SSL/TLS connection.
Then it would connect over normal FTP but switch to encryption before sending username/password. But then all firewall rules and whatnot have to be set right and the client also has to support TLS for it to work.
Is it a windows server you sending the file to? Then check what ftp server settings it has.
-
I tried using this on a local FTP server that I control using known usernames and passwords....
using user.name / MySecretPassword! works fine.
using [email protected] / MySecretPassword! does not work at all -- with the ftp command line, nor the .Net.Webclient for me.
-
@Pete-S said in PowerShell - FTP Upload Script No Longer Working:
@wrx7m said in PowerShell - FTP Upload Script No Longer Working:
@Pete-S it still gives login incorrect
Then you probably made a mistake somewhere.
Login works here with a username in the format [email protected]. Win7 client connecting to linux ftp server.
So it's not the windows ftp client that is the problem.The server is running ProFTPD. It is not running encryption, because I had to disable encryption in Filezilla in order to connect.