단순입력함 기능
PowerShell에 대한 간단한 팝업 기능을 알고 있습니다. 예:
function popUp($text,$title) {
$a = new-object -comobject wscript.shell
$b = $a.popup($text,0,$title,0)
}
popUp "Enter your demographics" "Demographics"
하지만 저는 입력을 요청하는 팝업을 받을 수 있는 동일한 것을 찾을 수 없습니다.
물론, 읽기 라인이 있지만 콘솔에서 프롬프트가 나타납니다.
그리고 한 두 번 입력을 요구하는 스크립트에 비해 지나치게 복잡한 기능이 있습니다.
function getValues($formTitle, $textTitle){
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = $formTitle
$objForm.Size = New-Object System.Drawing.Size(300,200)
$objForm.StartPosition = "CenterScreen"
$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter") {$x=$objTextBox.Text;$objForm.Close()}})
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape") {$objForm.Close()}})
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(75,120)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.Add_Click({$Script:userInput=$objTextBox.Text;$objForm.Close()})
$objForm.Controls.Add($OKButton)
$CANCELButton = New-Object System.Windows.Forms.Button
$CANCELButton.Location = New-Object System.Drawing.Size(150,120)
$CANCELButton.Size = New-Object System.Drawing.Size(75,23)
$CANCELButton.Text = "CANCEL"
$CANCELButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($CANCELButton)
$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(10,20)
$objLabel.Size = New-Object System.Drawing.Size(280,30)
$objLabel.Text = $textTitle
$objForm.Controls.Add($objLabel)
$objTextBox = New-Object System.Windows.Forms.TextBox
$objTextBox.Location = New-Object System.Drawing.Size(10,50)
$objTextBox.Size = New-Object System.Drawing.Size(260,20)
$objForm.Controls.Add($objTextBox)
$objForm.Topmost = $True
$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()
return $userInput
}
$schema = getValues "Database Schema" "Enter database schema"
아마도 가장 간단한 방법은 클래스의 방법을 사용하는 것일 것입니다.
[void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')
$title = 'Demographics'
$msg = 'Enter your demographics:'
$text = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title)
입력 상자를 가져오는 가장 간단한 방법은 Read-Host cmdlet 및 -AsSecureString 매개 변수입니다.
$us = Read-Host 'Enter Your User Name:' -AsSecureString
$pw = Read-Host 'Enter Your Password:' -AsSecureString
위의 예제와 같이 로그인 정보를 수집하는 경우 특히 유용합니다.변수를 SecureString 개체로 난독화된 상태로 유지하는 것을 선호하는 경우 다음과 같이 즉시 변수를 변환할 수 있습니다.
[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($us))
[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($pw))
정보를 안전하게 보호할 필요가 전혀 없는 경우 일반 텍스트로 변환할 수 있습니다.
$user = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($us))
Read-Host 및 -AsSecureString이 모든 PowerShell 버전(1-6)에 포함된 것으로 보이지만, 명령이 동일하게 작동하도록 보장하는 PowerShell 1 또는 2가 없습니다.https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/read-host?view=powershell-3.0
이런 느낌일 겁니다.
function CustomInputBox([string] $title, [string] $message, [string] $defaultText)
{
$inputObject = new-object -comobject MSScriptControl.ScriptControl
$inputObject.language = "vbscript"
$inputObject.addcode("function getInput() getInput = inputbox(`"$message`",`"$title`" , `"$defaultText`") end function" )
$_userInput = $inputObject.eval("getInput")
return $_userInput
}
그러면 이와 비슷한 기능을 호출할 수 있습니다.
$userInput = CustomInputBox "User Name" "Please enter your name." ""
if ( $userInput -ne $null )
{
echo "Input was [$userInput]"
}
else
{
echo "User cancelled the form!"
}
이것이 제가 생각할 수 있는 가장 간단한 방법입니다.
언급URL : https://stackoverflow.com/questions/30534273/simple-inputbox-function
'programing' 카테고리의 다른 글
Get-Content - 문서에 설명된 대로 작동하지 않을 때까지 기다립니다. (0) | 2023.10.01 |
---|---|
Woocmerce에서 특정 상품 속성이 있는지 확인하는 방법 (0) | 2023.10.01 |
열에서 공통 값을 기준으로 큰 데이터 프레임을 데이터 프레임 목록으로 나눕니다. (0) | 2023.10.01 |
jQuery에서 여러 ID 처리 (0) | 2023.10.01 |
자바스크립트에서 객체 배열에서 값을 찾는 방법은? (0) | 2023.09.26 |