【问题标题】:What security setting is preventing Remote PowerShell 2.0 from accessing UNC paths什么安全设置阻止远程 PowerShell 2.0 访问 UNC 路径
【发布时间】:2014-10-01 03:10:10
【问题描述】:

这太疯狂了,我开始使用 PowerShell。当然,我需要远程进行管理员工作。

一个简单的

dir \\server\share\folder

只是拒绝工作,我收到此错误

Get-ChildItem : Cannot find path '\\server\share\folder' because it does not exist.
    + CategoryInfo          : ObjectNotFound: (\\server\share\folder:String) [Get-ChildItem], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

对我来说,很明显这是一个访问权限问题。我们在公司确实有一个域名。我在 VNC 上使用完全相同的用户帐户登录到服务器,我可以看到 UNC 路径。但是每当我尝试使用远程连接从我的桌面复制文件时。就是不行!!!!

我可以做很多其他事情,所以我很确定我与人有联系。

【问题讨论】:

  • 在dos shell命令'dir \\server\share\folder'中没有错误??
  • 没错。也许我应该写“dir \\MyServer\MyShare\MyFolder”。我确实发现我需要设置 CredSSP,我做了,但我仍然得到一个超时,然后是 Enable-WSManCredSSP :无法执行此命令,因为无法启用该设置。如果没有网络连接,就会发生这种情况。
  • 到目前为止,我使用 gpedit.msc 来允许在两台计算机上使用新的凭据。我设置了新的凭据策略,并使用了enable-wsmancredssp -role client -delegatecomputer computer1.domain.comenable-wsmancredssp -role server 命令。对于状态,我执行“Get-WSManCredSSP”并得到机器配置为允许将新凭据委派给以下目标:wsman/computer1.domain.com、wsm an/*.domain.com。这台计算机配置为从远程客户端计算机接收凭据。我找不到其他可以做的事情,它仍然无法正常工作!

标签: powershell powershell-2.0


【解决方案1】:

要使其正常工作,您必须同时配置本地和远程计算机。

在远程服务器上,运行以下命令:

 Enable-WSManCredSSP -Role server

如果您运行 Get-WSManCredSSP cmdlet 并获得以下输出,您将知道配置正确:

计算机未配置为允许委派新凭据。 此计算机配置为从远程客户端计算机接收凭据。

在您的本地计算机上,在管理 PowerShell 提示符下,您需要在 PowerShell 中允许凭据委派。运行以下命令:

 Enable-WSManCredSSP -Role Client -DelegateComputer <REMOTE_COMPUTER_NAME>

您可以使用 * 表示 REMOTE_COMPUTER_NAME 来启用所有服务器。

当您运行 Get-WSManCredSSP 并获得以下输出时,您将知道它已正确配置:

计算机配置为允许将新凭据委派给以下目标:wsman/REMOTE_SERVER_NAME
此计算机未配置为从远程客户端计算机接收凭据。

在您的本地计算机上,更新组策略以允许将您的凭据委派给远程服务器。

  1. 打开 gpedit.msc 并浏览到计算机配置 > 管理模板 > 系统 > 凭据委派。
  2. 双击“允许使用仅 NTLM 服务器身份验证委派新凭据”。
  3. 启用该设置并将构建服务器作为 WSMAN/BuildServerName 添加到服务器列表中。 (您可以通过输入 WSMAN/* 来启用所有服务器。)

然后,当您需要在远程服务器上运行命令时,您不能使用任何 *-PSSession 命令,因为 CredSSP 不能使用缓存的凭据。您必须使用Invoke-Command 启动会话,并使用 CredSSP 作为 Authentication 参数的值,如下所示:

Invoke-Command -ScriptBlock { # remote commands here } `
               -ComputerName <REMOTE_COMPUTER_NAME> `
               -Authentication CredSSP `
               -Credential <USERNAME>

【讨论】:

  • 很好的答案和很多很好的信息谢谢!不幸的是,我仍然有一个问题。我已经在组策略中进行了更改,但是当我在提升的 PS 窗口中运行以下命令时:“Enable-WSManCredSSP -role Client -DelegateComputer d-vasbiz01 -force”我收到以下错误:“Enable-WSManCredSSP:此命令无法执行,因为无法启用设置”有什么想法吗?
  • 我找到了!问题出在组策略编辑器中,我需要在我委派的服务器名称前加上“wsman/”前缀。正如答案所述,但我错过了!非常感谢您的回答。
  • 我不必执行“组策略”步骤,只需在正确的计算机上启用“客户端”和启用“服务器”角色。
【解决方案2】:

Powershell 还在运行远程脚本时使用 Internet Explorer 安全设置。

我发现,对于您尝试运行远程脚本的任何机器,如果我将远程机器的 unc 路径添加到我信任的 intrAnet 站点,我就可以运行脚本(假设我在 posh 中的执行策略是设置为 remotesigned...."set-executionpolicy remotesigned")。

我对使用和不使用 SQL 的多台服务器进行了大量管理,但我从未使用 Enable-WSManCredSSP 做过任何事情。

【讨论】:

    猜你喜欢
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多