Enable-PSRemoting 后无法创建远程 powershell 会话

Posted

技术标签:

【中文标题】Enable-PSRemoting 后无法创建远程 powershell 会话【英文标题】:Cannot create remote powershell session after Enable-PSRemoting 【发布时间】:2013-04-10 07:59:36 【问题描述】:

我不能远程进入任何机器来挽救我的生命!我已经尝试了我能找到的一切。如果有人可以排除故障或指导我,我将不胜感激,因为这将是添加到我的域的好工具。

设置:

    域内的客户端机器 服务器 域内或域外计算机 - 已虚拟化并用于 WSUS 计算机名称:wsustest 客户端服务器机器物理-计算机名称:epizzi-pc

步骤:

启用-ps-s-remoting 完成!在所有机器上 使用 * 配置的trustedhosts 或添加了客户端机器 以防万一,关闭公共配置文件的防火墙
输入-PSSession -ComputerName wsustest -Credential wsustest\administrator Enter-PSSession -ComputerName epizzi-pc -Credential epizzi-pc\administrador Enter-PSSession : 连接到远程服务器 Epizzi-pc 失败并显示以下错误消息: WinRM 无法处理请求。以下错误代码为 0x80090311 使用 Kerberos 身份验证时发生:当前没有可用于服务登录请求的登录服务器。 可能的原因有: - 指定的用户名或密码无效。 -Kerberos 在没有指定身份验证方法和用户名时使用。 -Kerberos 接受域用户名,但不接受本地用户名。 - 远程计算机名称和端口的服务主体名称 (SPN) 不存在。 -客户端和远程计算机在不同的域中,两个域之间没有信任。 检查上述问题后,请尝试以下操作: - 检查事件查看器以获取与身份验证相关的事件。 -改变认证方式;将目标计算机添加到 WinRM TrustedHosts 配置设置或使用 HTTPS 传输。 请注意,TrustedHosts 列表中的计算机可能未经过身份验证。 - 有关 WinRM 配置的更多信息,请运行以下命令:winrm help config。有关详细信息,请参阅 about_Remote_Troubleshooting 帮助主题。 在行:1 字符:1 + Enter-PSSession -ComputerName epizzi-pc -Credential epizzi-pc\administrador + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (epizzi-pc:String) [Enter-PSSession], PSRemotingTransportException + FullyQualifiedErrorId : CreateRemoteRunspaceFailed
输入-PSSession -ComputerName wsustest -UseSSL -Credential wsustest\administrator *Enter-PSSession:连接到远程服务器 wsustest 失败并显示以下错误消息:WinRM 无法完成操作。验证指定的计算机名称是 有效,该计算机可通过网络访问,并且 WinRM 服务的防火墙例外已启用并允许从该计算机进行访问。默认情况下,WinRM 公共配置文件的防火墙例外限制对同一本地子网中的远程计算机的访问。有关详细信息,请参阅 about_Remote_Troubleshooting 帮助主题。 在行:1 字符:1 + Enter-PSSession -ComputerName wsustest -UseSSL -Credential wsustest\administrato ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (wsustest:String) [Enter-PSSession], PSRemotingTransportException + FullyQualifiedErrorId : CreateRemoteRunspaceFailed* 错误:

【问题讨论】:

你能telnet到客户端的5985端口吗? 【参考方案1】:

我在远程连接到服务器时遇到了同样的问题,发现这篇博文很有帮助 - http://jeffgraves.me/2013/10/14/powershell-remoting/

对于我的具体情况,我做了以下操作:

在本地机器上

    winrm quickconfig(虽然已经配置好了) winrm s winrm/config/client '@TrustedHosts="myservername.domain"'

在远程机器上

    启用-psremoting -force Set-PSSessionConfiguration -ShowSecurityDescriptorUI -Name Microsoft.PowerShell -Force

【讨论】:

这种情况下"myservername.domain"指的是远程机器吗? 没错,正如 Jeff Graves 的帖子中提到的那样,'...您需要将远程系统添加到客户端系统上的 TrustedHosts 列表中'【参考方案2】:

我通过使用完全合格的登录解决了这个问题。我没有使用“netbiosdomain\accountname”,而是使用 fqdn\accountname,就像在 get-credential 提示中的 Microsoft.com\myaccount 中一样。可能并不适合所有人,但值得一试。

【讨论】:

【参考方案3】:

这就是我的做法。我在我的脚本中使用它。

# This is only done once
Read-Host -AsSecureString | ConvertFrom-SecureString | Out-File
c:\Windows\temp\securepass.txt

# Setup credentials
$SecureString = Get-Content c:\Windows\temp\securepass.txt | ConvertTo-SecureString
$mycredentials = New-Object -TypeName System.Management.Automation.PSCredential
    -ArgumentList "yourDomain\userID",$SecureString

# Open remote session:
$MyRSession = New-PSSession -ComputerName Computer1 -Credential $mycredentials
    -Authentication default

# Use remote session:
Enter-PSSession $MyRSession

【讨论】:

【参考方案4】:

摆脱-UseSSL。我启用了 PSRemoting,但在使用时遇到了问题。我想我可以稍后再看,但现在没关系。

【讨论】:

【参考方案5】:

如果客户端和服务器计算机之间没有信任,您必须在服务器端启用基本身份验证。通过切换服务器上的 WSMAN: 驱动器上的正确属性来执行此操作。由于先有鸡还是先有蛋的问题,您显然必须在控制台或远程桌面上以交互方式执行此操作:) 此外,这也可能会发挥作用:

http://www.nivot.org/blog/post/2009/10/30/PowerShell20EnablingRemotingWithVirtualXPModeOnWindows7

【讨论】:

好吧,我已将其添加到域中,但我还没有管理员帐户。所以我正在尝试使用本地管理员帐户凭据,我会尝试您的建议【参考方案6】:

我遇到了同样的错误currently no logon servers available。 该问题已通过使用用户 UPN 或 Username@Domain 而不是 Domain\Username 作为凭据得到解决。

【讨论】:

嗨,Kirt,欢迎来到 SO!请澄清一下你的答案。 收到同样的错误“目前没有可用于服务登录请求的登录服务器。”每当我使用辅助域的凭据执行调用命令或 enter-pssession 时。格式为 Domain\Username 的用户名会出错,而 username@domain 会在辅助域中顺利通过。主域无法解析旧的域\用户名格式并且需要 FQDN 或用户名@域格式,或者其他一些配置不正确。你也拼错了管理员【参考方案7】:

我已经使用 Enter-pssession 命令实现了远程会话,必须遵循这些确切的参数

$creds =  get-credential (the -credential parameter in enter-pssession does not work properly, thus u must         previously enter the object at another variable)
Enter-pssession -computername wsustest -authentication Default -credentials $creds

我还必须在受信任的主机 wsman 中设置客户端和远程服务器:空格

另一种肯定可行但我没有尝试过的解决方案是设置 https:,这更难做到。

感谢大家,您的 cmets 肯定会解决问题!

【讨论】:

您好,听起来您找到了解决方案……请记得勾选您答案左侧的复选标记,以向其他用户表明这是解决方案!或者,如果另一个答案大多数解决了它,请改为选中它旁边的复选标记。

以上是关于Enable-PSRemoting 后无法创建远程 powershell 会话的主要内容,如果未能解决你的问题,请参考以下文章

如何使用powershell远程连接服务器

如何使用powershell远程连接服务器

powershell远程管理服务器磁盘空间的实现代码

Windows域控管理—如何使用powershell远程连接服务器

远程管理

原创开启PowerShell远程管理