Как запустить скрипт PowerShell из сеанса Cygwin SSH?

12

У меня Windows Server 2003 с установленным на нем CopSSH (Cygwin + sshd). W хотел бы иметь возможность запускать сценарий PowerShell с помощью команды сеанса SSH, а затем использовать его вывод. Есть ли такая возможность? Как это сделать ?

malloc4k
источник

Ответы:

11

Просто вызовите powershellсоответствующие аргументы и направьте его туда, куда вы хотите? Вы должны убедиться, что это PATHконечно.

ak2
источник
Благодарю. Я не думал, что это так просто.
malloc4k
15
Это не так просто. PowerShell использует консольный API; Cygwin (в руках опытных пользователей) запускается не в консоли, а в эмуляторе терминала. PowerShell не работает в терминале; он зависает, потому что пытается использовать ReadConsoleInput вместо ReadFile при стандартном вводе.
Барри Келли
9

Барри Келли прав.

Вам нужно использовать мою программу-обертку, которая создает скрытую консоль и запускает на ней powershell.

Моя страница здесь: http://sergeybelous.com/shell-terminal/#proxywinconsole.exe

Кто-то уже нашел мое программное обеспечение-обертку и создал учебник здесь: http://ssh-with-powershell.blogspot.com/2013/07/enable-ssh-with-powershell-and-remove.html

Сергей
источник
6

Во-первых, полезно добавить путь к исполняемому файлу PowerShell в переменную окружения PATH пользователя. Мы делаем это путем добавления в строку файла пользователя .bashrc, например:

export PATH=${PATH}:"/cygdrive/c/WINDOWS/system32/WindowsPowerShell/v1.0"

Затем мы можем запустить скрипт PowerShell, просто набрав в нашем сеансе SSH

powershell.exe -File "c:\u.ps1"

Конечно, теперь мы можем передать это, чтобы использовать его вывод.

Мне просто интересно, почему я должен нажать «Enter» два раза в моем сеансе SSH после ввода команды для его работы.

malloc4k
источник
4
Чтобы не нажимать клавишу возврата, выполните команду как:echo "\n" | powershell.exe ...
Эндрю
4

Попробуйте это без входного формата

powershell.exe -inputformat none -noprofile echo hello

Может быть полезно, если нет необходимости доставлять файл на локальный компьютер.

PatrickWalker
источник
3

Если вам нужно запустить powershell внутри cygwin / babun, следуйте https://code.google.com/p/mintty/issues/detail?id=56#c64 . Собственно, скачайте или скомпилируйте https://github.com/rprichard/winpty , скопируйте его в ваш $ PATH и затем запустите

console.exe powershell

Это также работает с пакетными сценариями, которые вызывают powershell внутри.

Рольф
источник