Журнал событий Zip с использованием PowerShell - PullRequest
1 голос
/ 21 мая 2019

Я новичок в powershell, и мне нужна помощь в написании этого скрипта для моей работы.

У меня хранятся месяцы журналов событий на диске, и я хочу сжать все эти журналы событий, используя PowerShell для этого, но я абсолютно не знаю, как начать, так как имена файлов имеют временную метку.

Для начала я хотел бы иметь 1 скрипт для архивирования всех журналов в соответствии с месяцем их экспорта. Затем еще один сценарий для будущих журналов, датированных месяцем ранее, для сжатия. Я планирую запустить этот второй сценарий ежемесячно.

Искренне благодарю за помощь!

Я подумал, как будет работать сценарий.

очистить скрипт журнала событий

Define Drive = F drive

function findeventlog
Get current month = eg. May
Find all files earlier than [get current month] 
Get current year
define exclusion list of zip files = "*.zip"
filter "[get current year]-[get current month]-*"

define event log folder = Drive\eventlogbackup\eventlogs 
define zip destination folder = F:\eventlogbackup\eventlog -filter -recurse

define zips to create = find items in event log folder and exclude (list)
define zips to create.count
zip (define zips to create)

последовательность операций для сценария журнала событий сжатия

Define Drive = F drive

function findeventlog
Get current month = eg. May
Find all files 1 month earlier than [get current month] 
Get current year
define exclusion list of zip files = "*.zip"

define event log folder = Drive\eventlogbackup\eventlogs -filter -recurse
define zip destination folder = F:\eventlogbackup\eventlog

define zips to create = find items in event log folder and exclude (list)
define zips to create.count
zip (define zips to create)

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

Спасибо.Это действительно помогает.Я придумал что-то, но определенно нуждается в дальнейшей подстройке.Вот что у меня есть.Я использую ответ, потому что это слишком долго для комментария.

$drive = "F:"
$exclude = @("whatever.evtx")
$eventlogfolder = "$drive\destinationpath"
$filesApr = Get-ChildItem -path $eventlogfolder -exclude $exclude | where-object {$_.lastwritetime -le (Get-date).AddMonths(-1)}

compress-archive $filesApr -Destinationpath $eventlogfolder\ArchiveApr2019.zip -force -confirm:false

Мои вопросы: 1. Если мои журналы событий датируются периодом с января по апрель, как мне превратить мой сценарий в функцию, чтобы мне не нужно было указывать месяцы?2. Если я не укажу месяцы, могу ли я выполнить архивирование таким образом, чтобы оно фильтровалось по месяцам?как 05-04-2019.evtx должен быть заархивирован в ArchiveApr2019.zip

Любые другие предложения по тонкой настройке моего скрипта приветствуются!Я буду учиться и совершенствоваться по пути.

0 голосов
/ 21 мая 2019

Престижность для подхода псевдокода. Поскольку сценарию потребуется больше работы, чем обычно, позвольте мне попробовать CW-ответ. Попробуйте продолжить работу со сценарием и не стесняйтесь задавать вопросы по конкретным вопросам.

function findeventlog {
    # Get current month = eg. May
    # Find all files earlier than [get current month]

    # List all files that have last write time in the past.
    # Get-Date returns a DateTime that contains methods for addition
    $files = Get-Childitem -path c:\path\to\logs | ` # ` is used here for wrapping
      Where-Object { $_.LastWriteTime -le (get-date).AddMonths(-1) } 

    # define exclusion list of zip files = "*.zip"
    # Files collection can be filtered. ? is shorthand for where-object
    # For a list of all properties, refer to docs.microsoft.com or use Get-Member
    $files = $files | ? { $_.someProperty -ne something }

    # define event log folder = Drive\eventlogbackup\eventlogs 
    # define zip destination folder = F:\eventlogbackup\eventlog -filter -recurse

    # define zips to create = find items in event log folder and exclude (list)
    # define zips to create.count
    # zip (define zips to create)
    Compress-Archive -LiteralPath $files -Destination c:\my\archive\location
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...