Я использую эту команду 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
- Оператор вызова и 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