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

gwo*_*dus 5 windows powershell remote-access

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

示例:我输入一个远程会话

Enter-PSSession -ComputerName mobius
Run Code Online (Sandbox Code Playgroud)

在此会话中,我执行一个要求输入密码的命令:

[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
Run Code Online (Sandbox Code Playgroud)

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

问题1: plink.exe将文本“使用用户名“ plakat””写入stderr。这可能会导致错误消息。我能以某种方式抑制这种情况吗?(将stderr传递到stdout或其他东西。)

问题2:该过程在我应该输入密码的位置退出。我也可以使用其他命令来重现

[mobius]: PS C:\Windows\system32> cmd /c date
Run Code Online (Sandbox Code Playgroud)

它不允许我输入日期。如果我在本地PowerShell中运行它们,这两个命令都可以工作。在这种情况下,问题1或2均未显示。

x0n*_*x0n 3

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

大多数命令行实用程序都支持某种形式的自动化,无论是管道还是将值作为参数传递,因此请仔细查看您正在使用的工具。当然,这是根据具体情况而定的。没有简单的方法可以以任何通用方式拦截远程端的交互式提示。

  • 由于这似乎不可能,我接受这个答案。事实上我确实安装了一个 SSH 服务器。有趣的是,MS 走了这么远,但并没有走完全程。为什么有像 _Enter-PSSession_ 这样的命令可以打开 **交互式** 远程会话,但不允许太多交互?希望在未来的版本中他们能够实现它...... (2认同)