Question Impossible de sortir d'une fonction avec un return

Plus d'informations
il y a 9 ans 8 mois #17796 par MicroVal
Bonjour,

Je sollicite votre aide puisque j'ai un problème étrange..

Dans mon script PowerShell, je fais appel à une fonction, le code contenu dans cette fonction s'éxecute sans problème, et ce que je voudrais c'est sortir de la fonction avant qu'elle éxecute tout son code à l'aide d'une condition (IF).

Lorsque j'éxecute le script, je rentre bien dans ma condition, mais je ne sors pas pour autant de ma fonction, malgrès un \"return TRUE\" ... Le script continu de s'éxecuter jusqu'à la fin de la fonction...

Le code
[code:1]
function checkSiteValidity ($siteEntered)
{
$contentWebAppServices = (Get-SPFarm).services |
? {$_.typename -eq \"Microsoft SharePoint Foundation Web Application\"}

# Parcours de l'ensemble des webapps
foreach($webApp in $contentWebAppServices.WebApplications)
{
Write-host \"Web Application: $($webApp.name)\"

# Parcours de l'ensemble des collections de sites
Get-SPWebApplication -Identity $webApp | Get-SPSite -limit all |%{

$siteCol = $_
Write-host \"Site Collection: $($siteCol.Url)\"

# Parcours des sites de la collection de sites
Get-SPWeb -limit all -Site $_|%{

$web = $_
write-host \"web : $($web.url)\"
if($siteEntered -eq $($web.url))
{
write-host \"Le site existe !\"
return TRUE
}
}
}
}

write-host \"Le site n'existe PAS !\"
return FALSE
}

do
{
$site = read-host \"Veuillez indiquer l'url du site \"
} while(!(checkSiteValidity $site))[/code:1]

Mes essais :

- J'ai essayé de déclarer une variable, que je mettrais à true ou false en fonction des conditions validées ou non, en la convertissant bien au format booléen à l'aide de \"[System.Convert]::ToBoolean($maVariable)\" et en faisant un return de cette variable.

- J'ai essayé de faire un return de \"$true\", \"TRUE\", \"true\"

Voilà, merci pour votre aide !
Valentin

Message édité par: MicroVal, à: 8/07/14 16:35

Message édité par: MicroVal, à: 8/07/14 16:54<br><br>Message édité par: MicroVal, à: 8/07/14 16:56

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

Plus d'informations
il y a 9 ans 8 mois #17797 par Laurent Dardenne
Salut,
dans ta construction tu émets une valeur dans le pipeline :
[code:1]
function checkSiteValidity ($siteEntered)
{
foreach($webApp in 1..5)
{
Write-host \&quot;Web Application: $($webApp)\&quot;
1..5|
foreach {
write-host \&quot;$_ - return dans le pipeline\&quot;
return $TRUE
}|
foreach {
write-host \&quot;$_ - suite du pipeline\&quot;
}

write-host \&quot;SORTIE foreach\&quot;
return $FALSE
}
}

do
{
$site = read-host \&quot;Veuillez indiquer l'url du site \&quot;
} while(!(checkSiteValidity $site))
[/code:1]
Là où le return dans la boucle Foreach fonctionne.
Il te faut donc revoir ta construction.

Tutoriels PowerShell

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

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