Question Try/Catch
- arnold
- Auteur du sujet
- Visiteur
Svp
Comment inclure un try/catch
dans le scripte?
Merci pour votre aide
Arnold
[code:1]$Xftp = \"ftp://perso-ftp.orange.fr/\"
$Xftp.UsePassive = $true
$Xftp.EnableTls = $true
$XlocalDirectory = Get-Content \"c:\studio\\"
$Xuser = \"...…….\"
$Xpass = \"......\"
$Xwebclient = New-Object System.Net.WebClient
$Xwebclient.Credentials = New-Object System.Net.NetworkCredential($Xuser,$Xpass)
$XFiles = Get-ChildItem -Path \"c:\studio\*\" -Rec -For | ? {$_.LastWriteTime -gt (Get-Date).AddHours(-1)} | where { ! $_.PSIsContainer } | Select-Object FullName
$Xnombre = $XFiles.Count
foreach ($XFile in $XFiles)
{
$XLocalFile = $XFile.FullName
$XRemoveDirectory = $XLocalFile.Replace(\"C:\studio\\",\"\"«»)
$XChangeSlashes = $XRemoveDirectory.Replace('\', '/')
$XRemoveSpaces = $XChangeSlashes.Trim()
$XRemoteFile = $Xftp+$XRemoveSpaces
$Xuri = New-Object System.Uri(\"$XRemoteFile\"«»)
$Xwebclient.UploadFile($Xuri, $XLocalFile)
Write-Host \"Getting $XFile from $XlocalDirectory\" -Foreground \"Red\" -BackgroundColor DarkBlue
Write-Host \"Puting $XFile to $Xftp\" -Foreground \"Yellow\" -BackgroundColor DarkBlue
}
\"\"
Write-Host \"Finished Sync to $Xftp\" -Foreground \"Green\" -BackgroundColor DarkBlue
clear-variable X* -scope global -F
(new-object Media.SoundPlayer \"C:\WINDOWS\Media\notify.wav\"«»).play();
write-host \"Notify Done !\";[/code:1]
j'ai obtient l'erreur suivant:
[code:1]Exception lors de l'appel de « UploadFile » avec « 2 » argument(s) : « Erreur système. »
Au caractère C:\MMC\batch_graphe.ps1:920 : 6
+ $Xwebclient.UploadFile($Xuri, $XLocalFile)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:«») [], MethodInvocationException
+ FullyQualifiedErrorId : WebException[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6302
- Remerciements reçus 68
arnold écrit:
Comme ceci:Comment inclure un try/catch
[code:1]try {
$Xwebclient.UploadFile($Xuri, $XLocalFile)
} catch {
#mais tu fais quoi ici ?
}[/code:1]
Mais comme tu peux le lire il faut savoir quoi faire en cas d'exception.
On peut ne pas placer de code dans le bloc catch, mais il faut savoir ce que l'on fait, à moins de dire \"Les erreurs on s'en fout !\"
Tu peux consulter un tutoriel sur la gestion des erreurs, via le lien indiqué dans ma signature.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- arnold
- Auteur du sujet
- Visiteur
Mais comme tu peux le lire il faut savoir quoi faire en cas d'exception.
On peut ne pas placer de code dans le bloc catch, mais il faut savoir ce que l'on fait, à moins de dire \"Les erreurs on s'en fout !\"
Bonjour
Merci pour votre reponse.
il faut savoir quoi faire …
Pour quoi j'ai n'arrive plus envoyer les fichier. Donc le try ne peut pas donner une réponse? Ni afficher le/un pour quoi?
Merci
Arnold
NB
J'ai lu \"La gestion des erreurs\"
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6302
- Remerciements reçus 68
Je ne sais pas, l'erreur \" Erreur système.\" est une erreur contextuelle. Nous n'avons pas le même système.Pour quoi j'ai n'arrive plus envoyer les fichiers.
arnold écrit:
Non le try 'protège' une section de code.Donc le try ne peut pas donner une réponse?
arnold écrit:
Si mais, plus précisément, c'est l'objet exception dans le bloc catch associé au try. Essaie d'afficher l'exception avec la fonction resolve-error disponible sur le net.Ni afficher le/un pour quoi?
Dans certains cas on peut avoir une réponse claire quant à la cause de l'erreur ('accès refusé' par exemple), le plus souvent il faut la chercher dans le code appelant ou vérifier si l'infra n'a pas été modifié (mot de passe, compte, accès réseau, antivirus, fichier host,etc, etc.
Essaie de tester manuellement, si possible, ton action. Ou utilise Filezilla par exemple pour tester toute la chaîne.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- arnold
- Auteur du sujet
- Visiteur
Le service FTP est bloquer a cause de SSL/Tsl
Comment je peut inclure cette paramètre dans le scripte?
Ces 2 ligne sont obsolète
[code:1]
$Xftp.UsePassive = $true
$Xftp.EnableTls = $true[/code:1]
Merci
Arnold
En add: j'ai trouver..., mais comment utiliser....
Explication FTPES explicit TLS/SSL
Mes Test
[code:1]
cls
\" 1\"
[Net.ServicePointManager]::«»SecurityProtocol = [Net.SecurityProtocolType]::Tls
Invoke-WebRequest \"arenas.pagesperso-orange.fr/GradientExam...diaplayer.html\"
\"==============================================\"
\" 2\"
[Net.SecurityProtocolType]
\" ==============================================\"
\" 3\"
# get TSL !!!
[enum]::GetNames([Net.SecurityProtocolType])
\" ==============================================\"
\" 4\"
# Force PowerShell to use TLS 1.1
[System.Net.ServicePointManager]::«»SecurityProtocol = [System.Net.SecurityProtocolType]::Tls11
# ???
\" ================================================= \"
\" 5\"
# Force PowerShell to use it's default of TLS 1.0
[System.Net.ServicePointManager]::«»SecurityProtocol = [System.Net.SecurityProtocolType]::Tls
# ???
\" ================================================= \"
\" 6\"
# Force PowerShell ti use TLS 1.3
[Net.ServicePointManager]::«»SecurityProtocol = [Net.SecurityProtocolType]::Tls13
<#
Exception setting \"SecurityProtocol\": \"Cannot convert null to type \"System.Net.SecurityProtocolType\" due to enumeration values that are not valid.
Specify one of the following enumeration values and try again. The possible enumeration values are \"Ssl3,Tls,Tls11,Tls12\".\"
At C:\Users\admin\AppData\Local\Temp\f5d4da71-5524-47fe-8946-bb485ab4f8f6.ps1:26 char:1
+ [Net.ServicePointManager]::«»SecurityProtocol = [Net.SecurityProtocolTy ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\"
+ CategoryInfo : NotSpecified: (:«») [], SetValueInvocationException
+ FullyQualifiedErrorId : ExceptionWhenSetting
#>
\" ================================================ \"
[/code:1]<br><br>Message édité par: arnold, à: 12/06/19 18:04
Connexion ou Créer un compte pour participer à la conversation.
- Najib
- Hors Ligne
- Nouveau membre
- Messages : 1
- Remerciements reçus 0
$Xftp.UsePassive = $true
$Xftp.EnableTls = $true
$XlocalDirectory = Get-Content "c:\studio\"
$Xuser = "..."
$Xpass = "..."
try {
$Xwebclient = New-Object System.Net.WebClient
$Xwebclient.Credentials = New-Object System.Net.NetworkCredential($Xuser,$Xpass)
$XFiles = Get-ChildItem -Path "c:\studio\*" -Recurse -Force | ? {$_.LastWriteTime -gt (Get-Date).AddHours(-1)} | where { ! $_.PSIsContainer } | Select-Object FullName
$Xnombre = $XFiles.Count
foreach ($XFile in $XFiles)
{
$XLocalFile = $XFile.FullName
$XRemoveDirectory = $XLocalFile.Replace("C:\studio\", "")
$XChangeSlashes = $XRemoveDirectory.Replace('\', '/')
$XRemoveSpaces = $XChangeSlashes.Trim()
$XRemoteFile = $Xftp + $XRemoveSpaces
$Xuri = New-Object System.Uri("$XRemoteFile")
$Xwebclient.UploadFile($Xuri, $XLocalFile)
Write-Host "Getting $XFile from $XlocalDirectory" -Foreground "Red" -BackgroundColor DarkBlue
Write-Host "Puting $XFile to $Xftp" -Foreground "Yellow" -BackgroundColor DarkBlue
}
Write-Host "Finished Sync to $Xftp" -Foreground "Green" -BackgroundColor DarkBlue
} catch {
Write-Host "Error occurred: $_" -ForegroundColor Red
} finally {
clear-variable X* -scope global -Force
(new-object Media.SoundPlayer "C:\WINDOWS\Media\notify.wav").play();
write-host "Notify Done !" -ForegroundColor Green
}
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les initiés
- Try/Catch