Question Récupération d'erreurs de requête FTP

Plus d'informations
il y a 11 ans 2 semaines #19660 par THIBURCE
Bonjour,

J'ai tenter de prévenir les erreurs d'une requête FTP en faisant un try catch mais que la requête réussisse ou non j'atterrie toujours dans le catch.

Du coup je cherche à savoir comment on fait pour récupérer les erreurs d'une requête.

[code:1]
try
{
creerDossierFTP $dossierSaveFTP $script:user $script:«»password $script:keepAlive
}
catch
{
Write-host \"Le dossier de sauvegarde FTP existe déjà\"
}

function creerDossierFTP ($dossier, $user, $password, $keepAlive){
$makedir = [System.Net.FtpWebRequest]::Create($dossier)
$makedir.Credentials = New-Object System.Net.NetworkCredential($user,$password)
$makedir.Method = [System.Net.WebRequestMethods+FTP]::MakeDirectory
$makedir.KeepAlive = $keepAlive
$makedir.GetResponse()
$makedir.Close()
}
[/code:1]

Est-ce que le GetResponse peut renvoyer quelque chose ?
Désolé je n'ai vraiment aucune idée de comment faire ^^'

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 2 semaines #19662 par xyz
Salut,
Riza écrit:

Désolé je n'ai vraiment aucune idée de comment faire ^^'

Lire la documentation de la classe utilisée.

Indique dans le message le type de l'exception déclenchée, ici ton message d'erreur est identique pour des causes d'erreur différentes.

L'appel de la méthode GetResponse() renvoi un objet et c'est sur celui-ci que tu dois appeler la méthode Close() dans un bloc Finally de préférence.

Un tutoriel sur le sujet

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 2 semaines #19667 par THIBURCE
Bonjour,

J'ai trouvé une solution grâce à votre tutoriel qui m'a aidé à orienter mes recherches :D

[code:1]
try
{
$makedir = [System.Net.FtpWebRequest]::Create($dossier)
$makedir.Credentials = New-Object System.Net.NetworkCredential($user,$password)
$makedir.Method = [System.Net.WebRequestMethods+FTP]::MakeDirectory
$makedir.KeepAlive = $keepAlive
$response = $makedir.GetResponse()
$response.Close()
}
catch [Net.WebException] {
$erreur = $_
$erreur = $erreur.ToString()
write-host $erreur
}
finally
{
$response.Close()
}
[/code:1]

Par contre de faire un Close dans le finally me met toujours une erreur comme quoi la variable response est à null du coup pour être sur j'ai quand même laissé un close dans mon try.<br><br>Message édité par: Riza, à: 7/05/15 12:36

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 2 semaines #19668 par xyz
Ajoute un test sur le contenu de la variable :
[code:1]if ($response -ne $null) {$response.Close()} [/code:1]
A mon avis, tu ne devrais pas transformer une exception en un affichage sur la console, un Write-Error est préférable ainsi tu continues à alimenter le flux d'erreur et c'est celui-ci que tu masqueras avec
[code:1]
MaFonction -ErrorAction SilentlyContinue
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 7/05/15 16:07

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 11 ans 2 semaines #19669 par THIBURCE
D'accord merci beaucoup :D

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.039 secondes
Propulsé par Kunena