我需要创建一个PowerShell脚本,用脚本读入两个文本文件。 第一个列表用于标识将附加文件的远程计算机。 第二个列表是需要附加到文件的关键短语。
清单1: 计算机1 计算机2 COMPUTER3
清单2: ABC DEF GHI
脚本会循环遍历每个指向每个远程计算机上的文件C:\ temp \ help.txt,并从列表2中写入1行。
所以示例:当脚本运行时,它转到列表1,发现计算机1是第一个并打开文件\ computer1 \ C $ \ temp \ help.txt,然后它将从列表2中获取第一行写入文件ABC。关闭文件并转到计算机2.计算机2将是\ computer2 \ C $ \ temp \ help.txt并从列表2中获取第二项并写入DEF保存并继续。
很难找到任何帮助阅读并循环浏览2个列表。或者我想错了。我已经得到Get-Content来读取文件和foreach($ x for text1)可以通过1个文本文件循环,但无法弄清楚如何遍历第二个文本文件。
答案 0 :(得分:2)
处理并排数组始终是一种痛苦,并且往往容易出错。理想情况下,如建议的那样,计算机名称和字符串将以CSV或其他形式组合在一起。
但是,这样的事情应该让你走上正轨。您可能需要稍微调整字符串开头/结尾处的换行符。
$machines = Get-Content .\MachineList.txt
$strings = Get-Content .\StringsList.txt
if($machines.Count -ne $strings.Count){ throw 'Counts do not match' }
for($i = 0; $i -lt $strings.Count; $i++)
{
$path = "\\$($machines[$i])\C`$\temp\help.txt" # unc path
$strings[$i] | Add-Content $path
}
如果您使用CSV格式
Config.csv
---------
ComputerName,String
machine1,string1
machine2,string2
machine3,string3
然后你可以简化到这个:
Import-Csv .\Config.csv |%{
$_.String | Add-Content "\\$($_.ComputerName)\C`$\temp\help.txt"
}