1.
cd y:\ так как в команде не было полного пути до файла. указываю диск (исправил)
cd y:\tablereports - не могу объяснить
- удалил
2. Атрибуты - не в привычном смысле слова. То есть это не атрибуты файловый системы (архивный, скрытый, acl, что там ещё...) - эти атрибуты закодированы в имени файла.
$findAtr = $findFile -match "rar.sig.enc$" -cmatch "S" - мне нужны файлы, которые оканчиваются на rar.sig.enc и в имени содержат большую букву S.
3. Исправил работает.
Вот такой отчет получился.
Код:
Write-Host "Файл НЕ прислали"
$name | Out-File не_прислали.txt -Append
$report = get-content не_прислали.txt
$encoding = [System.Text.Encoding]::UTF8
$body = $report | Where-Object {$_ -ne "" -and $_ -match "[0-9]"}
Send-MailMessage -encoding $encoding -From ftp@company.ru -To my@company.ru -Subject "Отчет об S-файлах. Не отправили:" -Body $body -SmtpServer mail.company.ru
В результате имеем:
HTML код:
22 Number1Номер 1
22-1 Number1Номер 1
44-1 Number2Номер3 222-333
52 NUMBER5 555
53-1 Number2 22223333444
Не очень хорошо читаемо. Что можете посоветовать? Кроме того, я создаю отчет через создание промежуточного файла. Как можно этого избежать?
На всякий случай весь код:
Код:
cls
$base = Import-Csv y:\data.txt -Delimiter ":" -Header "N","Отдел","Контактный номер"
$files = Get-ChildItem y:\TableReports | Where {!$_.PsIsContainer -and $_.Name -match ".enc$"} | Select-Object -Expand FullName
$DayFolder = New-item -Path y:\TableReports\week -name "$(Get-Date -uformat '%Y%m%d')" -type directory
$DayFolder2 = New-item -Path y:\TableReports\markdelete -name "$(Get-Date -uformat '%Y%m%d')" -type directory
foreach($name in $base)
{
$findFile = $files -match $name.N
if($findFile)
{
Write-Host "Файл прислали"
$name.N
$findAtr = $findFile -match "rar.sig.enc$" -cmatch "S"
if($findAtr)
{
Write-Host "Атрибуты верны"
$name.N
Copy-Item -Path $findFile -Destination $DayFolder.FullName
}
else
{
Write-Host "Атрибуты НЕ верны"
$name.N
Copy-Item -Path $findFile -Destination $DayFolder2.FullName
}
}
else
{
Write-Host "Файл НЕ прислали"
$name | Out-File не_прислали.txt -Append
$report = get-content не_прислали.txt
$encoding = [System.Text.Encoding]::UTF8
$body = $report | Where-Object {$_ -ne "" -and $_ -match "[0-9]"}
Send-MailMessage -encoding $encoding -From vftp@company.ru -To my@company.ru -Subject "Отчет об S-файлах. Не отправили:" -Body $body -SmtpServer mail.company.ru
}
}