Windows — IIS PHP PowerShell с переключателем пользователя

У меня есть 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 как обычный пользователь, она работает нормально.

Проблема:

  • Если я выполню команду через IIS, она не будет выполнена, причина не указана (stdout и stderr пусты)
  • Если я закомментирую Имя пользователя, Домен и Пароль, это сработает — это означает, что $ stdout заполнен выводом из второго скрипта (но, очевидно, без изменения пользователя)

Существуют ли какие-либо настройки в Windows, IIS, PHP или powershell, которые мешают переходу пользователя с IUSR на что-то другое?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]