只需要一个Powershell脚本的帮助。
我的脚本上有最后一个消息框。我想要完成的是将消息框带到所有窗口前面。
我使用的cmdlet是
$ end = [system.Windows.Forms.Messagebox] ::显示(' StartUP工具进度已完成!',' StartUP警告')
答案 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")