在powershell中使用随机数创建密码

时间:2018-04-12 03:26:28

标签: powershell powershell-v4.0

我是PowerShell的新手。我遇到了问题,你可以帮帮我吗?

我有以下内容:

   $firstname = @("Harris", "Robin", "Jack", "Ryan")
   $lastname = @("Brown", "Amber", "Layton", "Hatvani")
从这个2数组

我必须创建一个密码,标准是从第一个和最后一个名字的第一个字母,然后是5个随机数字。例如:hb69248(在这种情况下,h是哈里斯的第一个字母,b是布朗的第一个字母)。必须为每个名称进行此操作。我尝试了以下方法:

      [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.你能告诉我为什么我在它们之间有空间吗?在这种情况下我只使用了名字而不是姓氏

1 个答案:

答案 0 :(得分:3)

当您将数组转换为字符串时(就像您执行$p$n),PowerShell使用输出字段分隔符(由$OFS自动变量表示)作为分隔符。 $OFS默认为空格。

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

$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个新密码的数组