docker上的Powershell远程访问nanoserver

我创build了一个运行Docker的W10 VM(客户端),将微软/纳米服务器镜像托pipe并托pipe了一个镜像容器。

(教程在这里: https : //msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10 )

一切运行良好,即使主机可以ping客人W10下运行的容器。 但是我不能做的是将远程PowerShell连接到容器。

Enter-PSSession -ComputerName "<container ip>" -Credential ~\Administrator 

这会popup一个询问用户和密码的对话框。 我不能留下空白等 – 结果是访问被拒绝。 任何想法如何连接或设置nanoserver容器的密码?

现在我已经挣扎了好几天了。 不过,我认为我的问题稍微有点不同,因为我试图做一个Windowsdocker集装箱的Enter-PSSession,但从另一台机器,而不是容器主机。

在本教程中( http://dinventive.com/blog/2016/01/30/windows-server-core-hello-container/ ),这个人在一个主机PSSession中创build了一个嵌套的容器PSSession。

他使用此命令,该命令仅在最新版本的Powershell中可用。 (不在v3中)

 Enter-PSSession -ContainerId "<container ID>" 

通过这样做获得ID:

 Get-Container | fl 

您还必须检查您的Powershell版本,并根据需要进行升级。

检查PS版本:

 $PSVersionTable 

并下载Powershell最新版本: https : //www.microsoft.com/en-us/download/details.aspx? id = 50395

当使用IP地址连接到PS会话时,它会添加一些要求。您必须将远程设备configuration为使用ssl或具有在可信主机中列出的IP地址。

解决办法是尝试使用设备的主机名称,我已经取得了巨大的成功。 或者玩可信的主机列表。 根据我的经验,如果您在机器和远程机器上添加可信列表条目,它的工作也是一致的。 你也可以指定:

Set-Item WSMan:\localhost\Client\TrustedHosts -Value "*"

这将基本上将所有机器设置在可信主机列表中,它具有所有可信的机器的缺点,但在某些受限制的networking中它是可以接受的。 在主机和客户机上这样做似乎产生了最好的结果。

指定-Credentials它需要一个凭证对象,您可以在cmdlet之前创build一个凭证对象,以避免每次像这样input它:

 $secpass = convertto-securestring "Password Here" -asplaintext -force $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist "Username Here", $secpass Enter-PSSession -ComputerName "<container ip>" -Credential $cred 

在脚本中编码这样的证书是不好的做法,你应该着眼于正确地存储在脚本中的凭据,有很多很好的资源。