PSEXEC - "Ручка недействительна" При запуске команды в качестве пользователя системы
Это команда, которая отлично работает при запуске из командной строки, вызванной пользователем:
PSEXEC \\xxx.xxx.xxx.xxx -u xxxx -p xxxx -accepteula cmd /c "TYPE C:\Pyxislog\PYXIS01.log|Find/i "%ID%"" >nul
Однако, если я попытаюсь запустить это из приглашения cmd, вызванного системой, я получаю следующее:
Couldn't access 10.219.149.65:
The handle is invalid.
Connecting to 10.219.149.65...
Он должен запускаться как системный пользователь, поскольку он будет развернут через удаленный программный инструмент, который работает как системный пользователь. Это ограничение psexec? и да, имя пользователя и пароль имеют административные права.
Ответы
Ответ 1
После долгих исследований, это функция безопасности Windows, которая блокирует весь доступ к сети пользователю системы, который включает выполнение заданий в качестве другого пользователя. Лучший метод, который я нашел, чтобы обойти это, заключается в создании запланированной задачи для запуска psexec из учетной записи администратора.
Ответ 2
Psexec заставляет использовать учетную запись пользователя системы, добавив параметр -s.
Мы используем psexec для запуска какой-либо задачи на удаленных компьютерах и регистрируем ее в таблице базы данных.
Когда мы не используем параметр -s, параметр user отображается как domain\administrator, но если вы используете
-s он отображается как "Система"
Для сообщения с недействительным дескриптором проверьте следующее:
https://superuser.com/questions/200938/psexec-the-handle-is-invalid
Ответ 3
Вы пытались использовать флаг -h?
из technet: -h Если целевая система - Vista или выше, процесс выполняется с повышенным токеном учетной записи, если он доступен.
Полная страница: https://technet.microsoft.com/en-us/sysinternals/psexec.aspx
Ответ 4
Это может быть несвязано, но на самом деле я обнаружил, что я получил ошибку "Недопустимый дескриптор", если соединение спустилось к машине, то есть машина засыпала.
Ответ 5
Вот код, который я использовал, чтобы следовать инструкциям ИТ-специалиста по планированию задачи для запуска от имени администратора и избежать проблемы "Дескриптор неверен".
//Schedule a task that will run the script
using (TaskService ts = new TaskService())
{
TaskDefinition td = ts.NewTask();
td.RegistrationInfo.Description = "Runs script as admin user";
td.Triggers.Add(new TimeTrigger(DateTime.Now.AddMinutes(2)));
td.Actions.Add(new ExecAction(@"C:\...\script.exe"));
try
{
ts.RootFolder.RegisterTaskDefinition(@"Script", td, TaskCreation.CreateOrUpdate, "username", "password", logonType: TaskLogonType.Password);
}
catch (UnauthorizedAccessException e)
{
Console.WriteLine("Could not register task in task scheduler.");
Console.WriteLine(e.ToString());
return;
}
}