sirbounty
asked on
ftp using powershell
I've tried a couple of different scripts I've found online, and I thought I had one working, but find myself back at square one.
I landed on this one today, ran it from my workstation, pointing to the remote file, and it worked.
I placed the script on the server, where it will be automated, and it writes the data, but once the rs closes, the file is gone...I have no idea why?
I landed on this one today, ran it from my workstation, pointing to the remote file, and it worked.
I placed the script on the server, where it will be automated, and it writes the data, but once the rs closes, the file is gone...I have no idea why?
$ftpFile = 'ftp://destination/folder/filename.csv'
$ftp = [System.Net.FtpWebRequest]::Create($ftpFile)
$ftp = [System.Net.FtpWebRequest]$ftp
$ftp.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile
$ftp.Credentials = new-object System.Net.NetworkCredential('xxxxxxx',xxxxxx')
$ftp.UseBinary = $true
$ftp.UsePassive = $true
$content = [System.IO.File]::ReadAllBytes($file)
$ftp.ContentLength = $content.Length
$rs = $ftp.GetRequestStream()
$rs.Write($content, 0, $content.Length)
$rs.Close()
$rs.Dispose()
ASKER
via a parameter in my function.
It's a string value of the source file's location on the local server.
It's a string value of the source file's location on the local server.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Yeah, I'm using the same credentials to the ftp, from both devices.
Hmm... I can't get it to replicate. What OS is it running on when having the issue? As a scheduled task?
So you can see the file with the correct file size then it vanishes. correct? Does it delete itself after .dispose or after .close (can you add 'start-sleep -s 10' between each of those commands to see at what point it does the deletion?)
So you can see the file with the correct file size then it vanishes. correct? Does it delete itself after .dispose or after .close (can you add 'start-sleep -s 10' between each of those commands to see at what point it does the deletion?)
ASKER
It runs as a task, yes, on a 2k8r2 server. But running it manually on that server still fails.
On my Win7 desktop, it worked. However, I need to ensure I'm using the exact code in both environments - there may have been some slight tweaks when transferring.
I'll run again and see.
As to the last question - I think it was at the dispose - I'll step through the code waiting 10 seconds and see what happens. Thanks for the suggestions.
On my Win7 desktop, it worked. However, I need to ensure I'm using the exact code in both environments - there may have been some slight tweaks when transferring.
I'll run again and see.
As to the last question - I think it was at the dispose - I'll step through the code waiting 10 seconds and see what happens. Thanks for the suggestions.
ASKER
Nope, it happened after close() was sent...weird. I'll try waiting longer.
At the $rs.write... the file is currently 'there', but with 0 bytes. I'm going to let it sit here for a while and check it later.
At the $rs.write... the file is currently 'there', but with 0 bytes. I'm going to let it sit here for a while and check it later.
ASKER
At $rs.write...
ftp> ls -l
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
total 2
-rw-rw-rw- 1 root root 0 Oct 24 07:03 filename.csv
226 Transfer complete.
ftp: 102 bytes received in 0.01Seconds 11.33Kbytes/sec.
After waiting a bit...ftp> ls -l
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
total 16834
-rw-rw-rw- 1 root root 13680039 Oct 24 07:04 filename.csv
226 Transfer complete.
ftp: 107 bytes received in 0.02Seconds 4.65Kbytes/sec.
After waiting a bit longer...ftp> ls -l
200 PORT command successful.
150 Opening ASCII mode data connection for file list.
total 16834
-rwxr-xr-x 1 30001 30000 13680268 Oct 24 07:08 filename.csv
226 Transfer complete.
ftp: 107 bytes received in 0.03Seconds 4.12Kbytes/sec.
At this point, if I try $rs.close(), it throws an exception (remote server returned Page type unknown)
What about the FTP server, what platform/software is it? Do you know if there is a file size limit?
If you test with a small 1kb text file does it work?
If you test with a small 1kb text file does it work?
ASKER
I don't know much about the target server. I'll need to contact that area to find out more, but yes I can try with a 1k file.
ASKER
I'll just add the sleep to the process - thanks for the help
Open in new window