Когда я пытаюсь запустить скрипт PS из PHP на AWS, он работает нормально и возвращает правильный ответ, но когда я пытаюсь запустить этот скрипт из PHP на Azure, он возвращает пустой ответ.На обоих серверах используется одна и та же кодовая база и одна и та же версия Powershell. Я использую функцию shell exec () для запуска сценария powershell в PHP версии 7.0.30 и версии Powershell V1.0. Использование режима Managedpipeline в IIS является интегрированным, а идентификация модели процесса - ApplicationPoolIdentity.
Вот код PHP для запуска сценария Power Shell.
$cmd = 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File '.$scriptPath.' "'.PARAM1.'" "KEY_FILE_PATH" "'.SCRIPT NAME.'" "'.USERNAME.'"'.' "'.PASSWORD.'"';
$output = shell_exec($cmd);
Вот код сценария Powershell, который я пытаюсь выполнить из приведенной выше команды.
param($server,$keypath,$scriptname,$username,$password,$distro,$vncport)
Import-Module -Name C:\Posh-SSH
$pass="temp123"
$passenc = $pass | ConvertTo-SecureString -AsPlainText -Force
$credentials = new-object -typename System.Management.Automation.PSCredential -argumentlist "ubuntu",$passenc
$ssh = New-SSHSession -ComputerName $server -KeyFile $keypath -AcceptKey -Credential $credentials
$ret = $(Invoke-SSHCommand -SSHSession $ssh -Command "/home/ubuntu/$scriptname $username $password $distro $vncport" -Timeout 300).Output
$ret
Remove-SSHSession -SSHSession $ssh | Out-Null