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;
            }
        }