У меня есть IIS с php 5.6.
Я пишу скрипт PHP, который должен выполнять скрипт powershell.
Сценарий powershell должен переключиться на другого пользователя, поскольку пользователь IUSR не имеет привилегий для необходимых команд в powershell.
Источник:
PHP-вызов powershell:
$content = shell_exec("powershell.exe -NonInteractive -command " . getcwd() . "\\ps-helper.ps1 -ps_password '".$powershell_password."' < NUL");
Так как (насколько мне известно) невозможно переключить пользователя в скрипте, я разделил его на два файла. ps-helper.ps1 должен запустить второй скрипт с разными учетными данными:
пс-helper.ps1:
$psuser_secpassword = ConvertTo-SecureString $ps_password -AsPlainText -Force
$psi = New-Object System.Diagnostics.ProcessStartInfo
$psi.CreateNoWindow = $true
$psi.FileName = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"$psi.Arguments = "/?"$psi.UseShellExecute = $false;
$psi.RedirectStandardInput = $true;
$psi.RedirectStandardError = $true;
$psi.RedirectStandardOutput = $True;
$psi.Username = 'username'
$psi.Domain = 'DOMAIN'
$psi.Password = $psuser_secpassword
$p = New-Object System.Diagnostics.Process
$p.StartInfo = $psi
$p.Start()
$stdout = $p.StandardOutput.ReadToEnd()
$stderr = $p.StandardError.ReadToEnd()
$p.WaitForExit()
Если я выполняю команду через cmd.exe в Windows как обычный пользователь, она работает нормально.
Проблема:
Существуют ли какие-либо настройки в Windows, IIS, PHP или powershell, которые мешают переходу пользователя с IUSR на что-то другое?
Задача ещё не решена.
Других решений пока нет …