Hi! I have powershell installed on a Linux. I’m trying to invoke a small powershell script without success from a webpage written in php. The shell_exec can be bash, perl, python. They all work. But powershell, no luck. The script is working fine directly from the command line (run as apache). I’ve tried a few options when calling pwsh. Still no luck.
<?php
echo “Start”;
ini_set(‘max_execution_time’, 300);
$output= shell_exec(‘/bin/pwsh -nol -c /usr/local/sysadm/root_cmd/drs.ps1 -vc test1 -vm vmtest’);
echo( ‘
’ );
echo( $output );
echo( ‘
’ );
echo “End”;
?>
Typer10039,
Have you installed PowerShell on your Linux distro? Providing a link to PowerShell Core with Linux distro, confirm your distro is supported.
https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell-core-on-linux?view=powershell-6
[root@slpcfg0269 ~]# pwsh -version
PowerShell 6.1.1
More detail about my issue. I can see the powershell script running for a second in the process list. It runs for about a second, then stops.
It should run for at least 5-7 seconds and there’s no output in my browser. If I replace the powershell script by a simple bash, or python script I get my outout in the browser page.
Typer,
Take a look at this and let me know if this works. Unfortunately I don’t have a linux machine spun up to test.
< ?php
echo "Start";
ini_set('max_execution_time', 300);
$output= shell_exec('/bin/pwsh -nol -c {/usr/local/sysadm/root_cmd/drs.ps1 -vc test1 -vm vmtest}');
echo( '' );
echo( $output );
echo( '' );
echo "End";?>
Hi! Thanks your suggestion didn’t work but tried something else… I used the SheBang (#!) to source the pwsh.exe and then just sudo the script.
I swear I’ve tried it before posting here… but thanks for your time.
My ps1 script:
#!/bin/pwsh
param (
[string]$vc= “ctelpvc005”,
[string]$vm= “*”
)
connect-VIserver -Server $vc -User ansible_usr@vsphere.local -Password xxxXXXxxx
Get-DrsClusterGroup -Cluster cl-prd-002 | select Name,Member | where {$_.Member -like $vm}
The working CGI call:
$cmd = “sudo /usr/local/sysadm/root_cmd/drs.ps1 -vc $vc -vm $vm”;
Typer,
Great to hear this is resolved. Let us know if you have any other questions.