【发布时间】:2019-07-01 21:03:34
【问题描述】:
总结
作为我们在 DevOps 上构建过程的一部分,我正在尝试将构建工件复制到内部网络共享上的特定文件夹中。问题是,虽然构建代理在我们的内部网络上,但 DevOps 服务无权访问任何网络共享。
我想我可以通过在执行工作的 PowerShell 脚本中提供有效的登录凭据来解决此问题,但我无法让凭据被接受。虽然在没有凭据的情况下查看文件夹结构似乎是可能的,但实际上进行修改(创建/删除文件和/或文件夹)会给我访问被拒绝或身份验证被拒绝的消息。
我的尝试
一开始,我在做一个很简单的创建文件夹命令:
# NETWORK_SHARE would be the internal IP of the target public folder on the network, like 12.345.678.90
New-Item -Path "NETWORK_SHARE\path\to\folder" -ItemType Directory
但这给了我一个拒绝访问错误:
New-Item : 对路径“文件夹”的访问被拒绝。
然后我做了一些研究,并认为如果我提供有效用户的凭据,它就可以让我这样做。这是简单的测试命令。它应该在指定位置创建一个新文件夹:
$username = "MyUsername"
$password = ConvertTo-SecureString "MyPassword" -AsPlainText -Force
$credentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $username, $password
# NETWORK_SHARE would be the internal IP of the target public folder on the network, like 12.345.678.90
Invoke-Command -ComputerName "NETWORK_SHARE" -ScriptBlock { New-Item -Path $args[0] -ItemType Directory } -Cred $credentials -Authentication Credssp -ArgumentList "NETWORK_SHARE\path\to\folder"
我得到的错误如下:
连接到远程服务器 NETWORK_SHARE 失败并显示以下错误消息:WinRM 客户端无法处理请求。信用证 当前在客户端配置中禁用了身份验证。更改客户端配置并再次尝试请求。还必须在服务器配置中启用 CredSSP 身份验证。此外,必须编辑组策略以允许将凭据委派给目标计算机。使用 gpedit.msc 并查看以下策略:计算机配置 -> 管理模板 -> 系统 -> 凭证委派 -> 允许委派新凭证。验证它是否已启用并配置了适合目标计算机的 SPN。例如,对于目标计算机名称“myserver.domain.com”,SPN 可以是以下之一:WSMAN/myserver.domain.com 或 WSMAN/*.domain.com
它甚至看起来都没有尝试进行身份验证,它只是立即吐出上面的错误。我不确定如何进行调试。如有必要,我可以更改构建代理,但我无法更改目标网络共享上的任何配置,因为这是由 IT 团队维护的,而且他们对将我们的驱动器开放到 Internet 非常严格。有没有办法成功验证以在网络共享上创建一个新文件夹而不更改目标上的任何配置?
【问题讨论】: