Ошибка -:
New-Object: получение фабрики класса COM для компонента с CLSID
{0006F03A-0000-0000-C000-000000000046} не удалось из-за следующих
ошибка: 80010001 Вызов отклонен вызываемым абонентом. (Исключение из HRESULT:
0x80010001 (RPC_E_CALL_REJECTED)). В D: \ get-process.ps1: 5 char: 12 +
$ Outlook = New-Object -ComObject Outlook.Application +
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:
ResourceUnavailable: (:) [New-Object], COMExcept ion +
FullyQualifiedErrorId:
NoCOMClassIdentified, Microsoft.PowerShell.Comman ds.NewObjectCommand
Вы не можете вызвать метод для выражения с нулевым значением. В
D: \ get-process.ps1: 6 char: 1 + $ Mail = $ Outlook.CreateItem (0) +
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (:)
[], RuntimeException + FullyQualifiedErrorId: InvokeMethodOnNull
свойство ‘To’ не может быть найдено на этом объекте. Убедитесь, что свойство
существует и может быть установлен. В D: \ get-process.ps1: 8 char: 1 + $ Mail.To =
«$ username» + ~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:
InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId:
PropertyNotFound Свойство ‘Subject’ не может быть найдено на этом
объект. Убедитесь, что свойство существует и может быть установлено. В
D: \ get-process.ps1: 9 char: 1 + $ Mail.Subject = «Новый запрос на отпуск» +
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidOperation:
(:) [], RuntimeException + FullyQualifiedErrorId: PropertyNotFound
Свойство «Тело» не может быть найдено на этом объекте. Убедитесь, что
свойство существует и может быть установлено. В D: \ get-process.ps1: 10 char: 1 +
$ Mail.Body = «$ username» + ~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:
InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId:
PropertyNotFound Вы не можете вызвать метод для выражения с нулевым значением.
В D: \ get-process.ps1: 12 char: 1 + $ Mail.Send () + ~~~~~~~~~~~~ +
CategoryInfo: InvalidOperation: (:) [], RuntimeException +
FullyQualifiedErrorId: InvokeMethodOnNull Привет
[email protected]
get-process.php -:
<?php
$username = "[email protected]";
$psScriptPath = "D:\\get-process.ps1";
$query = shell_exec("powershell -command $psScriptPath -username '$username'< NUL");
echo $query;
?>
get-process.ps1 -:
param(
[string]$username
)
$Outlook = New-Object -ComObject Outlook.Application
$Mail = $Outlook.CreateItem(0)
$Mail.To = "$username"$Mail.Subject = "New Leave Request"$Mail.Body = "$username"
$Mail.Send()
Write-Output "Hello $username <br />"
get-process.php
это PHP, который присутствует в корневой папке wwwroot
IIS Windows Server 2012 и из которого сценарий PowerShell get-process.ps1
срабатывает. Get-process.ps1
содержит скрипт для отправки почты
В настоящее время Microsoft не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из каких-либо необслуживаемых, неинтерактивных клиентских приложений или компонентов (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может демонстрировать нестабильное поведение и / или или тупик, когда Office работает в этой среде.
Если вы создаете решение, которое выполняется в контексте на стороне сервера, вы должны попытаться использовать компоненты, которые были сделаны безопасными для автоматического выполнения. Или вы должны попытаться найти альтернативы, которые позволяют хотя бы части кода работать на стороне клиента. Если вы используете приложение Office из серверного решения, приложению не хватит многих необходимых возможностей для успешной работы. Кроме того, вы будете рисковать стабильностью вашего общего решения. Подробнее об этом читайте в Особенности серверной автоматизации Office статья.
Вместо этого вы можете рассмотреть возможность использования низкоуровневого API, на котором основан Outlook — Extended MAPI. Или любая другая оболочка вокруг этого API, например, Redemption.
Других решений пока нет …