У меня есть сценарий powershell, который я планирую проверять с помощью LastWriteTime файлов «транзакций», датированных предыдущими десятью днями, и сортирует их, потому что данные за год постоянно растут.За выходные нет никаких изменений, и если в течение недели их нет, я знаю, что процесс на сервере не запускался.
В результирующей таблице есть столбцы «Имя», «Размер (КБ)» (преобразовано «Длина» из байтов в КБ) и LastWriteTime.Я хотел бы добавить столбец "MD5".У меня есть команда md5sum.exe на моем компьютере.Я хотел бы построить хеш-таблицу так, чтобы она вызывала внешнюю команду в поле expression
, используя свойство $_.FullName
.
Я нашел способ вычисления контрольной суммы MD5 с использованием PS из этого поста и интегрировал ее как однострочник в значение expression
для нового столбца.Я все еще хотел бы знать, возможно ли хотя бы вызвать внешнюю команду внутри хеш-таблицы.
Вот оригинальный код:
$LOOKBACKXDAYS=( Get-Date ).AddDays(-10)
$SrcMachine='TheServerInQuestion'
if( -not ( Test-Path -Path \\$SrcMachine\C$ ) ) { net use \\$SrcMachine\C$ /user:mydomain\administrator }
Get-ChildItem -Path \\$SrcMachine\C$\temp transactions*.tab | `
Where-Object {$_.LastWriteTime -ge $LOOKBACKXDAYS } | `
Select-Object `
-Property `
Name , `
@{name='Size (KB)'; expression={[string]([math]::ceiling($_.Length / [math]::pow(2, 10)))}} , `
LastWriteTime | `
Sort-Object `
-Property `
'Size (KB)', `
LastWriteTime, `
Name | `
Out-Host
Write-Host -ForegroundColor Green "`n`nAll Done!`n`n"
pause
, и он производит вывод, который выглядит следующим образом:
Name Size (KB) LastWriteTime
---- --------- -------------
transactions for 12172018.tab 13783 2018-12-17 12:05:04
transactions for 12182018.tab 13824 2018-12-18 12:05:06
transactions for 12192018.tab 13869 2018-12-19 12:05:16
transactions for 12202018.tab 13901 2018-12-20 12:05:14
transactions for 12212018.tab 13901 2018-12-21 12:05:12
transactions for 12222018.tab 13931 2018-12-22 12:05:16
transactions for 12232018.tab 13931 2018-12-23 12:05:12
transactions for 12242018.tab 13954 2018-12-24 12:05:14
transactions for 12252018.tab 13954 2018-12-25 12:05:16
transactions for 12262018.tab 14001 2018-12-26 12:05:26
Это модифицированный код, который производит нижний регистр, дефис удаляет контрольные суммы MD5, и я добавил столбец, который показывает «Y», если день недели - выходные, поэтому я могу игнорировать идентичныйфайл.Я также изменил некоторые другие вещи.
$LOOKBACKXDAYS=( Get-Date ).AddDays(-10)
$SrcMachine='TheServerInQuestion'
if( -not ( Test-Path -Path TabFiles:\temp ) ) {
New-PSDrive `
-PSProvider FileSystem `
-Name TabFiles `
-Root \\TheServerInQuestion\C$ `
-Credential mydomain\administrator
}
Get-ChildItem -Path TabFiles:\temp transactions*.tab | `
Where-Object {$_.LastWriteTime -ge $LOOKBACKXDAYS } | `
Select-Object `
-Property `
Name , `
@{name='Size (KB)'; expression={[string]([math]::ceiling($_.Length / [math]::pow(2, 10)))}} , `
@{name='MD5'; expression={ [System.BitConverter]::ToString($(New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider).ComputeHash([System.IO.File]::ReadAllBytes($_.FullName))).replace('-','').ToLower() }}, `
@{name='Is Weekend'; expression={ $( if ($_.LastWriteTime.dayofweek -match 'Saturday|Sunday'){return 'Y'} else{return ''} ) } }, `
LastWriteTime | `
Sort-Object `
-Property `
'Size (KB)', `
LastWriteTime, `
Name | `
Format-Table
Write-Host -ForegroundColor Green "`n`nAll Done!`n`n"
pause
Это вывод для сценария выше:
Name Size (KB) MD5 Is Weekend LastWriteTime
---- --------- --- ---------- -------------
transactions for 12172018.tab 13783 e825b1a58954203da9f8a16c454d9441 2018-12-17 12:05:04
transactions for 12182018.tab 13824 4de56734ceacd02db11bdd8a3dcdc628 2018-12-18 12:05:06
transactions for 12192018.tab 13869 1e4401afd2734004da372bfcf1e90395 2018-12-19 12:05:16
transactions for 12202018.tab 13901 49b1c5e29ea4da7e8a7a72bf610cecd6 2018-12-20 12:05:14
transactions for 12212018.tab 13901 49b1c5e29ea4da7e8a7a72bf610cecd6 2018-12-21 12:05:12
transactions for 12222018.tab 13931 36e40a546c6049e550b0feac9aa7adc7 Y 2018-12-22 12:05:16
transactions for 12232018.tab 13931 36e40a546c6049e550b0feac9aa7adc7 Y 2018-12-23 12:05:12
transactions for 12242018.tab 13954 9c97ccf81ce4cbb583fff348a739cc66 2018-12-24 12:05:14
transactions for 12252018.tab 13954 9c97ccf81ce4cbb583fff348a739cc66 2018-12-25 12:05:16
transactions for 12262018.tab 14001 ad18d544c8dea1d3d9cf1512c4a772e4 2018-12-26 12:05:26
Там есть игнорируемые дубликаты данных в выходные и из сочельника в Рождество, но естьбыли непростительными дубликаты данных с 20-го и 21-го.