powershell - 输出的目录数据不正确

标签 powershell powershell-1.0

以下代码将抓取目录并为每个目录创建菜单项。直到Add_Click部分为止,它都可以正常工作;由于某种原因,无论单击什么按钮,它只会吐出相同的文件。

$directory = Get-ChildItem -Path ($relative_path + "/scripts")

foreach ($file in $directory) 
{
    $mnuTemp = New-Object System.Windows.Forms.MenuItem
    $mnuTemp.Text = $file.Name
    $mnuTemp.Add_Click({Write-Host $file.Name})
    $mnuScripts.MenuItems.Add($mnuTemp)
}

最佳答案

添加click命令时,您仍在传递对$ file.name的引用。

$mnuTemp.Add_Click({Write-Host $file.Name})

您需要将引用传递给完全评估的脚本块。
$mnuTemp.Add_Click([scriptblock]::Create("write-host $($file.name)"))

我已通过以下更改对您的代码进行了编辑。
$directory = Get-ChildItem -Path ($relative_path + "/scripts")

foreach ($file in $directory) 
{
    $mnuTemp = New-Object System.Windows.Forms.MenuItem
    $mnuTemp.Text = $file.Name
    $mnuTemp.Add_Click([scriptblock]::Create("write-host $($file.name)"))
    $mnuScripts.MenuItems.Add($mnuTemp)
}

关于powershell - 输出的目录数据不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17794284/

相关文章:

powershell - 在函数中创建时无法命名 Excel 选项卡

powershell - 由于 Azure Key Vault 内部错误,具有 Bit-locker 的 Azure VM 现在无法解密?

azure - ForEach-Object 在 powershell (Azure VM) 中返回所有对象 3 次

powershell - 在Powershell中重新加载修改后的类

Powershell 1.0 - 当脚本位于不同目录中时重命名文件失败

powershell - 如何在PowerShell 1.0中使用STA模式?

.net - 在 AWS 中启动/停止实例并使用 powershell 等待

sql-server - 使用 PowerShell 和 SMO 恢复数据库时显示进度

visual-studio-2010 - 自定义Windows服务调用Powershell来执行交换32位和64位问题的命令?

powershell - Powershell if -notlike问题