
如果您需要在Windows系统中快速生成高强度随机密码,PowerShell提供了无需第三方工具即可实现的原生方案。以下是多种可靠且可复用的方法:
一、使用New-Guid结合字符映射生成8位随机密码
该方法利用PowerShell内置的New-Guid命令生成唯一标识符字符串,再通过字符替换与截取构造含大小写字母和数字的密码,适用于对密码复杂度要求适中但需快速生成的场景。
1、打开PowerShell(以管理员身份或普通用户身份均可)。
2、输入以下命令并回车: $guid = (New-Guid).Guid.Replace(“-“, “”); $chars = “ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz23456789”; $password = -join ($guid.ToCharArray() | ForEach-Object { $chars[$_.GetHashCode() % $chars.Length] })[0..7]
3、输入 $password 并回车,输出结果即为8位随机密码。
二、调用.NET类库生成含大小写字母、数字及符号的12位密码
此方法直接调用System.Security.Cryptography.RandomNumberGenerator类,确保密码熵值高且无重复模式,支持自定义长度与字符集,符合NIST SP 800-63B推荐的随机性标准。
1、在PowerShell中执行以下脚本: $length = 12; $upper = “ABCDEFGHJKLMNPQRSTUVWXYZ”.ToCharArray(); $lower = “abcdefghijklmnopqrstuvwxyz”.ToCharArray(); $digit = “0123456789”.ToCharArray(); $symbol = “!@#$%^&*”.ToCharArray(); $all = $upper + $lower + $digit + $symbol; $rng = [System.Security.Cryptography.RandomNumberGenerator]::Create(); $bytes = New-Object byte[] $length; $rng.GetBytes($bytes); $password = -join ($bytes | ForEach-Object { $all[$_.ToString().GetHashCode() % $all.Count] })
2、运行后键入 $password 查看生成结果。
三、使用Get-Random配合预定义字符池批量生成10个16位密码
该方法依赖PowerShell原生命令Get-Random,通过多次采样避免GUID序列可预测性,适合一次性导出多个独立密码用于账户初始化等批量操作。
1、定义字符池: $pool = ([char[]]([char]65..[char]90) + [char[]]([char]97..[char]122) + [char[]]([char]48..[char]57) + @(‘!’,’@’,’#’,’$’,’%’,’^’,’&’,’*’)).ToString()
2、执行批量生成命令: 1..10 | ForEach-Object { -join ($pool.ToCharArray() | Get-Random -Count 16) }
3、每行输出均为一个独立生成、互不重复的16位强密码。
四、保存为.ps1脚本实现一键批量导出至文本文件
将密码生成逻辑封装为可重复调用的脚本文件,支持指定数量、长度及输出路径,避免每次手动输入长命令,提升运维效率。
1、用记事本新建文件,粘贴以下内容: param([int]$Count=5, [int]$Length=12); $chars = [char[]]([char]65..[char]90) + [char[]]([char]97..[char]122) + [char[]]([char]48..[char]57) + @(‘!’,’@’,’#’,’$’); 1..$Count | ForEach-Object { -join ($chars | Get-Random -Count $Length) } | Out-File -FilePath “.\passwords.txt” -Encoding UTF8
2、将文件保存为 generate-password.ps1。
3、在PowerShell中执行: Set-ExecutionPolicy RemoteSigned -Scope CurrentUser .\generate-password.ps1 -Count 20 -Length 16
4、执行完成后,当前目录下将生成包含20个16位密码的passwords.txt文件。

评论(0)