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

问题描述 投票:0回答:3

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

该脚本有一个GUI(这是一项正在进行的工作,我最终将完成它)。

我面临的问题是,每当我按下“生成密码”时,它都会创建一个密码,但在生成密码后它不会给我一个新密码。它只是提供了第一次生成它的密码。

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

有人可以提供一些帮助吗?

谢谢。

该脚本是:

    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
powershell powershell-v2.0 powershell-v4.0
3个回答
0
投票

这不是生成密码的好方法,但是这里有一个代码版本,每次使用来自'summer'的4个字母和来自(0,1,2,3,4的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

0
投票

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

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

0
投票
  1. 您的函数DefinedLetters不能/不能按预期工作
  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

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.