通过 winexe/psexec 运行 powershell

通过 winexe/psexec 运行 powershell

我正在尝试从 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-PSSessionPowerShell 命令。

相关内容