我正在学习 Powershell 并尝试创建一个类似于此处示例的 GUI 界面。
但是,当我按原样运行它时,$x
从未定义过。知道我做错了什么吗?我知道这与以下内容有关:
$OKButton.Add_Click({$x=$objListBox.SelectedItem;$objForm.Close()})
因为如果我将其更改为:
$OKButton.Add_Click({Write-Host "worked";$objForm.Close()})
它确实返回worked
。
我正在学习 Powershell 并尝试创建一个类似于此处示例的 GUI 界面。
但是,当我按原样运行它时,$x
从未定义过。知道我做错了什么吗?我知道这与以下内容有关:
$OKButton.Add_Click({$x=$objListBox.SelectedItem;$objForm.Close()})
因为如果我将其更改为:
$OKButton.Add_Click({Write-Host "worked";$objForm.Close()})
它确实返回worked
。
您的操作块在单独的本地范围内运行。要修改全局(会话范围)变量,请使用 scope-modifier( $global:varname
)。例如:
$OKButton.Add_Click({$global:x=$objListBox.SelectedItem;$objForm.Close()})
有关 Technet范围的更多信息- about_Scopes(或Get-Help about_scopes
在 PowerShell 中编写)
代替$Global:variable
one 也可以使用$Script:variable
which 将增加你的变量的范围到你的脚本。因此,如果您使用 A 函数来创建按钮,并且在该函数内您也拥有该.Add_Click({})
函数,它将在您的函数范围内工作。该$Script:
变量将变量的范围增加到最近的父脚本文件范围。