Question [Résolu] Script avec retour code 1 ou 0

Plus d'informations
il y a 6 ans 10 mois #28867 par karaaslan
Bonjour,

Je reviens vers vous pour améliore mon script de purge
J'ai besoin d'ajouter mon script dans centreon mais j'ai besoin d'un code retour 1 ou 0 a la fin de mon script.

mon script:

function New-FileNameTimeStamped{
param($FileName,$Date=(Get-Date),$Format='dd-MM-yyyy-HH-mm-ss')

$SF=New-object System.IO.FileInfo $FileName
\"{0}\{1}-{2:$Format}{3}\" -F $SF.Directory,$SF.BaseName,$Date,$SF.Extension
}#New-FileNameTimeStamped

#variable pour la log.
$LOG=New-FileNameTimeStamped -FileName 'c:\tmp\Log.txt' -Format 'ddMMyyyy'


$Folder = \"C:\tmp\SAUV_test\"
#purge 30 jours.
Get-ChildItem $Folder -Recurse -Force -ea 0 |
? {!$_.PsIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-1)} |
ForEach-Object {
$_ | del -Force
$_.FullName | Out-File $LOG -Append


Exemple de retour code :


#Si purge nok = erreur
if ($list -ne $null)
{
Write-Warning \"Purge NOK\"
echo \"NOK\"
exit 1

}else{
#Sinon Purge OK

Write-host \"Script Purge Ok\"
echo \"Test OK\"
exit 0
}
}
else
{
Write-Host 'error'
exit 1
}


Merci d'avance de votre aide =D

Message édité par: birel, à: 3/05/19 16:02<br><br>Message édité par: Arnaud, à: 13/05/19 10:18

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

Plus d'informations
il y a 6 ans 10 mois #28869 par Philippe
Réponse de Philippe sur le sujet Re:Script avec retour code 1 ou 0
salut birel

essai en replacent les exit par des return

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

Plus d'informations
il y a 6 ans 10 mois #28877 par karaaslan
Réponse de karaaslan sur le sujet Re:Script avec retour code 1 ou 0
Bonjour après plusieurs test, j'ai pas réussi lol xD
Mon script ne fonctionne plus, je voir pas l'erreur.

function New-FileNameTimeStamped {
param($FileName, $Date = (Get-Date), $Format = 'dd-MM-yyyy-HH-mm-ss')

$SF = New-object System.IO.FileInfo $FileName
\&quot;{0}\{1}-{2:$Format}{3}\&quot; -F $SF.Directory, $SF.BaseName, $Date, $SF.Extension
} # New-FileNameTimeStamped

# variable pour le fichier log avec la date grace a la fonction
$LOG = New-FileNameTimeStamped -FileName 'c:\temp\Log.txt' -Format 'ddMMyyyy'


$Folder = \&quot;C:\Purge\&quot;
# supprimer les fichiers plus anciens que 30 jours
try {
Get-ChildItem $Folder -Recurse -Force -ErrorAction stop |
where {-not $_.PsIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-1)} |
ForEach-Object {
$_ | Remove-Item -Force -ErrorAction stop
$_.FullName | Out-File $LOG -Append
exit 0
}
}
catch {
exit 1
}

Merci d'avance pour votre aide

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

Plus d'informations
il y a 6 ans 10 mois #28885 par Philippe
Réponse de Philippe sur le sujet Re:Script avec retour code 1 ou 0
si tu fait un script de test qui ne contient que exit 1 ou return 1, a tu l'info erreur dans centreon ?

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

Plus d'informations
il y a 6 ans 10 mois #28886 par karaaslan
Réponse de karaaslan sur le sujet Re:Script avec retour code 1 ou 0
Le problème mon script de purge ne fonctionne pas, la purge des dossier ne fonctionne pas.

Et pour répondre a ta question mon script qui fonctionne sur centreon ci-dessous :

$path='D:\DATA\'
if($path -ne $null){
#Liste les fichier qui sont présent dans le dossier depuis plus d'1H
$list = Get-ChildItem $path | Where-Object {$_.LastWriteTime -lt (Get-Date).AddHours(-1) }
#Si des fichier sont trouvé = erreur
if ($list -ne $null)
{
Write-Warning \&quot;Fichier présent depuis plus d'une heure\&quot;
echo \&quot;Test NOK\&quot;
exit 2
}else{
#Sinon c'est qu'aucun fichier n'est trouvé donc pas d'erreur
Write-host \&quot;pas de fichier présent depuis plus d'une heure\&quot;
echo \&quot;Test OK\&quot;
exit 0
}
}
else
{
Write-Host 'error'
exit 2
}
<br><br>Message édité par: birel, à: 9/05/19 10:42

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

Plus d'informations
il y a 6 ans 10 mois #28890 par Philippe
Réponse de Philippe sur le sujet Re:Script avec retour code 1 ou 0
peut tu utilisé les balise code stp. tu surligne ton texte et tu clique sur le bouton code au dessus de la zone de saisie

en faite t'a pas de probleme de retour de code erreur dans le sens le code n'est pas renvoyer a centreon
mais plutot le script ne renvoie pas le bon code erreur !?

dans tous les cas ce script fonctionne mais perso si tu a une version de Powershell supperieur à la V2 utilise le parametre -file de Get-ChildItem
[code:1]$path = 'D:\DATA'
if ($path -ne $null) {
#Liste les fichier qui sont présent dans le dossier depuis plus d'1H
$list = Get-ChildItem $path -file | Where-Object {$_.LastWriteTime -lt (Get-Date).AddHours(-1) }
#Si des fichier sont trouvé = erreur
if ($list) {
Write-Warning \&quot;Fichier présent depuis plus d'une heure\&quot;
Write-host \&quot;Test NOK\&quot;
exit 2
}
else {
#Sinon c'est qu'aucun fichier n'est trouvé donc pas d'erreur
Write-host \&quot;pas de fichier présent depuis plus d'une heure\&quot;
Write-Host \&quot;Test OK\&quot;
exit 0
}
}
else {
Write-Host 'error'
exit 2
} [/code:1]

si tu a un message d'erreur peut tu nous l'indiquer stp
.

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

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