当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 生成随机密码

作者:精品下载站 日期:2024-12-14 15:47:20 浏览:11 分类:玩电脑

PowerShell 生成随机密码


您是否正在寻找一种快速方法来为多个帐户或 Web 应用程序创建强而安全的密码? PowerShell 是一种易于使用的终端语言,可让您快速生成随机密码,有助于节省时间并保证数据安全。在这篇博文中,我们将探讨如何使用 PowerShell 命令生成具有各种长度和复杂性要求的随机密码。那么让我们开始吧!

为什么使用 PowerShell 随机密码生成器?

在 PowerShell 中使用随机密码生成器有几个优点。首先,它确保生成的密码是真正随机的,与使用可预测模式或个人信息创建的密码相比,它们更加安全。此外,PowerShell 随机密码生成器可实现自动化,非常适合需要快速生成多个密码的场景,例如在 Active Directory 中创建用户帐户或设置服务帐户时。通过利用 PowerShell 的强大功能,您可以创建复杂且唯一的密码,而无需外部工具或手动干预。

如何在PowerShell中生成随机字符串?

要在 PowerShell 中生成随机字符串,可以使用以下脚本:


-join ((97..122) | Get-Random -Count 10 | ForEach-Object {[char]$_})

这将生成一个长度为 10 的随机字符串,其中包含小写字母 (a-z)。例如。


lyknbwdrxu

nlqgyuptac

iemrvdakzx

phxcvwdknb

[玩转系统] PowerShell 生成随机密码

您可以通过更改 -Count 参数的值来调整字符串的长度。例如,要生成长度为 20 的字符串,您可以使用 -Count 20

您还可以通过调整传递给 Get-Random 的 ASCII 值的范围来修改字符串中包含的字符。例如,要生成包含大写字母、小写字母和数字的字符串,可以使用以下命令:


$RandomString = -join ((48..57) + (65..90) + (97..122) | Get-Random -Count 10 | ForEach-Object {[char]$_})

这将生成一个长度为 10 的随机字符串,包含大写字母和数字。要从给定字符创建随机字符串,请使用:


-Join("ABCDabcd&@#$%1234".tochararray() | Get-Random -Count 10 | % {[char]$_})

您可以使用此技术生成任意长度、包含任意字符组合的随机密码。让我们看一下如何通过将脚本包装到可重用函数中来在 PowerShell 中生成随机密码。

自定义随机密码生成器

如果您希望对密码生成过程进行更多控制,可以使用 PowerShell 创建自定义随机密码生成器。此方法允许您根据需要定义字符集和复杂性规则。以下是 PowerShell 中自定义随机密码生成器函数的示例:


function Generate-RandomPassword {
    param (
        [Parameter(Mandatory)]
        [int] $length
    )

    $charSet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'.ToCharArray()

    $rng = New-Object System.Security.Cryptography.RNGCryptoServiceProvider
    $bytes = New-Object byte[]($length)
 
    $rng.GetBytes($bytes)
 
    $result = New-Object char[]($length)
 
    for ($i = 0 ; $i -lt $length ; $i++) {
        $result[$i] = $charSet[$bytes[$i]%$charSet.Length]
    }

    return -join $result
}

Generate-RandomPassword 10

在此示例中,Generate-RandomPassword 函数通过从指定字符集中选择字符来生成随机密码。在这种情况下,字符集包括小写和大写字母以及数字。您可以根据需要修改字符集以包含特殊字符或删除某些字符类型。

使用 PowerShell 的随机密码生成器

强大的密码应包含大写字母、小写字母、特殊字符和数字。现场想出这些密码并不总是那么容易,因此您可能需要考虑生成一个随机密码。以下是如何在 PowerShell 中创建随机密码。


Function Get-RandomPassword
{
    #define parameters
    param([int]$PasswordLength = 10)

    #ASCII Character set for Password
    $CharacterSet = @{
            Uppercase   = (97..122) | Get-Random -Count 10 | % {[char]$_}
            Lowercase   = (65..90)  | Get-Random -Count 10 | % {[char]$_}
            Numeric     = (48..57)  | Get-Random -Count 10 | % {[char]$_}
            SpecialChar = (33..47)+(58..64)+(91..96)+(123..126) | Get-Random -Count 10 | % {[char]$_}
    }

    #Frame Random Password from given character set
    $StringSet = $CharacterSet.Uppercase + $CharacterSet.Lowercase + $CharacterSet.Numeric + $CharacterSet.SpecialChar

    -join(Get-Random -Count $PasswordLength -InputObject $StringSet)
}

#Call the function to generate random password of 8 characters
Get-RandomPassword -PasswordLength 8

#Sample Output: glx`FC>Y

此功能将生成一个完全随机的安全密码,满足所有现代安全标准和要求(大小写字母、数字和特殊字符的组合)。调用Get-RandomPassword函数生成10个字符长的随机密码。

[玩转系统] PowerShell 生成随机密码

使用内置 System.Web.Security.Membership 类

在 PowerShell 中生成随机密码的最简单、最有效的方法之一是利用内置的 System.Web.Security.Membership 类。此类提供了一个名为 GeneratePassword() 的方法,允许您生成具有指定长度和复杂性的随机密码。

以下是使用 .NET 框架方法创建安全随机密码的简单方法:


[System.Web.Security.Membership]::GeneratePassword(10,2)

此命令生成一个随机的 10 个字符的密码,其中包含两个非字母数字字符(例如 %&)。如果您想要更多或更少的密码字符,只需将命令中的数字 10 更改为您想要的密码长度(例如 10)。


function Generate-Password {
    param (
        [Parameter(Mandatory)]
        [int] $length,
        [int] $amountOfNonAlphanumeric = 1
    )
    Add-Type -AssemblyName 'System.Web'
    return [System.Web.Security.Membership]::GeneratePassword($length, $amountOfNonAlphanumeric)
}

Generate-Password 10

Generate-Password 函数采用两个参数:lengthamountOfNonAlphanumericlength 参数确定密码的长度,而 amountOfNonAlphanumeric 参数指定密码中非字母数字字符的数量。通过调整这些参数,您可以生成满足您特定要求的密码。

PowerShell 随机密码一行: -join([char[]](33..122) | Get-Random -Count 10)

结论:

创建强密码是当今世界保持在线安全的重要组成部分。幸运的是,当您可以使用 PowerShell 命令轻松生成密码时,无需花费数小时来思考复杂的密码!只需几个简单的步骤,您就可以快速创建符合当前安全标准的完全随机的密码 - 并且让您的数据远离窥探!

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯