【问题标题】:New-PSSession - WinRM cannot process the requestNew-PSSession - WinRM 无法处理请求
【发布时间】:2019-01-11 06:25:04
【问题描述】:

我正在尝试使用 PowerShell 脚本在远程服务器上列出 IIS 中的所有网站。以下是我尝试连接到服务器的方式:

$s = New-PSSession -ComputerName $Server

但是当我运行脚本时出现以下错误:

New-PSSession : [Server] 连接到远程服务器服务器失败 以下错误消息:WinRM 无法处理该请求。以下错误 使用 Kerberos 身份验证时发生:找不到计算机服务器。 验证计算机是否存在于网络上,并且提供的名称是 拼写正确。有关详细信息,请参阅 about_Remote_Troubleshooting 帮助主题。 在 C:\AppServers\Application.ps1:8 char:8 + $s = New-PSSession -ComputerName 服务器 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [New-PSSession], PSRemotingTransportException + FullyQualifiedErrorId : NetworkPathNotFound,PSSessionOpenFailed

服务器已启用接收远程请求。

更新:

以下是我尝试运行的完整功能:

function audit-servers {  
if (Test-path "ApplicationsOnTheServer.txt") {Remove-Item "ApplicationsOnTheServer.txt"}
if (Test-Path "ServersList.txt") {
foreach ($server in Get-Content .\ServersList.txt) {

    "Application Server : $server`n" | out-file -FilePath "ApplicationsOnTheServer.txt" -Append
    "Applications list:" | out-file -FilePath "ApplicationsOnTheServer.txt" -Append
    $s = New-PSSession -ComputerName $server -Credential domainabc\myname
    Invoke-Command -Session $s -ScriptBlock {Import-Module WebAdministration;Get-iissite} | out-file -FilePath "ApplicationsOnTheServer.txt" -Append
}
} else {
    "ServersList.txt file is missing"
     break;
}
"`nAll Done!`n"}

ServersList.txt 有 atstappvmabc.tsteag.com

【问题讨论】:

  • 尝试将Credential 参数与域用户一起传递给New-PSSession。传递凭据(即使基本上使用同一用户)可能会解决 Kerberos 问题。
  • 错误消息明确指出您将Server 而不是$Server 传递给-ComputerName,这是不正确的,除非您的服务器名称实际上是Server。如果更正后您仍然收到错误,它将与您在问题中粘贴的内容不同。
  • 我尝试了凭据参数并尝试了域名以及没有成功。

标签: powershell


【解决方案1】:

错误信息明确指出您想连接到名为Server 的服务器,而不是连接到名称存储在$Server 变量中的服务器(粗体文本实际上是您尝试连接的服务器的名称) :

New-PSSession : [Server] 连接到远程服务器 Server 失败

如果您尝试连接到名为 MyServer01.example.com 的服务器,您将收到如下错误(截断):

PS C:\> New-PSSession -ComputerName "MyServer01.example.com"

New-PSSession : [MyServer01.example.com] 连接到远程服务器 MyServer01.example.com 失败 (...)

即使你声明你尝试执行

$s = New-PSSession -ComputerName $Server

你实际执行(注意缺少美元符号)

$s = New-PSSession -ComputerName Server

以上内容也取自您粘贴的错误消息。我建议先跳过变量并尝试在命令本身中输入服务器路径以验证它是否正常工作:

$s = New-PSSession -ComputerName "MyServer01.example.com"

然后,如果可行,将路径放入变量中并再次测试。

【讨论】:

  • 在输入相同内容并思考之后,请稍等,我的假设是服务器名称已从错误消息中删除。如果这实际上是你描述的错误,我会给你买一个三明治,并学会更多地相信我的直觉。
  • $Server 在执行函数时被分配了一个服务器名称。我试过用域名和没有。结果相同。我也使用了 Credential 参数,但没有运气。 Test-Connection 完美适用于同一台服务器。
  • 请添加有关当前代码 (minimal reproducible example) 的信息以及您收到的错误信息。目前我没有任何信息可以重现您的错误。请确保不要忘记美元符号。
  • 我已经用我正在使用的完整功能更新了这个问题。
  • 但是您仍然没有用收到的错误更新问题,并且您使用的代码不包含您提到的正在工作的Test-Connection 部分。
【解决方案2】:

您收到FullyQualifiedErrorId : NetworkPathNotFound 的错误通常意味着您传递给-ComputerName 参数的名称无法解析。

也许尝试运行Test-Connection $Server 来解决那里发生的问题。

【讨论】:

  • "Test-Connection $Server" 工作正常,但新会话不能
【解决方案3】:

您的变量 $Server 包含错误的值。您必须为 $Server 分配有效的计算机名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-14
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 2013-06-13
    • 2016-10-28
    • 1970-01-01
    相关资源
    最近更新 更多