Я хочу запустить приложение удаленно. Я использую следующую команду PsExec:
PsExec \\computerOne -u Domain\User1 -p 123456 -x "C:\Windows\System32\calc.exe"
Я пробовал использовать -i, чтобы программа взаимодействовала с рабочим столом:
PsExec \\computerOne -u Domain\User1 -i 123456 -x "C:\Windows\System32\calc.exe"
но это не работает. Ошибка из второго примера:
calc.exe вышел на computerOne с кодом ошибки -1073741502 "
Если я опущу спецификацию и просто напишу путь к exe, процесс будет указан в диспетчере задач, но я не вижу никакого пользовательского интерфейса. Должен ли я изменить какие-либо настройки на моем рабочем столе, на котором я хочу запустить программу?
То, что вы видите, может быть следствием Изоляция сеанса 0 - psexec устанавливает и запускает новую службу на удаленном компьютере, но сеанс по умолчанию, в котором он запускает ваш процесс, равен 0 и, следовательно, недоступен для текущего пользователя (по крайней мере, из Windows Vista / Server 2008). Вам необходимо указать номер сеанса после -i
параметр. Вы можете запросить текущих пользователей (и их номера сеансов), используя quser /SERVER:computerOne
команда заранее.
Для быстрого и грязного тестирования вы можете предположить, что идентификатор сеанса первого интерактивно вошедшего в систему пользователя равен «1».
Вы также можете просто вынуть -x и заменить на -I, он должен открыть PsExec \ computerOne -u Domain \ User1 -p 123456 -i "C: \ Windows \ System32 \ calc.exe"
Основная причина, по-видимому, в протекающих ручках, сделанных Console.Write
метод в Microsoft.powershell.consolehost.dll
. -1073741502 код выхода в шестнадцатеричном формате: 0xC0000142 (status_dll_init_failed).
Это похоже на Windows 7 и 2008 (в соответствии с Microsoft KB2701373).
Примечание: Некоторые «Исправления» в другом месте в Интернете приписываются выполнению какого-то магического заклинания, затем закрытию PowerShell и открытию нового экземпляра. Однако «перезапуск» PowerShell - это то, что на самом деле временно решает проблему.