Solución:
Parece que su comando está rodeado de comillas simples. Creo que si los eliminas, tu comando debería ejecutarse.
shell_exec
devuelve el resultado del comando que ejecuta. Para realizar un diagnóstico más detallado, almacene el resultado en una variable y luego imprímalo:
$output= shell_exec($runCMD);
echo( '<pre>' );
echo( $output );
echo( '</pre>' );
Asegúrese de habilitar la ejecución de scripts. Esa capacidad está desactivada de forma predeterminada. Debe habilitar la ejecución de scripts en cada máquina en la que desee ejecutar scripts de PowerShell. Correr about help_signing
para más información.
Microsoft recomienda ejecutar Set-ExecutionPolicy RemoteSigned -Scope LocalMachine
. Esto permite que todas las cuentas de usuario en una máquina ejecuten scripts locales sin problemas, pero requiere confirmación para ejecutar scripts descargados de Internet. Esto debe ejecutarse en un mensaje administrativo. Si está ejecutando un sistema operativo de 64 bits, deberá hacerlo desde un shell de 64 bits y de 32 bits.
Encontré esto en otro sitio web y pensé en compartirlo:
Estaba depurando un programa que usa la API de Windows (Creación de un proceso secundario con entrada y salida redirigidas) para capturar la salida estándar de Windows PowerShell de Microsoft.
El script pasado a PowerShell (-File switch) no se ejecutó y PowerShell simplemente se colgó hasta que el Administrador de tareas lo mató.
Resulta que necesita utilizar el parámetro no documentado “-InputFormat none”:
C:WindowsSystem32WindowsPowerShellv1.0powershell.exe -InputFormat none -File file.ps1
Esto funcionó para mí.
Usar “-executionPolicy Unrestricted
“junto con el comando”powershell.exe
“. Por lo tanto, el comando será:
powershell.exe -executionPolicy Unrestricted
Entonces seguramente funcionará.