我无法提供Out-File'我的整个循环只有一行

时间:2014-03-13 15:01:09

标签: powershell powershell-ise

我创建了一个随机密码生成器,我需要将所有10个输出Out-File转换为.txt文件

但我现在只有1行输出。

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))
Write-Host $pwd

Out-File .\Documents\L8_userpasswords.txt -InputObject $pwd

}

当我打开.txt时,我只看到1行输出而不是10。

2 个答案:

答案 0 :(得分:5)

默认情况下Out-File clobbers(覆盖)指定路径(如果存在)。如果在执行脚本之前文件不存在,请使用-Append附加到文件:

Out-File .\Documents\L8_userpasswords.txt -InputObject $pwd -Append

请注意,每次运行脚本时,它都会附加到文件中。如果您希望每次都重新创建文件,请在输入for循环之前检查是否存在并将其删除:

$file = ".\L8_userpasswords.txt"
if (Test-Path -Path $file -PathType Leaf) {
    Remove-Item $file
}
for ($i=1; $i -le 10; $i++){
...

答案 1 :(得分:1)

您需要对-Append cmdlet使用Out-File参数,因为默认情况下它会覆盖指定的文件。

Out-File .\Documents\L8_userpasswords.txt -InputObject $pwd -Append;