Powershell Foreach-Object Foreach循环从多个文件中读取字符串并写入一个

Pho*_*ria 4 powershell

我无法在一个Foreach或Foreach-Object循环中使用多个命令

我的情况是 -

  1. 我有很多文本文件,大约100个.所以他们被阅读 Get-ChildItem $FilePath -Include *.txt
  2. 每个文件的结构都相同,只有关键信息不同.例

    用户:Somerandomname

    计算机:有些随机计算机

使用-Replace命令我删除"用户:"和"计算机:"这样$User = Somerandomname$computer = "Somerandomcomputer.在每个圈子中,$ user和$ Computer with -Append应写入一个文件.然后应该读取下一个文件.

foreach-object { $file = $_.fullname;
Run Code Online (Sandbox Code Playgroud)

应该使用,但我无法弄清楚它的正确语法.有人可以帮我吗?

Ant*_*ace 5

假设您已经在其他地方定义了$ FilePath,$ user和/或$ computer,请尝试这样的方法.

$files = Get-ChildItem $FilePath\*.txt
foreach ($file in $files)
{
  (Get-Content $file) | 
  Foreach-Object { $content = $_ -replace "User:", "User: $user" ; $content -replace "Computer:", "Computer: $computer" } | 
  Set-Content $file
}
Run Code Online (Sandbox Code Playgroud)

您可以使用它;来界定其中的其他命令Foreach-Object,例如,如果您希望为用户和计算机名称分别指定命令.如果未将带括号的Get-Content cmdlet括起来,则会出现错误,因为当Set-Content尝试使用该进程时,该进程仍会打开$ file.

另请注意,使用Powershell时,双引号中的字符串将评估变量,因此您可以将$ user放入字符串中以执行类似操作("User: $user"如果您需要的话).