0

我需要创建一个 powershell 脚本来读取两个带有列表的文本文件。第一个列表用于标识将附加文件的远程计算机。第二个列表是需要附加到文件的关键短语。

清单 1:计算机 1 计算机 2 计算机 3

清单 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 个文本文件循环,但无法弄清楚如何循环通过第二个文本文件。

4

1 回答 1

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"
}
于 2012-08-22T15:51:30.750 回答