如何在 PowerShell 中生成随机密码(带有示例)
通常,您可能希望使用 PowerShell 生成具有特定长度的随机密码。
有两种常见的方法可以做到这一点:
方法一:生成带有特殊字符的随机密码
Add-Type -AssemblyName 'System.Web'
[System.Web.Security.Membership]::GeneratePassword(12, 4)
此特定示例使用GeneratePassword 方法生成一个总共12 个字符的随机密码,其中至少4 个字符是特殊字符。
方法二:生成不含特殊字符的随机密码
[System.Web.Security.Membership]::GeneratePassword(12, 4)
此特定示例创建的密码总共为 12 个字符,并且仅包含字母和数字。
以下示例展示了如何在实践中使用每种方法。
示例1:在PowerShell中生成带有特殊字符的随机密码
可以说,在 PowerShell 中生成随机密码的最简单方法是在加载 System.Web 程序集后使用 GeneratePassword() 方法。
例如,您可以使用以下语法生成总共 12 个字符的随机密码,其中至少有 4 个字符是特殊字符:
Add-Type -AssemblyName 'System.Web'
[System.Web.Security.Membership]::GeneratePassword(12, 4)以下屏幕截图显示了如何在实践中使用此语法:
我们运行此代码 4 次,每次都收到不同的 12 个字符的随机密码。
请注意,每个密码至少包含 4 个特殊字符,尽管有些密码包含更多特殊字符。
例如,最后生成的密码总共包含6个特殊字符:
- Lh#N*g*4r.^]
使用 GeneratePassword() 方法的好处是它有可能在密码中包含以下所有类型的字符:
- 小写字母
- 大写字母
- 数字
- 特殊字符
示例2:在PowerShell中生成不包含特殊字符的随机密码
如果您想在 PowerShell 中生成随机密码且不包含特殊字符,则可以使用以下语法:
-join((0x30..0x39)+( 0x41..0x5A)+( 0x61..0x7A) | Get-Random -Count 12 | % {[char]$_})请注意,-Count 运算符后面的数字指定密码的长度。
以下屏幕截图显示了如何在实践中使用此语法:
我们运行此代码 4 次,每次都收到不同的 12 个字符的随机密码。
请注意,每个密码仅包含字母和数字。随机密码均不包含特殊字符。
注意:此方法的工作原理是生成一个由大写字母、小写字母和数字组成的随机字符串,然后使用 Get-Random cmdlet 选择特定数字的随机子集的字符。

