如何在Powershell中使用消息框

时间:2018-02-27 03:49:34

标签: powershell powershell-v2.0 powershell-v3.0 powershell-v4.0

只需要一个Powershell脚本的帮助。

我的脚本上有最后一个消息框。我想要完成的是将消息框带到所有窗口前面。

我使用的

cmdlet是

$ end = [system.Windows.Forms.Messagebox] ::显示(' StartUP工具进度已完成!',' StartUP警告')

1 个答案:

答案 0 :(得分:0)

这是一个WinForms问题,不仅仅是一个PowerShell问题。你需要传递Form.ActiveForm。即使您从任何其他类提升MessageBox,Form.ActiveForm也会为您提供当前活动的表单。

但是,如果提示是针对机密数据,我认为您可能希望查看Read-Host -AsSecureString或更优选Get-Credential

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

值得庆幸的是,PowerShell在启动对话框方面有很多内置帮助。你正试图要求参数。

你应该使用

[Parameter(Mandatory=$true)]

属性,并正确输入,要求参数。如果你还没有,请阅读“params”。

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

最后,你可以尝试这个 dirty 技巧,利用Microsoft Visual Basic DLL:

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

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