Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 1
Регистрация: 25.12.2015
Сообщений: 4

Не получается отправить письмо

25.12.2015, 09:24. Показов 2680. Ответов 4

Студворк — интернет-сервис помощи студентам
Добрый день. Стоит задача выполнить синхронизацию папки на сервере (windows 2008 server 32bit) с внешним ресурсом, по результату отправить письмо. Задачу пытаюсь выполнить при помощи скрипта на PowerShell (2.0) в "Планировщике заданий".
Доступ к папке на внешнем ресурсе имеет только пользователь "domain\backup". Задачу запускаю от имени пользователя "domain\backup" с наивысшими правами вне зависимости от регистрации пользователя.
Доступ к папке на сервере дал, в локальных политиках добавил учётку в "Вход в качестве пакетного задания". При этом задание выполняется без ошибок, синхронизация выполняется, а письмо не отправляется.
При этом письма от локального админа отправляются. Подскажите куда копать, скрипт:
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
  # путь к логу
    [string]$LogFilePath = ""
  # путь до папки в которой будут храниться резервные копии
    [string]$BackupFolder = ""
  # Указать путь до папки со скриптами
    [string]$BackupScriptFolder = ""
    
  # Путь до папки с бэкапами на внешнем ресурсе
    $outsightCopy="\\IRKL-backup-001\backup\backuppvd\TST"
    
  # Настройки для отправки писем
    # Кому отправлять письма
      $emailTo = ""
    # От кого отправлять письма (надо сообщить название ящика)
      $emailFrom = ""
    # Тема письма
      $emailSubject = "TST synchronize done"
    # Адрес почтового SMTP сервера
      $emailSmtpServer = ""
 
# Удаляем файл логирования
  if (Test-Path $LogFilePath) {Remove-Item -force -Recurse}
      
# Вывод времени начала бэкапа
  "--- Begin robocopy -----------------------------" | Out-File $LogFilePath -append -Encoding utf8
  Get-Date -format dd_MM_yyyy___HH:mm:ss | Out-File $LogFilePath -append -Encoding utf8       
 
# Копирование бэкапа на внешний сервер с докачкой
    # Если папки совпадают то копировать всегда на внешний сервер
      C:\Windows\System32\robocopy.exe $BackupFolder $outsightCopy /LEV:1 /Z /MIR /MAXAGE:7 /LOG:$LogFilePath
  
# Вывод времени окончания бэкапа  
  "--- End robocopy -------------------------------" | Out-File $LogFilePath -append -Encoding utf8
  Get-Date -format dd_MM_yyyy___HH:mm:ss | Out-File $LogFilePath -append -Encoding utf8
 
#Вывод списка файлов в папке с бэкапами
  outsightCopy -force | Out-File $LogFilePath -append -Encoding utf8
  
# Письмо об окончании резервного копирования
  Send-MailMessage -To $emailTo -From $emailFrom -Subject $emailSubject -body (Get-Content $LogFilePath | Out-String) -SmtpServer $emailSmtpServer -Encoding ([System.Text.Encoding]::utf8) | Out-File $LogFilePath -append -Encoding utf8
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.12.2015, 09:24
Ответы с готовыми решениями:

Не получается отправить письмо
idSmtp1.Host := 'SMTP.yandex.ru'; idSmtp1.Port := 25; idSmtp1.Username := 'po4ta0019'; idSmtp1.Password := 'QdEgTjUl1';...

Не получается отправить письмо
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using...

Не получается отправить письмо
Здравствуйте, форумчане. Столкнулся с проблемой: не получается отправить письмо на емайл. На хостинге отправка открыта. При...

4
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
25.12.2015, 14:29
bazilnick, У вас насколько я понял ведется логгирование.
После запуска задания, лог-файл на каком моменте прекращает запись, или он вообще не создается?
0
0 / 0 / 1
Регистрация: 25.12.2015
Сообщений: 4
28.12.2015, 06:09  [ТС]
Лог пустой по поводу отправки письма, из ESI если запускать то так же отрабатывает без ошибок.

Понял что проблема в аутентификации. К сожалению на пшеле нельзя отправлять письма без аутентификации в моём случае. Есть вариант добавить:
PowerShell
-Credential ([System.Management.Automation.PSCredential]::Empty)
Нашёл другие варианты:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
1) Encode the credentials on the system where the script will be run:
 
This is widely used to access alternate credentials, of course in this case you wouldn't be using Anonymous, instead you would use some other account that has permisison to send, domain admin or whatnot.   Follow this procedure:
 
One time operation to create the encrypted password file:  
      Read-host -Prompt "enter password" -AsSecureString |
      ConvertFrom-SecureString | Out-File C:\AdminPassword.txt
 
In your script pull in the encrypted string from the file, convert it to a secure string, and cite it as an argument to the your new credential object.  
      $pass = Get-Content C:\AdminPassword.txt | ConvertTo-SecureString
      $creds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList <UserName>, $pass
 
Execute the Send-MailMessage command using the -Credential parameter with $creds as it's argument.
Don't forget to fill in your own information for the above commands.   Also make sure you encode the file on the system and logged in under the account that will run the ultimate script.
 
2) You can create an account with very limited access and permission your ReceiveConnectors to allow it to send.  You can combine this approach with option 1 so you can use those credentials in scripts without the same security risks.
 
3) If you really want to send using the Anonymous account you'll run into a problem.  I appreciate the suggestion to use an empty credential object, but the cmdlet isn't expecting that.  Using Anonymous requires a credential object an Anonymous user but with an "empty" password.  You cannot pass a null or empty string as the password argument in the New-Object command I previously showed.  In fact that argument expects a SecureString object, what's worse is you cannot pass an empty or null string to ConverTo-SecureString so you can't prep your argument beforehand.  The question becomes, how can you get an empty string into a SecureString Object?  Well Read-Host -AsSecureString can do it, if you just hit enter at the prompt. But that's interactive and won't serve us if we want this script to run by itself .  Moreover, I assume if we attempted to take the output of Read-Host and put it in a file as we did in option 1 above we would again have issues with ConvertToSecure-String not liking the empty string.  The solution to this dilemma is kind of crafty:
 
   Use a any old string instead of a empty string:     
      $pass = ConvertTo-SecureString "whatever" -asplaintext -force
      $creds = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList "NT AUTHORITY\ANONYMOUS LOGON", $pass
 
   Execute the Send-MailMessage command using the -Credential parameter with $creds as it's argument.  
Hard to believe but this actually works.  The obvious benefit of this approach is you don't need to store or create anything, and you can use Anonymous instead of a real account with potentially greater and/or more dangerous access.  Even though options 1 & 2 are pretty secure many administrators or even security officers may have a problem with stored credentials.  There's certainly potential for abuse, but option number 3 seems to work completely with no exposure other than what's been explicitly granted Anonymous.
P.S. Пока попросил права для отправки писем от имени учётки для бэкапов, если не дадут, то опробую варианты выше, отпишусь.
0
0 / 0 / 1
Регистрация: 25.12.2015
Сообщений: 4
13.01.2016, 12:27  [ТС]
Сделал по первому варианту и получаю следующую ошибку при монтировании диска при помощи "New-PSDrive":
Поставщиком не поддерживается использование учетных данных. Выполните операцию повторно без указания учетных данных.

Пробовал в локальных политиках выставлять "уровень проверки подлинности Lan Manager" - "Отправлять LM и NTLM - использовать сеансовую безопасность NTLMv2 при согласовании". Без шифрованного пароля "Net Use" и "New-PSDrive" работают. Подскажите в чём может быть беда.
0
0 / 0 / 1
Регистрация: 25.12.2015
Сообщений: 4
15.01.2016, 08:52  [ТС]
Лучший ответ Сообщение было отмечено ComSpec как решение

Решение

Решено: недочёт PowerShell 2, поставил PowerShell 3 и всё заработало.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.01.2016, 08:52
Помогаю со студенческими работами здесь

Не получается отправить письмо mail()
Привет всем. Недавно я решил немного подучить PHP, в общем стало интересно как отправить письмо с сайта на почтовый ящик, прочитал про...

Не получается отправить письмо с русскими буквами
Добрый день, есть php файл с функцией отправки письма. Кодировка UTF-8. Не получается отправить русский текст в сообщении. Вместо...

Не получается отправить письмо. Не пойму в чем ошибка
Вот мой код. Не пойму в чем дело, можете помочь разобраться? string mailAssignedTo = DropDownCCEmail.SelectedItem.Text; ...

При попытке отправить письмо с почты mail.ru приходит ответное письмо с содержанием, что письмо не отправлено
При попытке отправить письмо с почты mail.ru приходит ответное письмо с содержанием, что письмо не отправлено. В чем может быть причина? ...

Отправить письмо
Здравствуйте , нужно отправить письмо используя php , как это можно сделать? Я находил примеры, но в них указывается только почта, на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru