J'ai vu cette syntaxe sur une variable avant et pas tout à fait sûr exactement ce qu'il est:Qu'est-ce que script: faire en PowerShell?
$script:Foo = "Bar"
J'ai vu cette syntaxe sur une variable avant et pas tout à fait sûr exactement ce qu'il est:Qu'est-ce que script: faire en PowerShell?
$script:Foo = "Bar"
La syntaxe $script:Foo
est le plus souvent utilisé pour modifier une variable de niveau script, dans ce cas $Foo
. Lorsqu'il est utilisé pour lire la variable, généralement $Foo
est suffisant. Par exemple, plutôt que d'écrire ceci:
verbose-script.ps1
$script:foo = ''
function f { $script:foo }
Je voudrais écrire ce (moins bavard et fonctionnellement équivalent):
script.ps1
$foo = ''
function f { $foo }
Où $script:Foo
est cruciale est lorsque vous souhaitez modifier une variable de niveau script à l'intérieur une autre portée telle qu'une fonction ou un scriptblock anonyme par exemple:
PS> $f = 'hi'
PS> & { $f; $f = 'bye';$f }
hi
bye
PS> $f
hi
Notez que $f
en dehors de la scriptblock n'a pas changé e Bien que nous l'ayons modifié à bye
dans le scriptblock. Ce qui s'est passé, c'est que nous avons seulement modifié une copie locale de $f
. Lorsque vous n'appliquez pas de modificateur comme script:
(ou global:
), PowerShell exécute un copy-on-write
sur la variable de portée higer dans une variable locale portant le même nom.
Compte tenu de l'exemple ci-dessus, si nous voulions vraiment faire un changement permanent à $f
, nous ensuite utiliser un modificateur comme script:
ou global:
.: par exemple
PS> $f = 'hi'
PS> & { $f; $global:f = 'bye';$f }
hi
bye
PS> $f
bye
Le préfixe script:
provoque le nom sur le côté droit d'être recherché dans le champ d'application de script. Essentiellement des données qui sont locales au script lui-même. D'autres étendues valides incluent global, local et privé.
La section d'aide pour la portée contient un peu de détail sur ce sujet.
help about_Scopes
Je parie que vous vouliez dire privé. :-) –
alors que se passe-t-il quand vous dotez un script avec un script: préfixes sur les fonctions et les variables? –
Lorsque vous utilisez une source point, les éléments de portée de script sont extraits dans le script qui effectue le pointage. –