首页 > 代码库 > Powershell使用 OpenFileDialog类 假死问题解决。
Powershell使用 OpenFileDialog类 假死问题解决。
我创建了一个打开文件的函数。代码内容:
function Openfile { Add-Type -AssemblyName System.Windows.Forms $openfile = New-Object System.Windows.Forms.OpenFileDialog $openfile.Filter = ‘图片|*.jpg|All Files|*.*‘ $openfile.InitialDirectory = "C:\ManageOperate\Staff Photo" [void]$openfile.ShowDialog() $Openfile.title="请选择一张照片" $Openfile.FileName }
当在Win7SP1X64环境中调用的时候没有问题。
但当把脚本放到Windows Server2008R2环境中却出现了假死的问题。脚本始终停在这里没有窗口弹出。
原来是由于脚本运行在MTA也就是多线程模式导致的。Powershell2.0控制台默认是MTA,Powershell3.0 控制台默认是STA。
什么是MTA和STA:
官方解释:
STA:http://msdn.microsoft.com/en-us/library/ms680112(v=vs.85).aspx
MTA:http://msdn.microsoft.com/en-us/library/ms693421(v=vs.85).aspx
判断Powershell的版本和线程模式 。
Win7SP1 X64
WinServer2008R2
解决方法:在代码ShowDialog之前加入*.ShowHelp = $true判断参数
function Openfile { Add-Type -AssemblyName System.Windows.Forms $openfile = New-Object System.Windows.Forms.OpenFileDialog $openfile.Filter = ‘图片|*.jpg|All Files|*.*‘ $openfile.InitialDirectory = "C:\ManageOperate\Staff Photo" $openfile.ShowHelp=$true [void]$openfile.ShowDialog() $Openfile.title="请选择一张照片" $Openfile.FileName }
我们再次在Server上执行这个函数。已经可以弹出窗口了。但窗口有点小呵呵。
本文出自 “运维人生” 博客,请务必保留此出处http://lixiaosong.blog.51cto.com/705126/1536071
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。