PowerShell: ** lendo ** entrada do teclado AND ** redirecionando saída ** para uma variável / arquivo

0

Desculpe se minha pergunta é trivial; Sou iniciante no PowerShell.

Meu programa (plink) está esperando por uma resposta do teclado e retornará alguma saída. É possível redirecionar a saída para uma variável / arquivo ?

Detalhes:

(estou atribuindo o próprio comando a uma variável, por conveniência.)

Sem redirecionamento de saída - A saída do console está OK:

PS C:\Users\user> $mycmd="plink -v -ssh -l $user $myserver vncserver -list"
PS C:\Users\user> invoke-expression $mycmd
user@server's password:
TigerVNC server sessions:
X DISPLAY #     PROCESS ID
:1              26788
PS C:\Users\user>

No entanto, com o redirecionamento de saída para uma variável:

PS C:\Users\user> $myoutput=invoke-expression "$mycmd"

...still waiting in this state ==> I type my passwd blindly (passwd prompt is captured in $myoutput)

PS C:\Users\user> $myoutput

user@server's password:

TigerVNC server sessions:

X DISPLAY # PROCESS ID

PS C:\Users\server>

O conteúdo da variável $ myoutput está OK Mas o prompt de senha também é redirecionado para a variável!

Meu pbm agora é como tornar o uso abrangente: o usuário não pode adivinhar ao digitar sua passwd: ( (por exemplo, como lidar com a senha?)

Remarqs : modo verboso de plink (plink -v ...) ainda saindo para o console ao redirecionar para $ myoutput

$myoutput=invoke-expression "$mycmd"

Looking up host "server"
Connecting to xxx.XXX.XXX.XXX port 22
We claim version: SSH-2.0-PuTTY_Release_0.66
Server version: SSH-2.0-OpenSSH_7.4
Using SSH protocol version 2
Doing Diffie-Hellman group exchange
Doing Diffie-Hellman key exchange with hash SHA-256
Host key fingerprint is:
ssh-rsa 2048 blabklablablablabla
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA-256 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA-256 server->client MAC algorithm
Using username "user".
Using SSPI from SECUR32.DLL
Attempting GSSAPI authentication
GSSAPI authentication initialisation failed
The target was not recognized.

Eu entro no meu passwd aqui (no escuro)

Sent password
Access granted
Opening session as main channel
Opened main channel
Started a shell/command
Server sent command exit status 1
Disconnected: All channels closed
    
por Free Man 01.01.2018 / 22:55

1 resposta

0

O prompt da senha faz parte da saída de plink , então você deve esperar que ele entre em $myoutput e não no console. Espero que, quando você digitar $myoutput=invoke-expression "$mycmd" , Parece que ele está travando e não fornece outro aviso de PS. É provavelmente lendo silenciosamente a senha do teclado! Se você simplesmente seguir em frente e digitar a senha, ela funcionará. (Atenção: a senha pode ser exibida na tela do console).

Como mencionado acima, já que o prompt de senha faz parte da saída de plink , entra em $myoutput . Então, você precisa estar preparado para lidar a primeira linha de $myoutput sendo o prompt de senha.

    
por 02.01.2018 / 19:11