Вопрос или проблема
Я пытаюсь запустить удаленную программу с помощью PsExec. В целом это работает, если я указываю имя пользователя и пароль или запускаю от имени учетной записи SYSTEM.
Я хочу обойтись без имени пользователя и пароля, чтобы программа запускалась с той же учетной записью, в которой был выполнен PsExec.
Я предполагаю, что это не работает, потому что нет домена, но мне интересно, есть ли способ заставить это работать без него?
Учетные записи на обоих машинах используют локальную учетную запись с одинаковым именем пользователя и паролем.
Команды, которые работают:
.\psexec64 \\192.168.250.31 -u username -p password -d -i 2 notepad.exe
.\psexec64 \\192.168.250.31 -s -d -i 2 notepad.exe
Команда, которая не работает:
.\psexec64 \\192.168.250.31 -d -i 2 notepad.exe
Ответ или решение
Чтобы запустить удаленную программу с помощью PsExec, используя учетную запись, под которой была выполнена команда, необходимо учитывать несколько важных моментов. Ваша проблема заключается в том, что PsExec не может использовать локальную учетную запись без явного указания имени пользователя и пароля, когда обе машины не находятся в домене.
1. Понимание PsExec и локальных учетных записей
PsExec позволяет запускать процессы на удаленных компьютерах, используя учетные данные, заданные в командной строке. Однако если вы хотите, чтобы процесс запускался с теми же учетными данными, что и на локальной машине, необходимо соблюсти определенные условия.
2. Запуск PsExec с использованием локальных учетных записей
Если вы работаете в среде, где обе машины используют одну и ту же локальную учетную запись (с одинаковым именем пользователя и паролем), вы можете использовать некоторые флаги для упрощения процесса:
- При использовании опции
-u
, PsExec ожидал бы, что вы укажете учетные данные. Без указания этих параметров программа не сможет аутентифицироваться на удаленной машине. - Если между машинами установлен уровень доверительных отношений или они находятся в одной рабочей группе, это будет способствовать более удобной аутентификации.
3. Использование опции -i
Для запуска интерфейсных приложений (например, Notepad) следует использовать флаг -i
, который указывает на идентификатор сессии. Однако, если учетная запись не может быть определена, это может привести к ошибкам.
4. Работа вокруг проблемы с аутентификацией
Вы можете попробовать два варианта:
-
Изменение конфигурации сети: Каждая машина должна находиться в одной рабочей группе или домене, что упростит процесс аутентификации. Убедитесь, что пользователь имеет достаточные права для операции.
-
Использование групповой политики: Настройка локальной политики безопасности может помочь разрешить выполнения программ без явного указания имени пользователя и пароля, но это может потребовать прав администратора на обеих машинах.
5. Альтернативные способы запуска программ
Если у вас есть возможность использовать PowerShell или другие инструменты удаленного управления, вы можете использовать командлет Invoke-Command
, который позволит вам выполнять команды на удаленной машине под теми же учетными данными:
Invoke-Command -ComputerName 192.168.250.31 -ScriptBlock { Start-Process notepad.exe } -Credential (Get-Credential)
Хотя в данном примере сохраняется ввод учетных данных, вы можете настроить PowerShell для использования текущих учетных данных.
Заключение
К сожалению, использование PsExec без явного указывания имени пользователя и пароля в вашей конфигурации не предполагается, если машины не находятся в домене или не установлены доверительные отношения. Попробуйте альтернативные методы с PowerShell или оцените возможность объединения машин в одну рабочую группу, что может значительно облегчить задачу.