PowerShell中實現人機交互


編寫腳本的過程中有很多時候需要進行人機交互,比如我寫一個腳本,需要動態的輸入一些內容,比如用戶名和密碼之類的東西,這些是沒辦法事先寫進代碼里的。而通過外部文件進行信息讀取,友好性又差了點。所以當我們需要動態的用戶輸入信息時,一個這樣的表單真是必不可少。雖然這並不是PowerShell作為一個腳本語言的強項,但是任何具有特色的語言肯定都不是完美的,所以我們為了充分發揮腳本語言的靈活性,有時候也不得不為他的弱項買單。(其實也沒有太弱,如果VS中WinForm用的熟,這個原理也是一樣的,PowerShell做為一種腳本語言,和C#一樣是基於.NET框架的,所以類庫相通,很多特性都可以互聯。)

以下是我的代碼,實現一個動態交互表單:

<#
    Intro: This function will display a form to communicate with the user.
    Input: -FormText -ButtonText
    Example: MakeForm -FormText "ForInput" -ButtonText "Submit"
    Use: To make the PowerShell program's interactivity better.
#>
function MakeForm{
    param($FormText,$ButtonText)
    $null = [Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
    $form = New-Object Windows.Forms.Form
    $form.size = New-Object Drawing.Size -Arg 400,80
    $form.StartPosition = "CenterScreen"
    $form.Text = $FormText.toString()
    $textBox = New-Object Windows.Forms.TextBox
    $textBox.Dock = "fill"
    $form.Controls.Add($textBox)
    $button = New-Object Windows.Forms.Button
    $button.Text = $ButtonText
    $button.Dock = "Bottom"
    $button.add_Click(
    {$global:resultText = $textBox.Text;$form.Close()})
    $form.Controls.Add($button)
    [Void]$form.ShowDialog()
}

使用方法如下:

 MakeForm -FormText "What's your name" -ButtonText "Submit" 

運行效果如下:

PS:用戶輸入的內容將存儲到變量$global:resultText中。(本質就是創建了一個WinForm窗體對象,並動態的賦予窗體標題和按鈕名稱。)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM