Показаны сообщения с ярлыком Powershell. Показать все сообщения
Показаны сообщения с ярлыком Powershell. Показать все сообщения

пятница, 4 октября 2013 г.

Environment variable is not visible (процесс не видит установленную environment variable)

Пытался прочитать недавно установленную environment variable из PowerShell в SQL Agent Job, но он упорно не видел ее. Наткнулся на следующую очевидную вещь, которую, видимо, знали все кроме меня:
 
 
т.е.  эти переменные кэшируются процессом во время старта и дальше он не видит их изменений (кроме случая, когда изменил их сам). Официального workaround не существует (кроме как перезапустить процесс), но вот вам неофициальный от меня: можно прочитать эти значения в реестре (например, при помощи следующей строчки в Powershell script).


$MSU=(New-Object -ComObject WScript.Shell).RegRead("HKLM\SYSTEM\ControlSet001\Control\....")
 

вторник, 21 февраля 2012 г.

SQL Agent - Send a notification email with the error message. Как послать из SQL Agent письмо с текстом ошибки

Написал Powershell-скриптик для этого:

$JobName="название задачи из SQL Agent"
$SQL="SELECT top 1 message FROM [msdb].[dbo].[sysjobs] j join [msdb].[dbo].[sysjobhistory] h on j.job_id = h.job_id where run_status=0 and name='"+$JobName+"' order by run_time desc"
$Body=Invoke-Sqlcmd -Query $SQL
$emailFrom = "адрес отправителя"
$emailTo = "адрес получателя"
$subject = $JobName+" has failed"
$smtpServer = "адрес смтп-сервера"
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $emailTo, $subject, $body[0])