Я хочу получить количество процессоров, запущенных на удаленном сервере, с моего сервера.
Для этого я проверяю информацию с помощью этой командной строки:
C:\Users\Administrator>psexec -accepteula \\remote_computer_name -u remote_computer_name\admin -p my_password cmd /C "set number_of_processors"
И он возвращает мне результат, который я хотел:
Но когда я пытаюсь получить тот же результат, используя его в сценарии PHP, он говорит, что доступ запрещен.
PsExec v1.98 — удаленное выполнение процессов Copyright (C) 2001-2010 Mark
Руссинович Сисинтерналс — www.sysinternals.comВ доступе отказано.
Подключение к удаленному_компьютеру_имя … Запуск PsExec
служба на удаленном_компьютере_имя … Не удалось запустить службу PsExec на
имя_удаленного_компьютера: подключение к имени_компьютера_устройства … Запуск PsExec
служба на удаленном_компьютере_имя …
Вот мой PHP-скрипт:
<?php
function executeCmd($cmd,$params,$return)
{
//$resTable = array();
$resInt = -1;
exec("$cmd $params",$resTable,$resInt);
//$resTable=shell_exec($cmd $params);
//print_r($resTable);
if($return == 40)// return associative table
return $resTable;
if($return == 41)// return int
return $resInt;
}
$cmd = "psexec";
$params = " -accepteula \\\\remote_computer_name -u remote_computer_name\\admin -p password cmd /C \"set number_of_processors\" 2>&1";
//$res = system($cmd,$params,40);
$res = executeCmd($cmd,$params,40);
for($i=0;$i<count($res);$i++)
{
print_r($res[$i]);
echo "</br>";
}
?>
Я использую тот же сценарий на другой паре серверов, и он работает очень хорошо. Что я упустил ?
Наконец-то нашел ответ! Я только добавляю аргументы -h в мою командную строку.
-h Если целевая система Vista или выше, имеет ли процесс
запустить с повышенным токеном аккаунта, если он доступен.
Других решений пока нет …