Na serwer FTP trzeba wysłać plik. Czemu by nie skorzystać z powershella?
$ftp = "ftp://server_name//dir_name/subdir/" $user = "username" $pass = "password" $destinationFileName = 'filename.csv' $sourceFileName = 'c:\temp\filename.csv' $webclient = New-Object System.Net.WebClient $webclient.Credentials = New-Object System.Net.NetworkCredential($user,$pass) $uri = New-Object System.Uri($ftp+$destinationFileName) $webclient.UploadFile($uri, $sourceFileName)
Wszystko pięknie, ale plik miał domyślne uprawnienia, które należało zwiększyć. W takim przypadku niestety trzeba wrócić do interfejsu znakowego program ftp.exe dostępnego w Windows. Parametr s pozwala na wywołanie ftp razem z plikiem komend, który zawiera w sobie instrukcje jakie mają być wykonane przez ftp. Jeśli chcieć opisać to w powershell, to należałoby
- zbudować plik komend
- uruchomić ftp wskazując parametrem s na ten plik
W samym pliku z komendami następująca instrukcja określa jakie uprawnienia mają mieć nowotworzone pliki:
$ftpServer = 'server_name' $remoteDir='/dir_name/subdir' $user = "user_name" $pass = "password" $fileName = 'filename.csv' #create a command file $commandFile = 'c:/temp/commandfile.txt' "open $ftpServer" | Out-File $commandFile -Force "$user" | Out-File $commandFile -Append "$pass" | Out-File $commandFile -Append "cd $remoteDir" | Out-File $commandFile -Append "quote SITE UMASK 113" | Out-File $commandFile -Append "put $fileName" | Out-File $commandFile -Append "disconnect" | Out-File $commandFile -Append "quit" | Out-File $commandFile -Append # run ftp pointing to command file &ftp.exe -s:$commandFile
Zobacz też tu: