输出值从gc到哈希表

时间:2014-03-13 16:24:49

标签: powershell powershell-ise

尝试制作包含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

3 个答案:

答案 0 :(得分:1)

我认为你想要这个,这会将用户和密码列表转换为HashTable,然后将其转换为PSCustomObject,它将具有两个属性:UsersPasswords

$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.txtL8_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]
}