Comment modifier la variable de portée parent en utilisant Powershell

Je suis assez nouveau dans powershell, et je suis juste de ne pas obtenir de la manière de modifier une variable dans la portée parent:

$val = 0
function foo()
{
    $val = 10
}
foo
write "The number is: $val"

Quand je le lance j'obtiens:

The number is: 0

Je voudrais qu'il soit de 10. Mais powershell est la création d'une nouvelle variable qui se cache celui de la portée parent.

J'ai essayé, sans succès (selon les documents):

$script:$val = 10
$global:$val = 10
$script:$val = 10

Mais ce n'est pas le même 'compiler' pour ainsi dire.
Ce qui me manque?

source d'informationauteur C Johnson