尝试制作包含2个类别的哈希表:用户和密码。 这是我的代码到目前为止,但问题是输出只显示命令而不执行它。
for ($i=1; $i -le 10; $i++){
$caps = [char[]] "ABCDEFGHJKMNPQRSTUVWXY"
$lows = [char[]] "abcdefghjkmnpqrstuvwxy"
$nums = [char[]] "2346789"
$spl = [char[]] "!@#$%^&*?+"
$first = $lows | Get-Random -count 1;
$second = $caps | Get-Random -count 1;
$third = $nums | Get-Random -count 1;
$forth = $lows | Get-Random -count 1;
$fifth = $spl | Get-Random -count 1;
$sixth = $caps | Get-Random -count 1;
$pwd = [string](@($first) + @($second) + @($third) + @($forth) + @($fifth) + @($sixth))
Out-File C:\Users\Administrator\Documents\L8_userpasswords.txt -InputObject $pwd -Append
}
$here = @'
$users=Get-Content C:\\Users\\Administrator\\Desktop\\L8_users.txt
$passwords=Get-Content C:\\Users\\Administrator\\Documents\\L8_userpasswords.txt
'@
convertfrom-stringdata -stringdata $here
这是我得到的输出:
PS C:\Users\Administrator> C:\Users\Administrator\Documents\l8.ps1
Name Value
---- -----
$users Get-Content C:\Users\Administrator\Desktop\Lab8_users.txt
$passwords Get-Content C:\Users\Administrator\Documents\L8_userpasswords.txt
答案 0 :(得分:1)
我认为你想要这个,这会将用户和密码列表转换为HashTable
,然后将其转换为PSCustomObject
,它将具有两个属性:Users
和Passwords
。
$Data = [PSCustomObject]@{
Users = Get-Content -Path C:\Users\Administrator\Desktop\L8_users.txt;
Passwords = Get-Content -Path C:\Users\Administrator\Desktop\L8_userpasswords.txt;
}
$Data;
答案 1 :(得分:0)
或者嘿,您可能只需用一个衬垫替换整个脚本:
GC C:\Users\Administrator\Desktop\L8_users.txt|%{[PSCustomObject]@{User=$_;Password=[System.Web.Security.Membership]::GeneratePassword(10,3)}}
除非您超级密码生成循环。 [System.Web.Security.Membership]::GeneratePassword(X,Y)
将生成复杂的密码,其中X是长度,Y是特殊字符的数量(其余的将是大写字母,小写字母和数字的随机混合)。所以在我的代码(10,3)中是一个10个字符的密码,包含3个非字母数字字符。
您希望将其保存到文件中吗?管道到Export-CSV
。或者通过在其前面添加$UserList = <code>
之类的内容,将其分配给变量。
或者,如果你真的,真的想要一个哈希表,你可以做一个空的,然后稍微改一下,将每一对添加到表中,如下所示:
$UserList = @{}
GC C:\Users\Administrator\Desktop\L8_users.txt|%{$UserList.add($_,[System.Web.Security.Membership]::GeneratePassword(10,3))}
答案 2 :(得分:0)
假设L8_users.txt
和L8_userpasswords.txt
包含相同数量的项目,您可以执行以下操作:
$users = Get-Content 'C:\Users\Administrator\Desktop\L8_users.txt'
$passwords = Get-Content 'C:\Users\Administrator\Documents\L8_userpasswords.txt'
$userpasswords = @{}
for ($i = 0; i -lt $users.Length; $i++) {
$userpasswords[$users[$i]] = $passwords[$i]
}