PowerShell возвращает пустой ответ в Azure - PullRequest
1 голос
/ 15 марта 2019

Когда я пытаюсь запустить скрипт 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
...