我创建了一个随机密码生成器,我需要将所有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。
答案 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;