2013-06-17 3 views
0

텍스트 상자에 사용자의 입력이 필요한 스크립트가 있습니다. 사용자가 입력을 클릭하거나 확인을 클릭하면 텍스트 상자의 데이터를 명령으로 전송해야합니다. 다음은 코드의 텍스트 상자 부분입니다. 나는 PS에 단지 몇 달이다. 비평 해주십시오.텍스트 상자의 정보 파이핑

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 
    [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
    $objForm = New-Object System.Windows.Forms.Form; 
    $objForm.Text = "Enter Patch Number"; 
    $objForm.Size = New-Object System.Drawing.Size(100,100); 
    $objForm.StartPosition = "CenterScreen"; 
    $InputBox = New-Object System.Windows.Forms.TextBox 
    $InputBox.Location = New-Object System.Drawing.Size(20,50) 
    $InputBox.Size = New-Object System.Drawing.Size(150,20) 
    $Form.Controls.Add($InputBox) 
    $Button = New-Object System.Windows.Forms.Button 
    $Button.Location = New-Object System.Drawing.Size(400,30) 
    $Button.Size = New-Object System.Drawing.Size(110,80) 
    $Button.Text = "Send to Patch Command" 
    $Button.Add_Click({$version}) 
    $Form.Controls.Add($Button) 
    $wks=$InputBox.text 
    .\anp deploypatch -patch=$version 
    $Form.Add_Shown({$Form.Activate()}) 
    [void] $Form.ShowDialog() 

이것은 사용자 입력이 끝나야하는 명령입니다. 이것에 cmd 중 예가 실행될 정확하게 ... 이다. \ ANP deploypatch - 패치 = 말하면 437.1237

를 사용자 상기 굵게 표시된 항목의 유형 및 히트 입력 및 명령에 기초하여 실행되고 사용자가 입력 한 버전 내가 원하는 것은 사용자가 원하는 명령을 입력하는 방법입니다.

답변

1

다음 코드를 시도해 볼 수 있습니다. 원래 코드 $form에 존재하지 않는 컨트롤 위치는 임의이며, Enter 키는 버튼에 연결되어 있지 않습니다.

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
$objForm = New-Object System.Windows.Forms.Form; 
$objForm.Text = "Enter Patch Number"; 
$objForm.Size = New-Object System.Drawing.Size(200,200); 
$objForm.StartPosition = "CenterScreen"; 
$InputBox = New-Object System.Windows.Forms.TextBox 
$InputBox.Location = New-Object System.Drawing.Point(20,20) 
$InputBox.Size = New-Object System.Drawing.Size(150,20) 
$objForm.Controls.Add($InputBox) 
$Button = New-Object System.Windows.Forms.Button 
$Button.Location = New-Object System.Drawing.Point(50,50) 
$Button.Size = New-Object System.Drawing.Size(110,80) 
$Button.Text = "Send to Patch Command" 
$Button.Add_Click({$objForm.Close()}) 
$objForm.AcceptButton = $Button # the button is linked to the enter key 
$objForm.Controls.Add($Button) 
$wks=$InputBox.text 
$objForm.Add_Shown({$objForm.Activate()}) 
[void] $objForm.ShowDialog() 
$version = $InputBox.Text 
#$version 
.\anp deploypatch -patch=$version 
0

아래의 내용은 당신이 어떻게 시작하는지 알려주는 것 같습니다.

[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing") 
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") 
$Form = New-Object System.Windows.Forms.Form; 
$Form.Text = "Enter Patch Number"; 
$Form.Size = New-Object System.Drawing.Size(500,200); 
$Form.StartPosition = "CenterScreen"; 

$InputBox = New-Object System.Windows.Forms.TextBox 
$InputBox.Location = New-Object System.Drawing.Size(20,50) 
$InputBox.Size = New-Object System.Drawing.Size(150,20) 
$InputBox.text = "" 
$Form.Controls.Add($InputBox) 



$Button = New-Object System.Windows.Forms.Button 
$Button.Location = New-Object System.Drawing.Size(400,30) 
$Button.Size = New-Object System.Drawing.Size(110,80) 
$Button.Text = "Send to Patch Command" 
$Button.Add_Click({patch}) 
$Form.Controls.Add($Button) 

Function patch { 
$wks=$InputBox.text 
Invoke-Expression "\anp deploypatch -patch='$wks'" 
} 

$Form.Add_Shown({$Form.Activate()}) 
[void] $Form.ShowDialog() 
관련 문제