1

次の内容のテキスト ファイルがあります。

Static Text MachineA MachineB MachineC
Just Another Line

最初の行には、間にスペースを入れた 2 つの静的な単語 (静的テキスト) があります。これらの 2 つの単語の後に、同じくスペースで区切られた 0 個以上のコンピューター名があります。

コンピューターが 0 台だけでなく、1 台以上のコンピューターがある場合に、最初の行にテキストを追加する方法を見つける必要があります (2 行目は変更されません)。すべてのコンピューター名を新しいコンピューター名に置き換える必要があります。したがって、スクリプトはファイルを編集して次のようにする必要があります。

Static Text MachineX MachineY
Just Another Line

-replace 関数を Regex で調べましたが、なぜ機能しないのかわかりません。これは私が持っているスクリプトです:

$OptionsFile = "C:\scripts\OptionsFile.txt"
$NewComputers = "MachineX MachineY"

$content = Get-Content $OptionsFile
$content |
  ForEach-Object {  
    if ($_.ReadCount -eq 1) { 
      $_ -replace '\w+', $NewComputers
    } else { 
      $_ 
    }
  } | 
  Set-Content $OptionsFile

誰かがこれで私を助けてくれることを願っています。

4

2 に答える 2

1

行が「静的テキスト」で始まり、その後に一連の単語文字が続くかどうかを確認し、一致する場合は文字列を返します。

Get-Content $OptionsFile | foreach {    
  if($_ -match '^Static Text\s+(\w+\s)+')
  {
      'Static Text MachineX MachineY'
  }
  else
  {
      $_
  }
}
于 2013-07-24T11:13:51.140 に答える