Private修飾子で宣言した変数が、編集できるのに参照できない。PowerShellのスコープの変な動き



Private修飾子で宣言した変数が、functionの中でScript修飾子を介して編集できるのに、参照できない。

環境はmacOS 10.13.5、PowerShell v6.0.2。

ドキュメント読んだけど、この動きはおかしくないか?

test.ps1
function read () {
    Write-Host ("In function: " + $Script:name)
}

function write () {
    $Script:name = "Lennon"
}

$Private:name = "John"
read
write
Write-Host ("In local: " + $Private:name)

実行すると、

$ pwsh test.ps1
In function:
In local: Lennon

確かに下記では編集できているのに、

$Script:name = "Lennon"

下記では参照できていない。

Write-Host ("In function: " + $Script:name)

なぜ?

コメント

このブログの人気の投稿

PowerShell 6で、Shift_JISのCSVをImport-Csvで読み込んだら文字化けした

Windowsで、特定のユーザーに特定のサービスの再起動を許可する

PowerShellでイベントログを取得する時、「指定した選択条件に一致するイベントが見つかりませんでした。」が煩わしいのでcatchする