php - para - ejecutar script powershell desde cmd
No se puede enviar el correo electrónico de PowerShell usando la secuencia de comandos php a outlook usando iis windows server 2012 (1)
Actualmente, Microsoft no recomienda, y no admite, la automatización de las aplicaciones de Microsoft Office desde cualquier aplicación o componente de cliente desatendido y no interactivo (incluidos ASP, ASP.NET, DCOM y NT Services), ya que Office puede presentar un comportamiento inestable y / o interbloqueo cuando Office se ejecuta en este entorno.
Si está creando una solución que se ejecuta en un contexto del lado del servidor, debe intentar usar componentes que se hayan hecho seguros para la ejecución desatendida. O bien, debería intentar buscar alternativas que permitan que al menos parte del código se ejecute en el lado del cliente. Si utiliza una aplicación de Office desde una solución del lado del servidor, la aplicación carecerá de muchas de las capacidades necesarias para ejecutarse correctamente. Además, asumirá riesgos con la estabilidad de su solución general. Lea más sobre eso en Consideraciones para la automatización del lado del servidor del artículo de Office .
En su lugar, puede considerar el uso de una API de bajo nivel en la que se basa Outlook: MAPI extendido. O cualquier otro envoltorio alrededor de esa API, por ejemplo, Redención.
Error -:
New-Object: la recuperación de la fábrica de la clase COM para el componente con CLSID {0006F03A-0000-0000-C000-000000000046} falló debido al siguiente error: 80010001 La llamada fue rechazada por el destinatario. (Excepción de HRESULT: 0x80010001 (RPC_E_CALL_REJECTED)). En 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 No puede llamar un método en una expresión de valor nulo. En D: / get-process.ps1: 6 char: 1 + $ Mail = $ Outlook.CreateItem (0) + ~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~ + CategoryInfo: InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId: InvokeMethodOnNull La propiedad ''To'' no se puede encontrar en este objeto. Verifique que la propiedad exista y se pueda establecer. En D: / get-process.ps1: 8 char: 1 + $ Mail.To = "$ username" + ~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId: PropertyNotFound La propiedad ''Subject'' no se puede encontrar en este objeto. Verifique que la propiedad exista y se pueda establecer. En D: / get-process.ps1: 9 char: 1 + $ Mail.Subject = "Nueva solicitud de permiso" + ~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId: PropertyNotFound La propiedad ''Body'' no se puede encontrar en este objeto. Verifique que la propiedad exista y se pueda establecer. En D: / get-process.ps1: 10 char: 1 + $ Mail.Body = "$ username" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId: PropertyNotFound No puede llamar a un método en una expresión de valor nulo. En D: / get-process.ps1: 12 char: 1 + $ Mail.Send () + ~~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId: InvokeMethodOnNull Hola [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
es el php que está presente en la carpeta raíz wwwroot
de IIS Windows Server 2012 y desde el cual se activa el script de PowerShell get-process.ps1
. Get-process.ps1
contiene script para enviar el correo