我正在尝试从 Ubuntu 连接到 Windows 2012 服务器。
winexe --user <USER> --password <SERVER> //SERVER cmd.exe
工作正常。
然而,
winexe --user <USER> --password <SERVER> //SERVER powershell.exe`
只是挂了。
它显示:
Windows PowerShell
Copyright (C) 2012 Microsoft Corporation. All rights reserved.
但此后它就挂起了并且不会对按键做出反应。
我是否需要向 powershell 传递一个参数才能使其以交互模式运行?
编辑
如果我通过 strace 运行上述命令,它似乎正在等待服务器发回一些内容。
epoll_wait(4, {}, 1, 10) = 0
epoll_wait(4, {}, 1, 10) = 0
epoll_wait(4, {}, 1, 10) = 0
答案1
尝试
winexe --interactive=1 --user<USER> --password <SERVER> //SERVER powershell.exe
答案2
最简单的方法是使用单引号直接运行命令。例如,可以按如下方式列出进程:
winexe -U "Domain\PC-Name" //IP Address 'powershell.exe Get-Process'
答案3
Powershell 似乎是一个“Windows GUI 程序”,它试图与桌面进行交互。如果从远程连接(可能在 Windows XP 中),这显然是不可能的。要进行交互并将 powershell 的输入连接到 stdin,请使用“-Command -”。
这允许 powershell 与 stdin 交互。您可以键入命令并查看输出,但不会从 powershell 获得提示。
答案4
Winexe 听起来相当过时,并且没有声明支持 Windows Server 2008 和更新版本的 Windows。
PowerShell 已开源,您可以.deb
从 GitHub 下载 Ubuntu 14.04 和 16.04 软件包:
https://github.com/PowerShell/PowerShell
安装后,您可以使用以下方式远程连接到 Windows Server 2012 计算机:Enter-PSSession
PowerShell 命令。