2
所以我很難與這方面的文獻。我希望有人能夠在這裏解釋不同之處,以便更好地理解我的腳本流程。Powershell V2 vs V4作用域差異
袒護我,我自學成才。
function select-bin {
$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "Select a Bin"
$objForm.Size = New-Object System.Drawing.Size(300,200)
$objForm.StartPosition = "CenterScreen"
$x = @()
# Create $OKButton and $objListBox ... removed code as not relevant.
$OKButton.Add_Click({
$x+=$objListBox.SelectedItems
$objForm.Close()
})
$objForm.ShowDialog()
if ($x) {
return $x
}
else {
return $null
}
}
在上面的代碼示例中,它在Powershell V2中很好用,但是在V4中,add_click部分不起作用。它成功關閉了表單(在函數作用域中創建),但未能更新$ x。
所以我想這裏是我的問題。
- 在V2中,是否將add_click部分視爲與函數相同的作用域? (唯一的辦法是我看到它已經能夠更新$ x)
- 有什麼事情像這種改變數據的正確方法是什麼?我覺得在全局範圍內聲明$ x有點多餘,因爲我只需要它在函數中。
- 在V4中,add_click運行的範圍是什麼?它與V2中的內容明顯不同,但它是否在全球運行?它是相對於$ OKButton還是函數?我假設它是全球性或功能性的孩子,但我真的不知道。
任何人都可以提供的任何清晰度將不勝感激。在我的公司遷移到V4之前,我有很多更新要做,因爲我沒有遵循範圍最佳實踐(我的不好)。