Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este exemplo só se aplica a plataformas Windows.
Script de uma caixa de entrada gráfica personalizada usando recursos de criação de formulário do Microsoft .NET Framework no Windows PowerShell 3.0 e versões posteriores.
Criar uma caixa de entrada gráfica personalizada
Copie e cole o seguinte no Windows PowerShell ISE e salve como um arquivo (.ps1
) do script do PowerShell.
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$form = New-Object System.Windows.Forms.Form
$form.Text = 'Data Entry Form'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'
$okButton = New-Object System.Windows.Forms.Button
$okButton.Location = New-Object System.Drawing.Point(75,120)
$okButton.Size = New-Object System.Drawing.Size(75,23)
$okButton.Text = 'OK'
$okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $okButton
$form.Controls.Add($okButton)
$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Location = New-Object System.Drawing.Point(150,120)
$cancelButton.Size = New-Object System.Drawing.Size(75,23)
$cancelButton.Text = 'Cancel'
$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'Please enter the information in the space below:'
$form.Controls.Add($label)
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(260,20)
$form.Controls.Add($textBox)
$form.Topmost = $true
$form.Add_Shown({$textBox.Select()})
$result = $form.ShowDialog()
if ($result -eq [System.Windows.Forms.DialogResult]::OK)
{
$x = $textBox.Text
$x
}
O script começa carregando duas classes do .NET Framework: System.Drawing e System.Windows.Forms. Você inicia uma nova instância da classe System.Windows.Forms.Form do .NET Framework. Isso fornece um formulário vazio ou uma janela na qual pode começar a adicionar controles.
$form = New-Object System.Windows.Forms.Form
Depois de criar uma instância da classe Form, atribua valores a três propriedades dessa classe.
- Text. Isso se torna o título da janela.
- Tamanho. Esse é o tamanho do formulário, em pixels. O script anterior cria um formulário de 300 pixels de largura por 200 pixels de altura.
- StartingPosition. Esta propriedade opcional é definida para CenterScreen no script precedente. Se você não adicionar essa propriedade, o Windows selecionará um local quando o formulário for aberto. Ao configurar o StartingPosition para CenterScreen, você está exibindo automaticamente o formulário no meio da tela cada vez que ela é carregada.
$form.Text = 'Data Entry Form'
$form.Size = New-Object System.Drawing.Size(300,200)
$form.StartPosition = 'CenterScreen'
Em seguida, crie um botão OK para seu formulário. Especifique o tamanho e comportamento do botão OK. Neste exemplo, a posição do botão é de 120 pixels da borda superior do formulário e 75 pixels da borda esquerda. A altura do botão é de 23 pixels, enquanto seu comprimento é de 75 pixels. O script usa tipos predefinidos de formulários do Windows para determinar os comportamentos do botão.
$okButton = New-Object System.Windows.Forms.Button
$okButton.Location = New-Object System.Drawing.Point(75,120)
$okButton.Size = New-Object System.Drawing.Size(75,23)
$okButton.Text = 'OK'
$okButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)
Crie o botão Cancelar da mesma maneira. O botão Cancelar fica a 120 pixels da parte superior e 150 pixels da borda esquerda da janela.
$cancelButton = New-Object System.Windows.Forms.Button
$cancelButton.Location = New-Object System.Drawing.Point(150,120)
$cancelButton.Size = New-Object System.Drawing.Size(75,23)
$cancelButton.Text = 'Cancel'
$cancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $cancelButton
$form.Controls.Add($cancelButton)
Em seguida, forneça o texto de rótulo na janela que descreve as informações que você deseja que os usuários forneçam.
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20)
$label.Size = New-Object System.Drawing.Size(280,20)
$label.Text = 'Please enter the information in the space below:'
$form.Controls.Add($label)
Adicione o controle (no caso, uma caixa de texto) que permite que os usuários forneçam as informações descritas no texto do rótulo. Há muitos outros controles que podem ser aplicados além das caixas de texto. Para obter mais controles, confira Namespace System.Windows.Forms.
$textBox = New-Object System.Windows.Forms.TextBox
$textBox.Location = New-Object System.Drawing.Point(10,40)
$textBox.Size = New-Object System.Drawing.Size(260,20)
$form.Controls.Add($textBox)
Defina a propriedade Topmost como $true para forçar a janela a abrir por cima de outras janelas e caixas de diálogo abertas.
$form.Topmost = $true
Em seguida, adicione esta linha de código para ativar o formulário e defina o foco para a caixa de texto que você criou.
$form.Add_Shown({$textBox.Select()})
Adicione a seguinte linha de código para exibir o formulário do Windows.
$result = $form.ShowDialog()
Por fim, o código dentro do bloco If instrui o Windows sobre o que fazer com o formulário depois que os usuários fornecem texto na caixa de texto e clicam no botão OK ou pressionam a tecla Enter.
if ($result -eq [System.Windows.Forms.DialogResult]::OK) {
$x = $textBox.Text
$x
}