MessageBox如果从PowerShell中的类的方法调用,则不会显示

问题描述 投票:0回答:2

我有一个PowerShell函数,如果我使用消息框向用户提供一些反馈,则该函数可以正常工作。我想将功能添加到类中。该类方法可以正常工作,除了以下代码行:

[system.windows.forms.messagebox]::show("The folder path does contain the right parameters.")

它一直给我错误:

Unable to find type: [System.Windows.Forms.Messagebox]

我已经尽力在互联网上可以找到的所有东西。我创建了一个非常简单的类,如下所示,它将在ISE中显示消息框,但是如果我在PowerShell窗口中运行它,则不会显示该消息框。我只是不知道为什么。

class test {
    [void]ok() {
        Add-Type -AssemblyName "System.Windows.Form"
        [void][System.Windows.Forms.Messagebox]::Show("This works in ISE but not powershell window")
    }
}

$e = [test]::new()
$e.ok()

我确信对此有一个简单的答案,但我不知道它是什么。

powershell class methods messagebox
2个回答
0
投票

哦,是的,答案很简单。要加载的程序集称为“ System.Windows.Form s

周末愉快!


0
投票

我已经进行了一些测试,并确定仅当我从以管理员身份运行的Powershell(x86)的命令窗口中调用脚本时,此脚本才在运行。当我从任何其他版本的Powershell调用脚本时,包括右键单击该脚本并告诉其在Powershell中运行,都会给我错误:

找不到类型[System.Windows.Forms.Messagebox]

class test {

[void]ok() {

 Add-Type -AssemblyName "System.Windows.Forms"
 [void][System.Windows.Forms.Messagebox]::Show("This works in ISE but not powershell window")
}
}

$e = [test]::new()
$e.ok()

但是,当我将其转换为以下功能时,它可以正常工作。

function test {

 Add-Type -AssemblyName "System.Windows.Forms"
 [void][System.Windows.Forms.Messagebox]::Show("This works in ISE but not powershell window")
}

test

任何人都可以阐明造成这种现象的原因吗?

© www.soinside.com 2019 - 2024. All rights reserved.