PowerShell:命令在Start-Job块中停止工作

时间:2013-10-29 21:03:35

标签: powershell

我正在尝试编写一个首先显示消息框的脚本,然后如果用户没有单击“确定”到消息框,脚本需要在一定时间后继续。消息框代码本身可以正常工作,然后代码在Start-Job块中停止工作。

$job = Start-Job {

    $message = [System.Windows.Forms.MessageBox]::Show("Message body." , "Message title." , 0)

    if ($message -eq "OK" ) {Write-Host "User clicked OK."} 

}

$timeout = Wait-Job $job -Timeout 30

Stop-Job $job 

Receive-Job $job

Remove-Job $job

错误消息:

  

无法找到类型[System.Windows.Forms.MessageBox]:确保已加载包含此类型的程序集。       + CategoryInfo:InvalidOperation:(System.Windows.Forms.MessageBox:String)[],RuntimeException       + FullyQualifiedErrorId:TypeNotFound

1 个答案:

答案 0 :(得分:2)

在您的脚本块中,在开头插入Add-Type -AssemblyName System.Windows.Forms

作业在不同的PowerShell流程中运行,因此即使您已在控制台中导入WinForms程序集,该作品也不会在作业轮换的新PowerShell会话中导入。