Powershell在脚本中更改默认变量范围

时间:2015-04-02 09:07:56

标签: powershell scope

是否可以选择将默认变量范围更改为私有脚本?例如。通过PSDefaultParameterValues?

我不喜欢当父变量在当前范围内定义时从父变量中使用。

Set-PSDebug -strict
$a = 5
function foo() {
    Write-Host $a
    $a = 8
    Write-Host $a
}
foo
$a

这将输出5,8,5

目前我必须在每个变量前加上'private:'。 这将输出“变量'$ private:a'无法检索,因为它尚未设置。”,8,5

一切都如预期,但看起来很难看。

Set-PSDebug -strict
$private:a = 5
function foo() {
    Write-Host $private:a
    $private:a = 8
    Write-Host $private:a
}
foo
$private:a

1 个答案:

答案 0 :(得分:1)

我认为你不能从get-help about_scope

全局修改这种行为
  

除非您明确将项目设为私有,否则父范围中的项目       适用于儿童范围。但是,您创建和更改的项目       除非您明确说明,否则在子范围内不会影响父范围       在创建项目时指定范围。