выполнение powershell с php

У меня есть следующий скрипт, чтобы получить статус службы удаленного компьютера и отобразить его на веб-странице (у меня установлен powershell v3.0):

<html !DOCTYPE>
<head>
</head>
<body>

<?php 
    $output = exec('powershell.exe "(Get-Service -computername server_name wudfsvc).Status"');
    echo $output  
?>

</body>
</html>

Это работает, когда я проверяю статус службы локально (без параметра -computername) и работает, когда я запускаю этот скрипт в командной строке. Я думаю, что проблема в том, что когда я запускаю его в php, у него недостаточно прав для получения статуса службы на удаленном компьютере. Я пытался использовать «Get-WMIObject -class win32_service» вместо Get-Service, но я нашел только этот пример, который обеспечивает только вход без пароля:

Get-WmiObject Win32_Service -Credential FABRIKAM\administrator Computer Fabrikam

Мне нужно автоматически получить статус службы на удаленном компьютере без взаимодействия с пользователем. Является ли это возможным?

Спасибо!


person culter    schedule 06.08.2013    source источник
comment
Под какой учетной записью пользователя работает PHP?   -  person vonPryz    schedule 06.08.2013
comment
Спасибо за ответ, vonPryz. Я вошел в систему с моей учетной записью домена. Как проверить учетную запись PHP?   -  person culter    schedule 06.08.2013
comment
Он работает под любой учетной записью, под которой работает ваш веб-сервер. Но предоставление процессу веб-сервера такого уровня доступа к остальной части вашей сети является проблемой безопасности, которую вы должны рассмотреть очень тщательно.   -  person alroc    schedule 06.08.2013
comment
alroc, я внимательно рассмотрел. Мне нужно контролировать свои системы, и это самый простой способ, который я нашел. Если есть другой способ (с более высоким уровнем безопасности) сделать это, пожалуйста, дайте мне знать.   -  person culter    schedule 14.11.2013


Ответы (1)


PHP взаимодействует с использованием локальной учетной записи службы IIS. Обычно я даю права локальной группе IUSR.

person Josh A.    schedule 27.01.2014