2014-02-22 194 views
0

我试图获得一个密码按钮,每次单击按钮时都会生成一个新密码。第一次点击生成的密码与我的要求很好,但我需要它重新运行每次点击。我知道它在add_click()内可能很简单,但我似乎无法找到任何东西。以下是我有关按钮和密码生成的一切。Powershell按钮每次点击时运行

#form1: Button1 "password generate" 
$button1 = New-Object system.windows.forms.button 
$button1.location = "10, 25" 
$button1.size = "125, 35" 
$button1.text = "Generate Password" 
$button1.add_click($displayPassword) 
$form1.controls.add($button1) 

#######Password###### 

$caps = [char[]] "ABCDEFGHJKMNPQRSTUVWXY" 
$lows = [char[]] "abcdefghjkmnpqrstuvwxy" 
$nums = [char[]] "2346789" 
$special = [char[]] "#%$+<=>?" 

$first = Get-Random -Minimum 2 
$second = Get-Random -Minimum 2 
$third = Get-Random -Miniumum 2 
$fourth = Get-Random -Minimum 2 
$ofs = "" 
$pwd = [string](@($caps | Get-Random -Count $first) + @($lows | Get-Random -Count $second) + @($nums | Get-Random -Count $third)+ @($special | Get-Random -Count $fourth) | Get-Random -Count 15) 

$displayPassword = {$textbox1.text = "$pwd"} 

回答

3

用来计算随机密码的所有东西只运行一次。您的点击事件处理程序仅更新文本框,但不会重新生成新密码。

尝试这样:

#form1: Button1 "password generate" 
$button1 = New-Object system.windows.forms.button 
$button1.location = "10, 25" 
$button1.size = "125, 35" 
$button1.text = "Generate Password" 
$button1.add_click({ 
    $first = Get-Random -Minimum 2 
    $second = Get-Random -Minimum 2 
    $third = Get-Random -Miniumum 2 
    $fourth = Get-Random -Minimum 2 
    $pwd = [string](@($caps | Get-Random -Count $first) + @($lows | Get-Random -Count $second) + @($nums | Get-Random -Count $third)+ @($special | Get-Random -Count $fourth) | Get-Random -Count 15) 
    $textbox1.text = "$pwd" 

}) 

$form1.controls.add($button1) 

#######Static Password Resources###### 

$caps = [char[]] "ABCDEFGHJKMNPQRSTUVWXY" 
$lows = [char[]] "abcdefghjkmnpqrstuvwxy" 
$nums = [char[]] "2346789" 
$special = [char[]] "#%$+<=>?" 
$ofs = "" 

仅供参考,为未来的问题,包括一个完整的,工作样本。您的样本参考文献$form1$textbox1从未声明。

+1

在添加到按钮之前,必须先定义'$ displayPassword'。 –

+0

+1正确。固定。 :) –

+0

谢谢@FrodeF。这解决了我的问题。现在你解释它是有意义的。我还在学习,昨天开始了PowerShell。任何想法为什么即使我设置最低限度,他们并不总是有最低限度? – user3341736