当我尝试从AWS在PHP上运行PS脚本时,它工作正常并返回正确的响应,但是当我尝试从Azure在PHP上运行该脚本时,它返回一个空响应。两台服务器上使用相同的代码库和相同的Powershell版本, 我正在使用shell exec()函数在PHP 7.0.30版和Powershell V1.0版上运行powershell脚本 集成了在IIS中使用Managedpipeline模式的功能,而流程模型标识为ApplicationPoolIdentity。
这是运行Power Shell脚本的PHP代码。
$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