所以我用Runspaces写了这个小GUI . 它在ISE中运行时按预期工作,如果我从PS提示符启动它,但是当我尝试从快捷方式运行它时,只要我不使用-noexit标志就不会启动它 . 但是当使用-noexit标志时,即使关闭GUI,它也会使Powershell进程继续运行 .
我使用这个tecnuiqe作为我的GUI:Powershell GUI Template
这就是我的快捷方式:C:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe -NoProfile -sta -WindowStyle Hidden -file“C:\ Temp \ Runspaceversion.ps1”
那不会工作...但如果我这样做
C:\ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe -NoProfile -sta -WindowStyle Hidden -noexit -file "C:\IT\Checklist\Runspaceversion.ps1"
它有效,但当我退出Gui时,我得到了powershell进程闲置....
3 回答
正在使用的模板中没有退出代码 .
当窗户关闭时,这会引发......
改变那个块以包含这样的东西......
当然,这可能是一种蛮力的方式,但我下拉了模板,这适用于在关闭窗体窗口时关闭关联的主进程 .
这就是我在快捷方式中所拥有的 .
问题是默认情况下PowerShell控制台关闭,也会终止所有关联的运行空间和线程,包括刚刚创建的表单 . 这是因为
BeginInvoke()
启动表单但随后恢复当前线程 .基本上PowerShell必须运行 . 而不是
BeginInvoke()
你可以尝试RunDialog()
,它将保持主线程,直到Form关闭,此时PowerShell也将退出 .我设法绕过它,通过带有$ PID的Paramater杀死了启动GUI的会话,并且正如Postnote所说,在退出GUI时终止了进程 .