执行远程Powershell会话中的交互式命令不起作用

我有麻烦在需要用户交互的远程PowerShell会话中执行命令。

例如:我input一个远程会话

Enter-PSSession -ComputerName mobius 

在这个会话中,我执行一个要求input密码的命令:

 [mobius]: PS C:\Windows\system32> & 'c:\Program Files (x86)\Putty\plink.exe' merlin -l joe joe@merlin's password: c:\Program Files (x86)\Putty\plink.exe : Using username "plakat". + CategoryInfo : NotSpecified: (Using username "plakat".:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError 

最后两行显示为红色。 似乎有两个问题。

问题1: plink.exe将文本“使用用户名”plakat“'写入stderr。 这可能会导致错误消息。 我可以压制这个吗? (pipe道标准输出或其他东西。)

问题2:进程退出时,我应该input密码。 我也可以用其他命令来重现

 [mobius]: PS C:\Windows\system32> cmd /c date 

它不让我inputdate。 如果我在本地PowerShell中运行它们,这两个命令都可以工作。 在这种情况下,问题1或问题2都不显示。

Solutions Collecting From Web of "执行远程Powershell会话中的交互式命令不起作用"

交互式本机Windows控制台命令在远程PowerShell会话中不受支持。 我知道这听起来很愚蠢,但目前情况如此(从PowerShell v4.0开始)。

大多数命令行实用程序都支持某种形式的自动化,不管是将参数传递还是传递参数,请仔细查看您正在使用的工具。 当然,这是一个个案的基础。 以任何通用的方式在远端截获交互式提示并不容易。

您可以使用执行和退出的Invoke-command cmdlet回避该问题

Invoke-Command -ComputerName Mobius -ScriptBlock {## your stuff}

并在日期命令的情况下结合管道

Invoke-Command -ComputerName Mobius -ScriptBlock {echo "01-02-1999" |cmd /c date}

或为plink

 Invoke-Command -ComputerName Mobius -ScriptBlock {"yourpassword"| &'c:\Program Files (x86)\Putty\plink.exe' merlin -l joe `"bashcommand1 && bashcommand2`" } 

甚至更简单

 Invoke-Command -ComputerName Mobius -ScriptBlock { &'c:\Program Files (x86)\Putty\plink.exe' merlin -l joe -pw yourpass `"bashcommand1 && bashcommand2`" } 

但是@ X0n说没有真正的互动性。