Comment exécuter un script PowerShell à partir d'une session Cygwin SSH?

12

J'ai Windows Server 2003 avec CopSSH installé dessus (Cygwin + sshd). W aimerait pouvoir exécuter un script PowerShell via la commande de session SSH, puis utiliser sa sortie. Existe-t-il une telle capacité? Comment faire ?

malloc4k
la source

Réponses:

11

Il suffit d'invoquer powershellavec les arguments pertinents et de le diriger où vous le souhaitez? Vous devez vous assurer que c'est PATHbien sûr.

ak2
la source
Merci. Je ne pensais pas que ce soit aussi simple que cela.
malloc4k
15
Ce n'est pas aussi simple. PowerShell utilise l'API de console; Cygwin (entre les mains d'utilisateurs expérimentés) n'est pas exécuté dans la console, il est exécuté dans un émulateur de terminal. PowerShell ne fonctionne pas dans un terminal; il se bloque car il essaie d'utiliser ReadConsoleInput au lieu de ReadFile sur l'entrée standard.
Barry Kelly
6

Tout d'abord, il est bon d'ajouter le chemin exécutable de PowerShell à la variable d'environnement PATH de l'utilisateur. Nous le faisons en ajoutant à la ligne de fichier .bashrc de l'utilisateur comme:

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

Ensuite, nous pouvons exécuter le script PowerShell en tapant simplement dans notre session SSH

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

Bien sûr, nous pouvons maintenant le canaliser pour utiliser sa sortie.

Je me demande simplement pourquoi je dois appuyer deux fois sur "Entrée" dans ma session SSH après avoir tapé la commande pour que cela fonctionne.

malloc4k
la source
4
Pour éviter d'avoir à appuyer sur retour, exécutez la commande comme:echo "\n" | powershell.exe ...
Andrew
4

Essayez-le sans format d'entrée

powershell.exe -inputformat none -noprofile echo hello

Peut être utile pour ne pas avoir à remettre un fichier à la machine locale.

PatrickWalker
la source