首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问受密码保护的网络共享(双/第二跳限制)

访问受密码保护的网络共享(双/第二跳限制)
EN

Stack Overflow用户
提问于 2019-01-08 20:21:37
回答 1查看 747关注 0票数 2

这是关于著名的双跳限制,看上去微不足道,至少有10个解决方案,但我甚至找不到一个适合我的设置。

这里是我的环境:我在Windows 10上有大约50台虚拟机,每个VM运行在一个单独的硬件上--我们使用虚拟机,因为我们的IT人员声称它更容易维护和物理上的虚拟机,我个人不喜欢VM,但这并不取决于我。我们在一个非域环境中,没有Active,我们使用一个工作组,每台机器都是单独管理的。

我的目标是优化PC管理,如安装软件、注册/启动服务等--我需要在所有机器上一次完成这些工作,而不是每项任务执行50次。我设法相对较快地运行了PowerShell远程,但很快我就无法访问任何需要额外身份验证的网络资源(我们所有的网络共享都需要LDAP身份验证)。

到目前为止我尝试过的。

  1. 从会话重新进行身份验证,描述了这里: $mappedDrive = @{ Name = "u“PSProvider = "FileSystem”PSProvider= "\bladefs\share2“凭据= 'svetlozar.draganov‘} Invoke-Command -ComputerName bw33 -ScriptBlock {$mappedDrive@u:mappedDrive-Content -Path \bladefs\share2\text.txt Get-PSDrive Remove-PSDrive -Name "u”-PSDrive} -Credential呈现 上面的命令所做的是通过请求两个身份验证的Invoke-Command运行远程命令,第一个身份验证是连接到机器bw33,然后使用New-PSDrive命令将另一个身份验证发送到已经与bw33建立的会话,用用户名和密码挂载网络共享。这有时在非常罕见的情况下确实有效,但我无法确定它何时起作用,为什么在大多数情况下不起作用。尽管我执行的是完全相同的PowerShell脚本十几次,但它只对其中的一小部分起作用,而其他部分则是这样说的: 指定的登录会话不存在。它可能已经终止了+ CategoryInfo : InvalidOperation:(u:PSDriveInfo) PSDriveInfo,Win32Exception + FullyQualifiedErrorId : CouldNotMapNetworkDrive,Win32Exception+ PSComputerName : bw33无法找到路径'\bladefs\share2\text.txt‘,因为它不存在。+ CategoryInfo : ObjectNotFound:(\bladefs\share2\text.txt:String) Get-Content,ItemNotFoundException + FullyQualifiedErrorId : PathNotFound,ItemNotFoundException+ PSComputerName : bw33 实际上,我在下面的视频中捕捉到了一个工作和不工作的尝试:8qgpI2kmlUDgF。 正如您可以看到的,在第一次执行时,一切都很好,PSDrive被成功地映射,我可以到达\bladefs\share2网络路径,但是在第二次执行时,我得到了一些错误。
  2. 与上面类似,但不是通过PSDrive命令映射驱动器,而是通过带有用户名和密码的NET USE命令映射驱动器。 调用-命令-ComputerName bw33 -Credential呈现-ScriptBlock {净使用x:\bladefs\share2 /user:svetlozar.draganov密码测试-Path \bladefs\share2 } 这与第一种情况一样,有时起作用,但同样只起作用一次,所有后续执行都会导致以下错误: 系统错误1312已经发生。+ CategoryInfo : NotSpecified:(系统错误1312已发生.:String) [],RemoteException + FullyQualifiedErrorId : NativeCommandError + PSComputerName : bw33不存在指定的登录会话。它可能已经被终止了。 下面是另一个尝试的视频,它再次捕获该命令的工作执行和非工作执行:https://drive.google.com/uc?id=1wP20sbmXMfWu4dvjsdF8REDWgNxiKAS-
  3. 使用CredSSP描述了这里: $session =新-PSSession -cn bw33 -Credential呈现-Authentication Credssp调用-命令-Session $session -ScriptBlock {Test-Path \bladefs\share2} 虽然这是解决这个问题最流行和不安全的方法,但我决定尝试一下,因为推荐的选项无效。不幸的是,我用这种方法也遇到了麻烦,以下是错误: :bw33连接到远程服务器bw33失败,出现以下错误消息:不支持请求。有关更多信息,请参见about_Remote_Troubleshooting帮助主题。一行:1 char:12 + $session = New-PSSession -cn bw33 -Credential -Authentication .+~+ CategoryInfo : OpenError: OpenError New-PSSession,PSRemotingTransportException + FullyQualifiedErrorId : 50,PSSessionOpenFailed Invoke-命令:无法验证参数‘会话’上的参数。参数为空或空。提供一个非空或空的参数,然后再试一次该命令。行:2字符:25+调用-命令Microsoft.PowerShell.Commands.InvokeCommandCommand -Session $session -ScriptBlock {Test-Path \bladefs\.++ CategoryInfo : InvalidData:(:) Invoke-Command,ParameterBindingValidationException + FullyQualifiedErrorId : ParameterArgumentValidationError,CategoryInfo 视频分别是:https://drive.google.com/uc?id=10tbAq6vvRsvT-1SGqOzvPgIPcM-MT8CJ
EN

回答 1

Stack Overflow用户

发布于 2019-01-08 21:03:32

我有一个有点类似的问题,你前一段时间,但我有一个域加入了安装程序。只要你有凭据,那就不会有多大的区别。在您的示例中,您似乎没有使用实际的PSCredential对象,这可能是您的问题。如果您可以使用相同的凭据连接到远程系统,然后返回到您的共享,那么这应该可以:

代码语言:javascript
复制
$Password = Read-Host -Prompt 'Enter Password' -AsSecureString
$Credential = New-Object -TypeName PSCredential('username',$Password)
$mappedDrive = @{
  Name = "u"
  PSProvider = "FileSystem"
  Root = "\\bladefs\share2"
  Credential = $Credential
}
Invoke-Command -ComputerName bw33 -Credential $Credential -ScriptBlock {
  New-PSDrive @Using:mappedDrive
  # Do Stuff...
  Remove-PSDrive -Name "u"
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54099165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档