Подключение к удаленному рабочему столу с помощью инструмента Psexec работает с Powershell и Cmd, но не работает в PowerShell ISE.

Подключение к удаленному рабочему столу с помощью инструмента Psexec работает с Powershell и Cmd, но не работает в PowerShell ISE.

Я использую эту команду psexec \\ip_address -u user_name -p psw cmd для подключения к удаленному рабочему столу для запуска команд, она работает, когда вы используете ее в Power shell или командной строке, но не работает в Power shell ISE. Я не получаю никаких ошибок в ISE, но как только выполнение начинается, оно никогда не заканчивается, пока вы его не остановите.

После запуска выполнение никогда не заканчивается и не подключается к удаленному рабочему столу, вы также не получите сообщение об ошибке, но оно отлично работает в PowerShell или CMD.

решение1

Во-первых, скриншоты кода, на самом деле, бесполезны для нас. Они заставляют людей перепечатывать то, что вы сделали, чего большинство не хочет делать.

Потому что psexec — это интерактивный командный инструмент. Вы можете использовать его в ISE, но вам придется передавать каждый необходимый параметр.

Это не ограничение psexec, попробуйте, скажем, nslookup и увидите ту же проблему. Вы не можете использовать многие интерактивные команды DOS/CMD в консоли ISE или панели сценариев IDE, как вы делаете в cmd/console. Это не его дизайн.

Это было задокументировано с момента выпуска ISE.

Поддержка консольных приложений (не) в ISE

Существуют некоторые ограничения взаимодействия ISE с консольными приложениями, о которых вам следует знать, например, для таких приложений, как ftp и netsh.

Прежде всего, ISE прекрасно запускает консольные приложения, не требующие ввода данных пользователем. Например, «ping www.microsoft.com» и «cmd /c dir /s»

Конвейер также отлично работает в ISE, например, PS C:\Users\ibrar> «show mode» | netsh netsh>online

Автоматизация в скриптах, не требующих вмешательства пользователя, вполне подойдет.

Однако если вы запустите «cmd /k», требующий ввода данных, ISE зависнет, и вам придется остановить конвейер, используя Ctrl-Break или нажав кнопку остановки.

При необходимости вы можете обратиться к хосту консоли, чтобы сделать такие вещи, используяКомандлет Start-Process.или один из других методов запуска.

Видеть:

Запуск исполняемых файлов в PowerShell | IT Pro

  1. Оператор вызова и Technet

Почему: Используется для обработки строки как ОДНОЙ команды. Полезно для работы с пробелами.

В PowerShell V2.0, если вы запускаете 7z.exe (7-Zip.exe) или другую команду, которая начинается с цифры, вам необходимо использовать оператор вызова команды &.

Парсер PowerShell V3.0 теперь делает это умнее, в этом случае вам больше не нужен &.

Подробности: Запускает команду, скрипт или блок скрипта. Оператор вызова, также известный как "оператор вызова", позволяет запускать команды, которые хранятся в переменных и представлены строками. Поскольку оператор вызова не анализирует команду, он не может интерпретировать параметры команды

Example: 

& 'C:\Program Files\Windows Media Player\wmplayer.exe' "c:\videos\my home video.avi" /fullscreen

Итак, ваш psexec..

& 'C:\Tools\psexec.exe' "Your command arguments" /accepteula

Связанный контент