Question
Supprimer un dossier sur un serveur FTP
- THIBURCE
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
il y a 10 ans 8 mois #20397
par THIBURCE
Réponse de THIBURCE sur le sujet Re:Supprimer un dossier sur un serveur FTP
Et voila mon code final.
Encore merci
[code:1]##Fonction qui supprime un dossier sur le serveur FTP
# $dossier : dossier à supprimer sur le serveur
# $user : utilisateur du FTP
# $password : mot de passe utilisateur
# $keepAlive : permet de savoir si on veut laisser la requête active -> il vaut mieux y mettre à false pour ne pas avoir de blocage et être sur que celle-ci soit terminée
# $usePassive : le serveur choisi un port sur lequel écouter le client FTP
# $fichierLog : chemin du fichier de log
# return : renvoi l'erreur généré si il y en a sinon renvoi une chaîne vide
function supprDossierFTP
{
Param(
[Parameter(Mandatory=$true)]
$dossier,
$user,
$password,
$keepAlive,
$usePassive,
$fichierLog
)
$msgErreur = \"\"
# D'abord on supprime tous les fichiers que contient le dossier
try
{
$uri = New-Object System.Uri($dossier)
$ftp = [System.Net.FtpWebRequest]::Create($uri)
$ftp.Credentials = New-Object System.Net.NetworkCredential($user,$password)
$ftp.Method = [System.Net.WebRequestMethods+FTP]::ListDirectory
$ftp.keepAlive = $keepAlive
$ftp.useBinary = $useBinary
$ftp.usePassive = $usePassive
$response = $ftp.GetResponse()
$responseStream = $response.GetResponseStream()
$FTPReader = New-Object System.IO.Streamreader($ResponseStream)
$fileName = $FTPReader.ReadLine()
while($fileName -ne $null)
{
# On récupère le nom du fichier
$index = $fileName.LastIndexOf(\"/\"«») + 1
$taille = $fileName.Length - $index
$file = $fileName.Substring($index, $taille)
$file = \"{0}/{1}\" -F $dossier, $file
supprFichierFTP $file $user $password $keepAlive $usePassive $fichierLog
$fileName = $FTPReader.ReadLine()
}
}
catch
{
$msgErreur = \"Erreur : Erreur de ListDirectory du dossier $dossier : $_\"
ecritLog $fichierLog $msgErreur
}
finally
{
if($FTPReader -ne $null)
{
$FTPReader.Close() | Out-Null
}
if($responseStream -ne $null)
{
$responseStream.Close() | Out-Null
}
if($response -ne $null)
{
$response.Close() | Out-Null
}
}
# Ensuite on supprime le dossier
try
{
$uri = New-Object System.URI($dossier)
$ftp = [System.Net.FtpWebRequest]::Create($uri)
$ftp.Credentials = New-Object System.Net.NetworkCredential($user,$password)
$ftp.Method = [System.Net.WebRequestMethods+FTP]::RemoveDirectory
$ftp.KeepAlive = $keepAlive
$ftp.usePassive = $usePassive
$response = $ftp.GetResponse()
}
catch [Net.WebException]
{
$msgErreur = \"Erreur : Erreur de suppression du dossier $dossier : $_\"
ecritLog $fichierLog $msgErreur
}
finally
{
if($response -ne $null)
{
$response.Close() | Out-Null
}
}
return $msgErreur
}[/code:1]
Encore merci
[code:1]##Fonction qui supprime un dossier sur le serveur FTP
# $dossier : dossier à supprimer sur le serveur
# $user : utilisateur du FTP
# $password : mot de passe utilisateur
# $keepAlive : permet de savoir si on veut laisser la requête active -> il vaut mieux y mettre à false pour ne pas avoir de blocage et être sur que celle-ci soit terminée
# $usePassive : le serveur choisi un port sur lequel écouter le client FTP
# $fichierLog : chemin du fichier de log
# return : renvoi l'erreur généré si il y en a sinon renvoi une chaîne vide
function supprDossierFTP
{
Param(
[Parameter(Mandatory=$true)]
$dossier,
$user,
$password,
$keepAlive,
$usePassive,
$fichierLog
)
$msgErreur = \"\"
# D'abord on supprime tous les fichiers que contient le dossier
try
{
$uri = New-Object System.Uri($dossier)
$ftp = [System.Net.FtpWebRequest]::Create($uri)
$ftp.Credentials = New-Object System.Net.NetworkCredential($user,$password)
$ftp.Method = [System.Net.WebRequestMethods+FTP]::ListDirectory
$ftp.keepAlive = $keepAlive
$ftp.useBinary = $useBinary
$ftp.usePassive = $usePassive
$response = $ftp.GetResponse()
$responseStream = $response.GetResponseStream()
$FTPReader = New-Object System.IO.Streamreader($ResponseStream)
$fileName = $FTPReader.ReadLine()
while($fileName -ne $null)
{
# On récupère le nom du fichier
$index = $fileName.LastIndexOf(\"/\"«») + 1
$taille = $fileName.Length - $index
$file = $fileName.Substring($index, $taille)
$file = \"{0}/{1}\" -F $dossier, $file
supprFichierFTP $file $user $password $keepAlive $usePassive $fichierLog
$fileName = $FTPReader.ReadLine()
}
}
catch
{
$msgErreur = \"Erreur : Erreur de ListDirectory du dossier $dossier : $_\"
ecritLog $fichierLog $msgErreur
}
finally
{
if($FTPReader -ne $null)
{
$FTPReader.Close() | Out-Null
}
if($responseStream -ne $null)
{
$responseStream.Close() | Out-Null
}
if($response -ne $null)
{
$response.Close() | Out-Null
}
}
# Ensuite on supprime le dossier
try
{
$uri = New-Object System.URI($dossier)
$ftp = [System.Net.FtpWebRequest]::Create($uri)
$ftp.Credentials = New-Object System.Net.NetworkCredential($user,$password)
$ftp.Method = [System.Net.WebRequestMethods+FTP]::RemoveDirectory
$ftp.KeepAlive = $keepAlive
$ftp.usePassive = $usePassive
$response = $ftp.GetResponse()
}
catch [Net.WebException]
{
$msgErreur = \"Erreur : Erreur de suppression du dossier $dossier : $_\"
ecritLog $fichierLog $msgErreur
}
finally
{
if($response -ne $null)
{
$response.Close() | Out-Null
}
}
return $msgErreur
}[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.043 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Supprimer un dossier sur un serveur FTP