【问题标题】:PowerShell 2.0: Accessing Windows Shares during a Remote SessionPowerShell 2.0:在远程会话期间访问 Windows 共享
【发布时间】:2011-01-15 01:56:14
【问题描述】:

我在 PowerShell 远程会话中访问共享网络位置时遇到问题。

在 PowerShell 提示符下,我输入一个新会话:

Enter-PSSession server1

会话已正确创建和输入。然后我尝试列出共享的内容:

dir \\server2\share1

响应是这个错误:

Get-ChildItem : Cannot find path '\\server2\share1' because it does not exist.

但是,如果我将桌面远程访问到 server1,调出 PowerShell,并执行相同的 dir 命令,则内容会正确列出。

我已经尝试了各种使用凭据的方法,但这似乎无法解决问题。我还通过“whoami”命令确认我在两个示例中具有相同的身份。

这是什么原因造成的?

【问题讨论】:

  • 对我来说,在目录路径前添加“Microsoft.PowerShell.Core\FileSystem::”是可行的

标签: powershell powershell-2.0


【解决方案1】:

如果您不能如上所述使用凭据委托,您可以使用 explicit 凭据在远程会话中挂载(或仅如下进行身份验证)远程共享,例如

[server1] ps> net use \\server2\share * /user:username
(prompts for password)
[server1] ps> dir \\server2\share
(listing)

这个问题与 powershell 本身无关;您正在尝试在远程会话中将本地凭据重播到第三个位置,并且违反了 NTLM“双跳”限制。

【讨论】:

  • 不适用于 *(仅当在命令行上输入明文密码时):net:发生系统错误 1312。 + CategoryInfo : NotSpecified: (系统错误 1312 已发生。:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError 指定的登录会话不存在。它可能已经被终止了。
  • hmm.. 它必须是来自本机控制台应用程序 (net.exe) 的交互式提示,它会破坏远程会话。我想知道这是否也会在 powershell 3.0 中爆炸 - 你测试了什么版本?
【解决方案2】:

阅读“证书授权”部分 Here - Credit to Keith Hill 如果您还没有这样做,请执行这些步骤。

【讨论】:

  • 不错,看起来很有希望,我会尽快尝试。感谢您的链接,它看起来有很多有用的信息。
  • 呃-哦,坏消息。按照那里的说明,我在远程服务器上执行了这个命令:Enable-WSManCredSSP –Role Server。它产生了这个错误:Enable-WSManCredSSP:此 Powershell cmdlet 在以下平台上不可用:Windows XP 和 Windows Server 2003。(它正在运行 Server 2003)
  • 并且 CredSSP 客户端应该可用于 WinXP SP3,但 CmdLet 仍然拒绝。 support.microsoft.com/kb/951608
【解决方案3】:

另一个选项是kerberos资源delegation

例如:

$server_name = "我的服务器" $servers = @(get-adcomputer -identity $server_name)

$target = "目标服务器" $tgt_srv = get-adcomputer -identity $target

Set-ADComputer -Identity $to_delegate -PrincipalsAllowedToDelegateToAccount $servers

【讨论】:

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