Question
Script de transfert fichier sur serveur FTP SSL
- FABRE
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 7 ans 11 mois #25329
par FABRE
Script de transfert fichier sur serveur FTP SSL a été créé par FABRE
Bonjour a tous ;D
Dans le cadre de mon stage en entreprise je travail sur un outil qui permet d'ajouter des références etc à partir d'EXCEL et j'ai créer une macro qui récupère les feuilles EXCEL pour les créer en fichier CSV.
J'ai donc voulu créer une macro qui utilise un Script powershell pour transférer les fichier CSV vers un serveur FTP ( celui de l'entreprise dans laquelle je suis ) mais ce serveur possède un serveur FTP protéger par du SSL du coup comme vous pouvez le deviner j'ai eu ce joli message qui est apparu
Exception lors de l'appel de «UploadFile» avec «2» argument(s): «Le serveur distant a retourné une erreur: (534)
534 Policy requires SSL.
ainsi que :
Au caractère C:\temp\ScriptFTP.ps1:42 : 9
+ $client.UploadFile($file, $item.FullName)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (
[], MethodInvocationException
+ FullyQualifiedErrorId : WebException
DU coup je me demandais si il était possible de passer outre la sécurité SSL
j'ai commencé a regarder et il y aurait peut être une requête qui fait un enableSSL 
voici mon code
[code:1]$user = \"USER\" #Compte ftp
$password = \"password\" #Mot de passe du compte ftp
$localdir = \"C:\temp\FTP\" #Dossier source
$ftpdir = \"ftp://monsite.fr/CSV/\" #Dossier destination
$client = New-Object System.Net.WebClient
$client.Credentials = New-Object System.Net.NetworkCredential($user,$password)
foreach($item in Get-ChildItem -recurse $localdir){
$filename = [system.io.path]::GetFullPath($item.FullName).SubString([system.io.path]::GetFullPath($localdir).Length + 1)
$ftprequest.EnableSsl = $true
if ($item.Attributes -eq \"Directory\"«»){
try{
Write-Host \"Création de $item.Name\"
$makedir = [System.Net.WebRequest]::Create($ftpdir+\"/\"+$parentfolder+\"/\"+$filename);
$makedir.Credentials = New-Object System.Net.NetworkCredential($user,$password)
$makedir.Method = [System.Net.WebRequestMethods+FTP]::MakeDirectory;
$makedir.GetResponse();
}
catch [Net.WebException] {
Write-Host $item.Name probably exists ...
}
continue;
}
Write-Host \"Transfert de $item...\"
$file = New-Object System.Uri($ftpdir+\"/\"+$parentfolder+\"/\"+$filename)
$client.UploadFile($file, $item.FullName)
}[/code:1]
Message édité par: P_FABRE, à: 19/04/18 10:09<br><br>Message édité par: P_FABRE, à: 19/04/18 12:05
Dans le cadre de mon stage en entreprise je travail sur un outil qui permet d'ajouter des références etc à partir d'EXCEL et j'ai créer une macro qui récupère les feuilles EXCEL pour les créer en fichier CSV.
J'ai donc voulu créer une macro qui utilise un Script powershell pour transférer les fichier CSV vers un serveur FTP ( celui de l'entreprise dans laquelle je suis ) mais ce serveur possède un serveur FTP protéger par du SSL du coup comme vous pouvez le deviner j'ai eu ce joli message qui est apparu
Exception lors de l'appel de «UploadFile» avec «2» argument(s): «Le serveur distant a retourné une erreur: (534)
534 Policy requires SSL.
ainsi que :
Au caractère C:\temp\ScriptFTP.ps1:42 : 9
+ $client.UploadFile($file, $item.FullName)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (
+ FullyQualifiedErrorId : WebException
DU coup je me demandais si il était possible de passer outre la sécurité SSL
voici mon code
[code:1]$user = \"USER\" #Compte ftp
$password = \"password\" #Mot de passe du compte ftp
$localdir = \"C:\temp\FTP\" #Dossier source
$ftpdir = \"ftp://monsite.fr/CSV/\" #Dossier destination
$client = New-Object System.Net.WebClient
$client.Credentials = New-Object System.Net.NetworkCredential($user,$password)
foreach($item in Get-ChildItem -recurse $localdir){
$filename = [system.io.path]::GetFullPath($item.FullName).SubString([system.io.path]::GetFullPath($localdir).Length + 1)
$ftprequest.EnableSsl = $true
if ($item.Attributes -eq \"Directory\"«»){
try{
Write-Host \"Création de $item.Name\"
$makedir = [System.Net.WebRequest]::Create($ftpdir+\"/\"+$parentfolder+\"/\"+$filename);
$makedir.Credentials = New-Object System.Net.NetworkCredential($user,$password)
$makedir.Method = [System.Net.WebRequestMethods+FTP]::MakeDirectory;
$makedir.GetResponse();
}
catch [Net.WebException] {
Write-Host $item.Name probably exists ...
}
continue;
}
Write-Host \"Transfert de $item...\"
$file = New-Object System.Uri($ftpdir+\"/\"+$parentfolder+\"/\"+$filename)
$client.UploadFile($file, $item.FullName)
}[/code:1]
Message édité par: P_FABRE, à: 19/04/18 10:09<br><br>Message édité par: P_FABRE, à: 19/04/18 12:05
Connexion ou Créer un compte pour participer à la conversation.
- FABRE
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 7 ans 11 mois #25330
par FABRE
Réponse de FABRE sur le sujet Re:Script de transfert fichier sur serveur FTP SSL
jai changer mon code et j'ai avancer dans la panoplie d'erreur possible 
[code:1]$sourceuri = \"ftp://mon-site.fr/CSV/\" #emplacement dans le serveur FTP où seront stockés les fichiers
$localdir = \"C:\temp\FTP\\" #dossier local où sont stockés les fichiers
$username = 'user' #Nom d'utilisateur pour acceder au serveur FTP
$password = 'password' #Mot de passe de l'utilisateur
foreach($item in Get-ChildItem -recurse $localdir)
{
#Récuperation du nom des fichiers contenue dans le dossier local
$filename = [system.io.path]::GetFullPath($item.FullName).SubString([system.io.path]::GetFullPath($localdir).Length + 0)
# Creation de la requete FTP
$FTPRequest = [System.Net.FtpWebRequest]::Create($sourceuri+\"$filename\"«»)
$FTPRequest.Credentials = New-Object System.Net.NetworkCredential($username,$password)
$FTPRequest.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile
$FTPRequest.UseBinary = $true
$FTPRequest.UsePassive = $false
$FTPRequest.KeepAlive = $false
$ftprequest.EnableSsl = $true #preciser True si le serveur FTP est securise par un certificat
$ftprequest.Proxy = $NULL
# Read the File for Upload
Write-Host \"Transfert de $item...\"
$FileContent = Get-Content -en byte $Localdir$filename
$FTPRequest.ContentLength = $FileContent.Length
# Get Stream Request by bytes
$Run = $FTPRequest.GetRequestStream()
#$Run.Write($FileContent,0,$FileContent.Length)
# Cleanup
#$Run.Close()
#$Run.Dispose()
}
[/code:1] et du coup j'obtiens une nouvelle erreur qui m’empêche de continuer qui est :
[code:1]Exception lors de l'appel de «GetRequestStream» avec «0» argument(s): «Le serveur distant a retourné une erreur:
(501) Erreur de syntaxe dans les paramètres ou les arguments.»
Au caractère C:\temp\ScriptFTP2.ps1:33 : 5
+ $Run = $FTPRequest.GetRequestStream()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:«») [], MethodInvocationException
+ FullyQualifiedErrorId : WebException
[/code:1]
Si on peut regarder
pour ca
<br><br>Message édité par: Arnaud, à: 19/04/18 17:38
[code:1]$sourceuri = \"ftp://mon-site.fr/CSV/\" #emplacement dans le serveur FTP où seront stockés les fichiers
$localdir = \"C:\temp\FTP\\" #dossier local où sont stockés les fichiers
$username = 'user' #Nom d'utilisateur pour acceder au serveur FTP
$password = 'password' #Mot de passe de l'utilisateur
foreach($item in Get-ChildItem -recurse $localdir)
{
#Récuperation du nom des fichiers contenue dans le dossier local
$filename = [system.io.path]::GetFullPath($item.FullName).SubString([system.io.path]::GetFullPath($localdir).Length + 0)
# Creation de la requete FTP
$FTPRequest = [System.Net.FtpWebRequest]::Create($sourceuri+\"$filename\"«»)
$FTPRequest.Credentials = New-Object System.Net.NetworkCredential($username,$password)
$FTPRequest.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile
$FTPRequest.UseBinary = $true
$FTPRequest.UsePassive = $false
$FTPRequest.KeepAlive = $false
$ftprequest.EnableSsl = $true #preciser True si le serveur FTP est securise par un certificat
$ftprequest.Proxy = $NULL
# Read the File for Upload
Write-Host \"Transfert de $item...\"
$FileContent = Get-Content -en byte $Localdir$filename
$FTPRequest.ContentLength = $FileContent.Length
# Get Stream Request by bytes
$Run = $FTPRequest.GetRequestStream()
#$Run.Write($FileContent,0,$FileContent.Length)
# Cleanup
#$Run.Close()
#$Run.Dispose()
}
[/code:1] et du coup j'obtiens une nouvelle erreur qui m’empêche de continuer qui est :
[code:1]Exception lors de l'appel de «GetRequestStream» avec «0» argument(s): «Le serveur distant a retourné une erreur:
(501) Erreur de syntaxe dans les paramètres ou les arguments.»
Au caractère C:\temp\ScriptFTP2.ps1:33 : 5
+ $Run = $FTPRequest.GetRequestStream()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:«») [], MethodInvocationException
+ FullyQualifiedErrorId : WebException
[/code:1]
Si on peut regarder
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 7 ans 11 mois #25332
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:Script de transfert fichier sur serveur FTP SSL
Hello !
Le message d'erreur est clair; tu ne peux pas appeler cette méthode sans préciser de paramètres.
Arnaud
Le message d'erreur est clair; tu ne peux pas appeler cette méthode sans préciser de paramètres.
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- FABRE
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 3
- Remerciements reçus 0
il y a 7 ans 11 mois #25333
par FABRE
Réponse de FABRE sur le sujet Re:Script de transfert fichier sur serveur FTP SSL
ok mais je dois mettre quoi comme type de paramètre pour ca ?
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.041 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Script de transfert fichier sur serveur FTP SSL