我有一个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()
我确信对此有一个简单的答案,但我不知道它是什么。
哦,是的,答案很简单。要加载的程序集称为“ System.Windows.Form s”
周末愉快!
我已经进行了一些测试,并确定仅当我从以管理员身份运行的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
任何人都可以阐明造成这种现象的原因吗?