Удаление миллионов файлов журналов с помощью Powershell - PullRequest
0 голосов
/ 11 ноября 2019

На старом сервере у нас есть миллионы файлов журналов. Эти файлы журналов являются частью интегрированной среды интеграции, которую мы используем, которая никогда не очищалась. Существует около 1,8 миллиона файлов журналов XML, распределенных по 3000 каталогам.

Папки имеют следующую структуру:

D:\Program Files\<Our company name>\<Integration framework version [5 folders]>\Environment\<Customer Name [20 folders]>\<Integration name [Between 1-15 folders]>\<Release version [1-10 folders]>\XmlLogs\<Date [Hundreds of folders]>\logname.xml

Примеры:

D:\Program Files\Company\Company Integration 4.5.5\Environment\Company A\GenericEmailer\Release1.0.0.I1\XmlLogs\01-01-2014\logname.xml

D:\Program Files\Company\Company Integration 4.5.6\Environment\Company B\GlobalEmailer\Release1.2.3.I2\XmlLogs\01-01-2019\logname.xml

Мой план заключался в поиске всех каталогов XmlLogs и очистке этих каталогов, но всякий раз, когда я выполняю Get-ChildItem, весь сервер останавливается и никогда не выводит результаты.

Get-ChildItem -Directory "D:\Program Files\Company\Company Integration 4.5.6\Environment\Company A\" -Recurse -Name -Include "XmlLogs"

Как правильно сделать это, а также удалить все файлы журнала?

1 Ответ

1 голос
/ 11 ноября 2019

Может быть, вы можете попробовать это (измените то, что вы хотите, или используйте оператор -match + выражение регулярного выражения)

Get-ChildItem "C:\Program Files" -directory -recurse | % {

  if ($_.fullname -like '*\XmlLogs\*')
  {
    Get-ChildItem $_.FullName -Recurse -file -filter "*.xml" | Remove-Item -Force -WhatIf
  }

}

Примечание 1: Чтобы действительно удалить, вы должны удалить опцию "-whatif" в моемпример

Примечание 2: для повышения производительности вы можете использовать «D: \ Program Files \ Company», если название компании не меняется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...