Powershell Invoke-SSHCommand:使用“1”参数调用“EndExecute”的异常

时间:2017-06-12 12:02:13

标签: powershell ssh

我正在尝试通过powershell中的Posh-SSH模块连接到Netscaler SDX服务器,以搜索特定文件然后下载它。如果我用putty连接到服务器它可以工作,然后我可以输入“shell”来打开一个普通的bash控制台。 当我尝试连接powershell时,我使用以下命令。

$hostname = [ip]
$user = [username]
$password = [password]

$secureStringPwd = $password | ConvertTo-SecureString -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential -ArgumentList 
$user, $secureStringPwd

$ssh = New-SSHSession -ComputerName $HostName -Credential $creds

这会创建一个仍然可以连接的ssh会话。接下来我使用Invoke-SSHCommand。

Invoke-SSHCommand -SessionId ssh.SessionId -Command "shell"

加载一段时间然后抛出此异常:

Exception calling "EndExecute" with "1" argument(s):  "Command 
'shell' has timed out."
At C:\Users\giapsh\Documents\WindowsPowerShell\Modules\posh-ssh\Posh-
SSH.psm1:266 char:25
+                         $Output = $_.cmd.EndExecute($_.Async)
+                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : SshOperationTimeoutException

我用Google搜索,我只发现有同样问题却没有答案的人(用于将其从德语翻译成英语)。我还尝试了其他类似命令的“ls”,但返回了相同的错误。有人知道我做错了吗?

我正在使用Windows 10和Powershell 5.1

此致

帕特里克

1 个答案:

答案 0 :(得分:0)

我有完全相同的问题。尝试使用SSHStream命令:

PS C:\> $SSHStream = New-SSHShellStream -Index 0
PS C:\> $SSHStream.WriteLine("uname -a")
PS C:\> $SSHStream.read()
Last login: Sat Mar 14 20:02:16 2015 from infidel01.darkoperator.com
[admin@localhost ~]$ uname -a
Linux localhost.localdomain 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 
UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[admin@localhost ~]$