在powershell中创建一个带有随机数的密码

Creating a password with random number in powershell

我是 Powershell 的新手。我遇到了一个问题,你能帮帮我吗?

我有以下内容:

   $firstname = @("Harris", "Robin", "Jack", "Ryan")
   $lastname = @("Brown", "Amber", "Layton", "Hatvani")

我必须从这 2 个数组中创建一个密码,标准是取名字和姓氏的第一个字母,然后是 5 个随机数。示例:hb69248(在本例中 h 是 Harris 的第一个字母,b 是 Brown 的第一个字母)。必须为每个名称执行此操作。我尝试了以下方法:

      [string]$p = for ($i=0; $i -lt $firstname.count; $i++)
                   { $firstname[$i].substring(0,1)}

      [string]$n = for ($r=0; $r -lt 4; $r++)
                { get-random -minimum 0 -maximum 9)

      $password = "$p", "$n" -join ""

输出应该类似于 HRJR2876(数字是随机创建的)。但是我得到 H R J R2 8 7 6。你们能告诉我为什么我在它们之间有 space 吗?在这种情况下,我只是使用名字而不是姓氏

当您将数组转换为字符串时(就像您所做的 $p$n),PowerShell 使用输出字段分隔符 - 由 $OFS 自动变量表示 - 作为定界符。 $OFS 默认为 space.

您可以在一个循环中生成密码,如下所示:

$passwords = for($i = 0; $i -lt $firstname.Length; $i++){
  $first = $firstname[$i].Substring(0,1)
  $last = $lastname[$i].Substring(0,1)
  $number = Get-Random -Min 10000 -Max 100000
  $first,$last,$number -join ''
}

$passwords 现在是所有 4 个新密码的数组