Windows怎么用PowerShell生成随机密码_Windows如何用脚本批量生成安全的随机密码字符串【方法】-1

如果您需要在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文件。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。