[玩转系统] 在 PowerShell 中生成随机字符串 [6 种方法]
作者:精品下载站 日期:2024-12-14 05:28:41 浏览:15 分类:玩电脑
在 PowerShell 中生成随机字符串 [6 种方法]
使用 [System.Guid]
类
要在 PowerShell 中生成随机字符串:
- 使用
NewGuid()
方法创建全局唯一标识符。 - 使用
ToString()
方法将GUID
(在上一步中创建)转换为字符串格式。 - 使用
Write-Host
cmdlet 打印随机字符串。
使用 System.Guid 类:
$randomString = ([System.Guid]::NewGuid()).ToString()
Write-Host $randomString
输出 :
95ffbbf8-f721-4cf2-886d-dcdbfae00665
New-Guid() 是 [System.Guid]
类的静态方法,我们用它来创建随机 GUID(全局唯一标识符)。如果需要在脚本中创建唯一 ID,我们可以使用此方法。
接下来,我们将 ToString()
方法与 New-Guid()
链接起来,将其类型更改为我们存储在 中的
变量。最后,我们使用 Write-Host cmdlet 将 $randomString 的值打印到 PowerShell 控制台。String
$randomString
使用 .NET RNGCryptoServiceProvider
类
要在 PowerShell 中生成随机字符串:
- 使用
New-Object
cmdlet 创建字节数组。 - 使用
New-Object
cmdlet 创建 .NETRNGCryptoServiceProvider
类的对象。 - 使用
GetBytes()
方法用随机字节填充字节数组(在第一步中创建)。 - 使用
ToBase64String()
方法将字节数组转换为 Base64 编码的字符串。 - 使用
Write-Host
cmdlet 将转换后的字符串发送到 PowerShell 控制台。
使用 RNGCryptoServiceProvider 类:
$randomBytesArray = New-Object byte[] 32
$rngObject = New-Object System.Security.Cryptography.RNGCryptoServiceProvider
$rngObject.GetBytes($randomBytesArray)
$randomString = [System.Convert]::ToBase64String($randomBytesArray)
Write-Host $randomString
输出 :
6nh6ArzjvQSh6dW7DQ2C/3sTCZiKWpq/THDOTKHwg8E=
首先,我们使用 New-Object cmdlet 创建一个 byte 类型数组并将其引用存储在 $randomBytesArray 变量中。该数组将保存我们稍后将在代码中生成的随机字节。 New-Object
cmdlet 属于 Microsoft.PowerShell.Utility
模块,用于创建对象。
我们再次使用 New-Object
cmdlet 创建 RNGCryptoServiceProvider
类的实例,并将其存储在 $rngObject
变量中。为什么创建这个对象?因为 RNGCryptoServiceProvider 类有助于以加密安全的方式生成随机字节。我们使用了 GetBytes()
方法,该方法将 $randomBytesArray
作为参数并用随机字节填充它。
之后,我们使用[System.Convert]
类的ToBase64String()方法,该方法以$randomBytesArray
为参数,将其转换为base64编码的字符串并存储在 $randomString
变量中。最后,我们使用 Write-Host
cmdlet 在 PowerShell 控制台上打印 $randomString
。
将 System.Random 与 For
和 ForEach
循环结合使用
要在 PowerShell 中生成 10
个字符的随机字符串:
- 将
ToCharArray()
方法与字符串值链接起来以创建字符数组。 - 使用
New-Object
cmdlet 创建System.Random
类的实例。 - 使用
for
循环执行相同的作业10
次。 对于每次迭代:
- 使用
Next()
方法创建随机索引。
- 使用
- 从上一步中创建的随机索引中检索字符。
- 使用
+=
连接从指定随机索引检索到的当前字符。
Write-Host
在 PowerShell 控制台上打印随机字符串。使用 for 循环:
$charsArray = "abcdefghijkmnopqrstuvwxyzABCEFGHJKLMNPQRSTUVWXYZ0123456789!"#$%&''()*+,-./:;<=>?@[\]^_`{|}~".ToCharArray()
$randomObject = New-Object System.Random
$randomString = ""
for ($i = 0; $i -lt 10; $i++) {
$randomIndex = $randomObject.Next(0, $charsArray.Length)
$randomCharacter = $charsArray[$randomIndex]
$randomString += $randomCharacter
}
Write-Host $randomString
输出 :
mQ7NgZmX!0
首先,我们使用 ToCharArray()
方法创建一个存储在 $charArray
变量中的字符数组。之后,我们使用 New-Object cmdlet 创建 System.Random 类的实例并将其存储在 $randomObject 变量中;我们实例化了 System.Random 类来创建随机索引。我们稍后会在 for 循环中看到它。
接下来,我们使用空字符串声明并初始化 $randomString
变量。之后,我们使用 for
循环进行 10
次迭代;对于每次迭代,我们使用 Next()
方法创建随机索引并将其存储在 $randomIndex
变量中。请注意,随机索引始终在 0
到 数组长度
的范围内。
我们使用此 $randomIndex
从 $charArray
检索字符并将其保存在 $randomCharacter
变量中。此外,我们使用以 +=
表示的串联运算符将当前 $randomCharacter
与 $randomString
连接起来。最后,我们使用 Write-Host
cmdlet 在 PowerShell 控制台上打印 $randomString
变量的值。
以下是上述解决方案的替代方法。我们使用 ForEach
循环进行迭代,它包含的代码行相对较少。
使用 ForEach 循环:
$randomObject = New-Object System.Random
$randomString=""
1..10 | ForEach { $randomString = $randomString + [char]$randomObject.Next(33,126) }
Write-Host $randomString
输出 :
b?YDha&3>,
使用 System.Web 模块
使用 System.Web 模块中的 GeneratePassword()
方法在 PowerShell 中生成随机字符串。
使用GeneratePassword()方法:
[Reflection.Assembly]::LoadWithPartialName("System.Web")
[System.Web.Security.Membership]::GeneratePassword(20,2)
输出 :
C&h%qk+Cxra7%s9=ZTq@
对于此解决方案,我们必须使用 Reflection.Assembly
类的 LoadWithPartialName() 方法将 System.Web
加载到 PowerShell 中。导入后,我们使用了 Membership
类的 GeneratePassword()
方法,该类位于 System.Web.Security
命名空间中。
GeneratePassword()
方法有两个参数;首先是密码的长度,其次是密码的复杂性。在我们的例子中,我们得到了长度为 20
个字符的密码,复杂度为 2
,表示除数字和字母之外的 2
非字母数字字符。成功执行上述脚本后,我们将获得一个随机密码字符串,您可以在上面看到。
将 Get-Random
Cmdlet 与 -join
运算符结合使用
使用 Get-Random
cmdlet 和 -join
运算符在 PowerShell 中生成由小写字母和数字组成的随机字符串。
将 Get-Random Cmdlet 与 -join 运算符结合使用:
-join ((48..57) + (97..122) | Get-Random -Count 10 | % {[char]$_})
输出 :
m8w6dqfn5t
在了解上述命令的作用之前,我们先将其分解为几个部分并进行学习。 (48..57) + (97..122)
创建一个 Unicode 值数组,表示 a-z
之间的字符 ASCII 代码 (97-122
) 和 0-9
(48-57
)。该数组通过 Get-Random
cmdlet 进行管道传输,该 cmdlet 选择随机 10
值,因为我们使用 -Count 指定了
。10
的计数
现在,所选的 10
个随机字符被传递到下一个进程 % {[char]$_}
,该进程将它们通过管道传输到 ForEach-Object
cmdlet 并将每个 Unicode 值转换为其相应的字符。最后,我们使用 -join
运算符来连接所有字符。因此,上述命令将生成并连接 10
个随机字符,其中每个字符都是小写字母或数字。或者,我们可以使用以下命令来包含大写字母和特殊字符。
使用 Get-Random
cmdlet 和 -join
运算符在 PowerShell 中生成包含小写字母、大写字母、数字和特殊字符的随机字符串。
将 Get-Random Cmdlet 与 -join 运算符结合使用:
-join ((33..126) | Get-Random -Count 10 | % {[char]$_})
输出 :
)H2T\n#,|v
到目前为止,我们生成了一个随机字符串;如果我们要在 PowerShell 中创建 n
个随机字符串怎么办?
使用 for
循环和 get-random
来创建 n
个随机字符串
使用 for
循环和 get-random
在 PowerShell 中生成 n
个随机字符串。
使用 for 循环生成 n 个随机字符串:
for($i=0; $i -lt 5; $i++){
([char[]]([char]'a'..[char]'z' + [char]'A'..[char]'Z') + 0..9 | sort {get-random})[0..9] -join ''
}
输出 :
M5tV34J81u
2ErYS5uly6
jZ3ufpCBeh
qBdsjZi1Cp
CO2Ez3iDWY
此示例与前面的示例类似,但生成 5
随机字母数字字符串。如何?我们使用 for
循环执行 5
次迭代,每个随机字符串迭代一次。在每次迭代中,我们通过连接数字、小写字母和大写字母创建了一个字母数字字符数组,并随机排序。
[0..9]
从随机字符串中选择前 10
个字符,并使用 -join
运算符将它们连接起来。对所有 5
字符串重复此过程。
这就是如何在 PowerShell 中生成随机字符串的全部内容。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag