我在远程Power
Shell会话中执行命令时遇到麻烦,需要用户交互.
示例:我进入远程会话
Enter-PSSession -ComputerName mobius
在这个会话中,我执行一个要求输入密码的命令:
[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将文本’using username“plakat”’写入stderr.这可能会导致错误消息.我可以以某种方式压制这个吗? (管道stderr到stdout或其他东西.)
问题2:进程退出时我应该输入密码.我也可以用其他命令重现它
[mobius]: PS C:\Windows\system32> cmd /c date
它不允许我输入日期.如果我在本地PowerShell中运行它们,则这两个命令都有效.在这种情况下,问题1或2都没有出现.
最佳答案 远程PowerShell会话不支持交互式本机Windows控制台命令.我知道这听起来很愚蠢,但目前情况就是这样(从PowerShell v4.0开始).
大多数命令行实用程序都支持某种形式的自动化,无论是管道还是将值作为参数传递,因此请仔细查看您正在使用的工具.当然,这是根据具体情况而定.没有简单的方法可以以任何通用方式拦截远程端的交互式提示.