这很疯狂,我开始使用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路径。但每当我尝试使用远程连接从桌面复制文件时。它只是不起作用!!!!
我可以做很多其他的事情,所以我很肯定我有联系。
答案 0 :(得分:15)
要使其正常工作,您必须配置本地和远程计算机。
在远程服务器上,运行以下命令:
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
此计算机未配置为从远程客户端计算机接收凭据。
在本地计算机上,更新组策略以允许将凭据委派给远程服务器。
然后,当您需要在远程服务器上运行命令时,您不能使用任何* -PSSession命令,因为CredSSP无法使用缓存凭据。您必须使用Invoke-Command
启动会话,并使用CredSSP作为Authentication参数的值,如下所示:
Invoke-Command -ScriptBlock { # remote commands here } `
-ComputerName <REMOTE_COMPUTER_NAME> `
-Authentication CredSSP `
-Credential <USERNAME>
答案 1 :(得分:0)
Powershell还在运行远程脚本时使用Internet Explorer安全设置。
我发现,对于你试图运行远程脚本的任何机器,如果我将远程机器的unc路径添加到我信任的intrAnet站点,那么我可以运行脚本(假设我的执行策略是豪华的设置为remotesigned ....“set-executionpolicy remotesigned”)。
我为使用和不使用SQL的多个服务器进行了大量管理,而且我从未对Enable-WSManCredSSP做过任何事情。