Powershell: ftp ze zmianą uprawnień

4-lis-2019

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:

Powershell: Upload pliku przez FTP

Komentarze są wyłączone

Autor: Rafał Kraik