密码生成器 - 按需生成密码

Password Generator - Generate password on demand

我一直在研究一个脚本,它使用特定长度的特定字符生成密码,但随机数具有特定长度。

脚本有一个 GUI(正在进行中,我最终会完成它)。

我面临的问题是,每当我按 "Generate Password" 时,它都会创建一个密码,但在生成后不会给我一个新密码。它只是提供与第一次生成时相同的密码。

我在网上查看每次按下按钮时如何找回新密码,但我没有找到任何东西。

有人可以提供一些提示吗?

谢谢。

脚本是:

    Function Button_Click()
{
    [System.Windows.Forms.MessageBox]::Show($DefinedLetters)
}
Function Generate-Form {

    Add-Type -AssemblyName System.Windows.Forms    
    Add-Type -AssemblyName System.Drawing

    # Build Form
    $Form = New-Object System.Windows.Forms.Form
    $Form.Text = "Password Generator"
    $Form.Size = New-Object System.Drawing.Size(200,200)
    $Form.StartPosition = "CenterScreen"
    $Form.Topmost = $True

    # Add Button
    $Button = New-Object System.Windows.Forms.Button
    $Button.Location = New-Object System.Drawing.Size(35,35)
    $Button.Size = New-Object System.Drawing.Size(120,23)
    $Button.Text = "Generate Password"

    $Form.Controls.Add($Button)

    #Add Button event 
    $Button.Add_Click({Button_Click})


    #Show the Form 
    $form.ShowDialog()| Out-Null 

} #End Function

# Password generator #

Function DefinedLetters
{
$DefinedLetters = 'Summer'
$numbers = 0..5
$array = @()
$array += $DefinedLetters.Split(',') | Get-Random -Count 4
$DefinedLetters += $numbers | Get-Random -Count 4
($DefinedLetters | Get-Random -Count $DefinedLetters.Count) -join ""
}

#Call the Function 
Generate-Form

Button_Click()中你只是引用变量,它不调用函数。您需要将值形式函数分配给变量,如:

Function Button_Click()
{
    $PW = DefinedLetters
    [System.Windows.Forms.MessageBox]::Show($PW)
}

这不是生成密码的好方法,但这是您的代码版本,每次使用 'summer' 中的 4 个字母和 (0 ,1,2,3,4,5):

# Password generator #

Function DefinedLetters {
    $DefinedLetters = 'Summer'
    $numbers = 0..5
    $array = @()
    $array += $DefinedLetters.ToCharArray() | Get-Random -Count 4
    $array += $numbers | Get-Random -Count 4
    ($array | Get-Random -Count $array.Count) -join ""
}

Function Button_Click() {
    $DefinedLetters = DefinedLetters 
    [System.Windows.Forms.MessageBox]::Show($DefinedLetters)
}

Function Generate-Form {
    Add-Type -AssemblyName System.Windows.Forms    
    Add-Type -AssemblyName System.Drawing

    # Build Form
    $Form = New-Object System.Windows.Forms.Form
    $Form.Text = "Password Generator"
    $Form.Size = New-Object System.Drawing.Size(200,200)
    $Form.StartPosition = "CenterScreen"
    $Form.Topmost = $True

    # Add Button
    $Button = New-Object System.Windows.Forms.Button
    $Button.Location = New-Object System.Drawing.Size(35,35)
    $Button.Size = New-Object System.Drawing.Size(120,23)
    $Button.Text = "Generate Password"

    $Form.Controls.Add($Button)

    #Add Button event 
    $Button.Add_Click({Button_Click})


    #Show the Form 
    $form.ShowDialog()| Out-Null 

} #End Function


#Call the Function 
Generate-Form
  1. 您的函数 DefinedLetters 没有按预期工作t/can
  2. 你不用函数而是用变量来显示。

Function Button_Click(){
    [System.Windows.Forms.MessageBox]::Show((DefinedLetters))
}

Function Generate-Form {
   #... snipped for brevity ...
} 

Function DefinedLetters{
    (([char[]]'Summer' | Get-Random -Count 4) -join '')+
                 ((0..5| Get-Random -Count 4) -join '')  
}

#Call the Function 
Generate-Form