2011-12-02 56 views
14

这简直太疯狂了,我开始使用PowerShell。当然,我需要远程执行Admin工作。什么安全设置可以阻止远程PowerShell 2.0访问UNC路径

简单

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路径。但是,每当我尝试从远程连接从我的桌面复制文件。它只是不会工作!

我可以做很多其他的事情,所以我是积极的,我连接。

+0

在dos shell命令'dir \\ server \ share \ folder'中没有提示错误? –

+0

这是正确的。也许我应该写“dir \\ MyServer \ MyShare \ MyFolder”。我确实发现我需要设置CredSSP,我做了,但仍然收到一个超时值,然后是Enable-WSManCredSSP:由于无法启用该设置,因此无法执行此命令。如果没有网络连接,就会发生这种情况。 –

+0

现在,我使用gpedit.msc来允许在这两台计算机上使用新的证书。我设置了新的证书策略,并使用'enable-wsmancredssp -role client -delegatecomputer computer1.domain.com'和'enable-wsmancredssp -role server'命令。对于状态,我执行'Get-WSManCredSSP',我得到 **机器配置为允许将新的凭据委托给以下目标:wsman/computer1.domain.com,wsm 和/ *。domain.com。这台计算机被配置为从远程客户端计算机接收凭证。**我找不到其他任何人要执行的操作,但它仍然无法运行! –

回答

15

为了使其发挥作用,您必须配置本地和远程计算机。

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

Enable-WSManCredSSP -Role server 

你会知道,如果你运行Get-WSManCredSSP cmdlet的事情正确confgured并得到下面的输出:

The machine is not configured to allow delegating fresh credentials. This computer is configured to receive credentials from a remote client computer.

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

Enable-WSManCredSSP -Role Client -DelegateComputer <REMOTE_COMPUTER_NAME> 

您可以通过使用*为REMOTE_COMPUTER_NAME使所有服务器。

The machine is configured to allow delegating fresh credentials to the following target(s): wsman/REMOTE_SERVER_NAME
This computer is not configured to receive credentials from a remote client computer.

在本地计算机,更新组策略,让您的凭据委托给:

你会知道这个,当你运行Get-WSManCredSSP并得到下面的输出配置正确远程服务器。

  1. 打开gpedit.msc并浏览到Computer Configuration> Administrative Templates> System> Credentials Delegation。
  2. 双击“允许使用仅限NTLM的服务器身份验证委托新凭据”。
  3. 启用设置并将生成服务器添加到WSMAN/BuildServerName的服务器列表中。 (您可以通过输入WSMAN/*启用所有服务器。)

然后,当你需要在远程服务器上运行命令,你不能使用任何的* -PSSession的命令因为能的CredSSP不使用缓存的凭据。你必须开始使用Invoke-Command的会话,使用的CredSSP作为值的验证参数,像这样:

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

很好的答案和很多很好的信息谢谢!不幸的是,我仍然有一个问题。我已经在组策略中进行了更改,但是当我在提升的PS窗口中运行以下内容时:“Enable-WSManCredSSP -role Client -DelegateComputer d-vasbiz01 -force”出现以下错误:“Enable-WSManCredSSP:This command不能执行,因为设置无法启用“任何想法? –

+0

我找到了!问题出在组策略编辑器中,我需要将我委派的服务器的名称加上“wsman /”的前缀。正如答案所述,但我错过了!非常感谢您的答复。 –

+0

我不必在正确的计算机上执行“组策略”步骤,只需启用“客户端”并启用“服务器”角色即可。 – rob

0

PowerShell还上运行远程脚本使用Internet Explorer的安全设置。我发现,无论你想要运行远程脚本的机器,如果我将远程机器的unc路径添加到我的受信任的intrAnet站点,我可以运行脚本(假设我的执行策略在posh被设置为remotesigned ....“set-executionpolicy remotesigned”)。

对于有和没有SQL的多个服务器,我做了大量的管理,而且我从来没有对Enable-WSManCredSSP做过任何事情。

相关问题