如何在 Powershell 中将消息框置于最前面

How to bringtofront a messagebox in Powershell

只需要一点 Powershell 脚本方面的帮助。

我的脚本中有最后一个消息框。我想要完成的是将消息框放在所有 windows 的前面。

我使用的 cmdlet 是

$end=[system.Windows.Forms.Messagebox]::显示('StartUP Tool Progress Completed!','StartUP Warning')

这是一个 WinForms 问题,而不是一个 PowerShell 问题。您需要传入 Form.ActiveForm。 Form.ActiveForm 会给你当前活动的表单,即使你从任何其他 class.

提升你的 MessageBox

不过,我认为您可能希望查看 Read-Host -AsSecureString,或者如果提示是针对机密数据,则更好地查看 Get-Credential

Read-Host 无法控制地停止脚本以提示用户,这意味着您永远不会有另一个包含使用 Read-Host.

的脚本的脚本

值得庆幸的是,PowerShell 在启动对话框方面有很多 built-in 帮助。您正在尝试请求参数。

您应该使用

[Parameter(Mandatory=$true)]

属性,并正确键入,以请求参数。如果您还没有阅读 "params",请继续阅读。

如果您在 [SecureString] 上使用参数属性,它会提示输入密码字段。如果您在凭据类型 ([Management.Automation.PSCredential]) 上使用此参数,则当参数不存在时,将弹出凭据对话框。一个字符串将变成一个普通的旧文本框。如果您将 HelpMessage 添加到参数属性(即 [Parameter(Mandatory = $true, HelpMessage = 'New User Credentials')]),那么它将成为提示的帮助文本。

最后,您可以尝试这个 肮脏的 技巧,利用 Microsoft Visual basic DLL:

[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null

$computer = [Microsoft.VisualBasic.Interaction]::InputBox("Enter a computer name", "Computer", "$env:computername")

或者,如果您只需要一个消息框,您可以使用 Wscript Shell:

$wshell = New-Object -ComObject Wscript.Shell
$wshell.Popup("StartUP Tool Progress Completed",0,"Completed",0x0)

更多信息:Popup Method