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