Я знаю очень мало о скриптах, но я думаю, что я хочу, возможно. Я просто хотел бы получить уведомление по электронной почте, когда файл будет добавлен в определенную папку. У меня нет специального программного обеспечения, поэтому я предполагаю, что это должен быть командный файл или, возможно, VBS?Уведомление по электронной почте, когда файл добавлен в папку
ответ
Вы можете сделать это, в пакетном-файле с поддержкой PowerShell:
@echo off
setlocal EnableDelayedExpansion
set "[email protected]"
set "emailPassword=dummyPassword"
set "[email protected]"
set "subject=File Changed"
FOR %%G IN (*) DO attrib -A "%%G"
:loop
set "body="
FOR %%G IN (*) DO (
attrib "%%G" | findstr /B /L A 1>nul
if !errorlevel! equ 0 (
echo "%%G"
set "body=!body!^<br ^/^>%%G"
attrib -A "%%G"
)
) 2>nul
if not "%body%"=="" echo sending email
if not "%body%"=="" set "body=The following files have been changed:!body!"
if not "%body%"=="" powershell.exe -command "Send-MailMessage -From '!emailUserName!' -to '!target!' -Subject '!subject!' -Body '!body!' -BodyAsHtml -SmtpServer 'smtp.gmail.com' -port '587' -UseSsl -Credential (New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList ('!emailUserName!', (ConvertTo-SecureString -String '!emailPassword!' -AsPlainText -Force)))"
goto :loop
Для этого на работу, вам нужно создать фиктивную GMAIL Acount, который будет отправлять электронную почту. Это поддерживает теги HTML в теле, как показано в примере.
Обратите внимание, что это не работает при удалении файлов, только изменения и новые файлы.
Это только отправит электронное письмо, правильно? – dingram10
@ dingram10 да, неправильно прочитал вопрос, но я обновлю его –
@ dingram10 обновлен, поэтому теперь он отправляет уведомления по электронной почте об изменениях в папке, в которой находится пакетный файл. –
У вас есть информация о вашем почтовом сервере? Какая версия Windows и Powershell у вас есть?
Этого короткий сценарий Powershell работает в моей среде:
$folder = "D:\"
$mailserver = "your.mailserver.your.company"
$recipient = "[email protected]"
$fsw = New-Object System.IO.FileSystemWatcher $folder -Property @{
IncludeSubdirectories = $true
NotifyFilter = [IO.NotifyFilters]'FileName'
}
$created = Register-ObjectEvent $fsw -EventName Created -Action {
$item = Get-Item $eventArgs.FullPath
$s = New-Object System.Security.SecureString
$anon = New-Object System.Management.Automation.PSCredential ("NT AUTHORITY\ANONYMOUS LOGON", $s)
Send-MailMessage -To $recipient `
-From "[email protected]" `
-Subject “File Creation Event” `
-Body "A file was created: $($eventArgs.FullPath)" `
-SmtpServer $mailserver `
-Credential $anon
}
Остановить оповещения с этим:
Unregister-Event -SourceIdentifier Created -Force
Я скопировал этот сценарий в файл блокнота, изменил соответствующую информацию и сохранил его как .ps1 на моем DC (2008R2). Затем я щелкнул правой кнопкой мыши и запустил PowerShell. После добавления файла я не получил уведомления. Я пропустил что-нибудь? Кроме того, влияет ли тот факт, что новая подача сканируется в эту папку (pdf)? – dingram10
Не уверен в версии PowerShell, но я хотел бы запустить ее на сервере 2008 R2. В качестве альтернативы я могу запустить его с рабочей станции с Windows 7. У нас есть сервер обмена. У меня есть имя и IP. – dingram10
Какого paert вы испытываете трудности с - определение скорости изменения или электронное поколение? – Magoo
Мы используем часть программного обеспечения под названием WatchDirectory для контроля папок и выполнения действий над этими файлами. – Squashman
У меня есть файл .vbs, который отправляет электронное письмо, но каждый скрипт, который я нашел, который должен проверять на наличие новых файлов, не работал. – dingram10