I have Windows Server 2003 with CopSSH installed on it ( Cygwin + sshd ). W would like to be able to run a PowerShell script via SSH session command and then use it's output. Is there such capability ? How to do it ?


Just invoke powershell with the relevant arguments and pipe it to wherever you want it? You need to make sure it's in the PATH of course.

| improve this answer | |
  • 1
    Thanks. I did not think it's that simple. – malloc4k May 5 '11 at 13:43
  • 15
    It's not that simple. PowerShell uses the Console API; Cygwin (in the hands of experienced users) is not run in the console, it's run in a terminal emulator. PowerShell doesn't work in a terminal; it hangs because it's trying to use ReadConsoleInput instead of ReadFile on standard input. – Barry Kelly Jun 15 '12 at 10:27

Barry Kelly is right.

You need to use my wrapper software that creates hidden console and runs powershell on it.

My page is here: http://sergeybelous.com/shell-terminal/#proxywinconsole.exe

Someone already found my wrapper software and created tutorial here: http://ssh-with-powershell.blogspot.com/2013/07/enable-ssh-with-powershell-and-remove.html

| improve this answer | |

First thing it is good to add PowerShell's executable path to user's PATH environmental variable. We do it by adding to user's .bashrc file line like:

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

Then we can run PowerShell script just typing in our SSH session

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

Of course now we can pipe it to use it's output.

I just wonder why I have to press "Enter" two times in my SSH session after typing the command for it to work.

| improve this answer | |
  • 4
    To avoid having to hit return, run the command like: echo "\n" | powershell.exe ... – Andrew Jul 23 '11 at 18:07

Try it with no inputformat

powershell.exe -inputformat none -noprofile echo hello

Can be useful for not having to deliver a file to the local machine.

| improve this answer | |

If you need to run powershell inside cygwin/babun, follow https://code.google.com/p/mintty/issues/detail?id=56#c64 . Bascilly, downloard or compile https://github.com/rprichard/winpty, copy it to your $PATH and then run

console.exe powershell

This also works with batch scripts that invoke powershell inside.

| improve this answer | |
Administrator@AAAAA-11111:~ $cd /cygdrive/c/WINDOWS/system32/WindowsPowerShell/v1.0
Administrator@AAAAA-11111:/cygdrive/c/WINDOWS/system32/WindowsPowerShell/v1.0 $ cmd /k powershell.exe
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS C:\WINDOWS\system32\WindowsPowerShell\v1.0>

this works for me.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.