Skrin Powershell untuk memeriksa fail berdasarkan tarikh dalam folder - Bagaimana Untuk

Skrin Powershell untuk memeriksa fail berdasarkan tarikh dalam folder

Skrip ini, persediaan sebagai tugas yang dijadualkan (apabila selesai) memantau fail dalam folder berdasarkan tarikh masa tulis fail dibuat / diletakkan di sana.

2 langkah total

Langkah 1: Skrip

$ smtpServer = "exchange.domain.org"
$ smtpFrom = "[email protected]"
$ smtpTo = "[email protected], [email protected]";
$ messageSubject = "Fail Dorman di Folder ..."

$ Message = New-Object System.Net.Mail.mailmessage $ smtpFrom, $ smtpTo
$ Message.Subject = $ messageSubject

$ content = get-childitem ' server e $ inetpub wwwroot folder *. *' | where-object {$ _. LastWriteTime -lt (get-date) .AddDays (-2)}
# Di mana ia berkata *. * Anda boleh meletakkan nama fail yang saya percaya, saya menggunakan ini untuk memantau folder untuk melihat sama ada terdapat sebarang fail lebih lama dari 2 hari dalam folder ini
# Kemudian di bawahnya ia memeriksa untuk melihat apakah ada sesuatu yang dikembalikan. Jika ia kembali null / kosong, maka ia menghantar saya e-mel yang mengatakan tiada fail.
# Jika ia mencari fail, ia menunjukkan saya senarai fail dan masa menulis terakhir mereka dalam e-mel. Cukup berguna.

jika kandungan (! $)
{
$ Message.body = "Tidak ada fail untuk hari ini" #Iklan bahagian ini untuk melihat apakah terdapat sebarang fail yang lebih tua daripada 2 hari. Sekiranya tidak ada, maka ia akan menghantar e-mel yang mengatakan "Tiada fail untuk hari ini"
$ smtp = new-Object Net.Mail.SmtpClient ($ smtpServer)
$ smtp.Send ($ message)
}
lain # jika terdapat fail yang lebih lama dari 2 hari, e-mel akan dihantar dengan jadual yang diformat dengan baik yang menyatakan laluan / nama fail dan masa tulis.
{
$ Message.IsBodyHtml = $ true

$ style = "BODY {font-family: Arial; font-size: 10pt;}"
$ style = $ style + "TABLE {border: 1px solid black; border-collapse: collapse;}"
$ style = $ style + "TH {border: 1px solid black; background: #dddddd; padding: 5px;}"
$ style = $ style + "TD {border: 1px solid black; padding: 5px;}"
$ style = $ style + ""
$ Message.body = get-childitem ' shelimm1 e $ inetpub wwwroot TeAASPFiles FI4 Archive *. *' | pilih-object -Property "Name", "LastWriteTime" | where-object {$ _. LastWriteTime -lt (get-date) .AddDays (-1)} | ConvertTo-HTML -Head $ style
# Anda perlu mengedit jalur fail anda di sini juga, kandungan $ di atas adalah untuk memeriksa untuk melihat apakah terdapat sebarang fail dalam folder, inilah yang sebenarnya mendapat dan menetapkan data untuk badan e-mel.
$ smtp = new-Object Net.Mail.SmtpClient ($ smtpServer)
$ smtp.Send ($ message)
}

Langkah 2: Buat Tugasan Berjadual

Bahagian ini sama pentingnya untuk membolehkannya diuruskan secara automatik.

Anda perlu membuka penjadual tugas pada mana-mana komputer / pelayan yang anda mahu ini berjalan dari (yang selalu berjalan supaya ia berjalan)

Membuat tugas berjadual. Saya mempunyai pemicu saya untuk pergi setiap hari pada 12:30.

Kemudian untuk tindakan itu, saya telah menetapkan untuk memulakan satu program, yang adalah powerhell.

Ketik powerhell pada baris di bawah Program / Skrip

Dari sana, pada baris tambah argumen, ketik:
-pengecutanpolicy bypass -file check4files.ps1

Ini memastikan skrip tidak akan disekat oleh dasar perlindungan dan menjalankannya mengikut jadual.

Anda boleh mengubah suai ini seperti yang anda mahukan. Saya pastinya tidak menulis semuanya, saya mendapat pelbagai membantu dalam talian dan mengubahnya untuk memenuhi keperluan saya. Anda boleh menukar jumlah masa yang telah ada di sana untuk lebih atau kurang daripada 2 hari. Anda boleh menambah lebih banyak orang untuk mendapatkan e-mel, anda boleh membuatnya berlari berbilang kali sehari, dan sebagainya ... tetapi ini harus berfungsi sebagai asas yang baik jika anda mencari sesuatu seperti ini.