Windows 计算机文件复制 - DevOps 任务和 IP 地址
Windows Machine File Copy - DevOps task and IP address
我正在 Azure DevOps 上构建发布管道。我发布的一部分是将一堆文件复制到 Azure VM。据我了解,目标机器需要打开PowerShell 5986端口。
我有一个打开了端口 5986 的虚拟机(我通过使用 "PowerShell on Target Machines" 任务在这个虚拟机上远程调用一些命令来验证这一点)。
我添加了 "Windows Machine File Copy" 任务并填写了字段:
- 资源
- 机器
- 管理员登录
- 密码
- 目标文件夹
在"Machines"字段中,我输入了目标机器的IP。
由于 运行 发布,我收到一个错误:
Failed to Create PSDrive with Destination:
'\11.11.11.11\C$\TargetDirectory',
ErrorMessage: 'The network path was not found' The network path was
not found
我也尝试将 IP 地址与端口放在一起,格式为:11.11.11.11:5986
然后,我得到了这个错误:
Cannot convert value ".97.151.221:5986" to type "System.Uri".
Error: "Invalid URI: The hostname could not be parsed."
文档 (https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/windows-machine-file-copy?view=azure-devops) 表示允许带有端口的 IP 地址。
这里有什么问题?
答案很简单,DevOps 任务实际上是 运行 您 VM 上的 PowerShell 并试图创建 PSDrive。
尝试使用下面屏幕截图中提到的任务:
解决方案是转到目标服务器并共享将要复制文件的目录。在 Windows 中,只需转到目录的属性,共享选项卡,并将其共享给在 VSTS 任务中使用的用户。
问题是因为您无法使用该任务跨 Windows 域 复制文件!也就是说,如果你在主机A上搭建,想复制文件到主机B,那么A和B必须在同一个Windows域,否则你会得到类似
的错误
##[error]Failed to Create PSDrive with Destination: '\your-server-name-or-ip\some\path', ErrorMessage: 'The network path was not found'
也就是说,如果您使用的是托管代理,则您无法将包含该任务的文件复制到您拥有的任何主机,无论它是否具有 public IP ,或 FQDN,因为它们不在同一个 Windows 域中!
您有两种解决方法:
- 如果目标是 Azure VM 或 Azure 存储,请使用 Azure 文件复制任务
- 使用私有托管代理并确保你的目标主机和你的私有代理在同一个Windows域
最后但并非最不重要的一点,文档应该说清楚!解决问题浪费了我很多时间!
我在执行这些操作时遇到了完全相同的错误:
最初在我的发布管道中,我有一个代理作业,我在该作业下创建了一个Windows机器文件复制任务并填写所有细节正确。我用我的目标服务器(一个 Windows Azure VM)的 public IP 地址设置了机器字段,我总是收到你报告的这个错误。
我尝试改用 Azure 文件复制任务,但我遇到了另一个问题(错误消息:无法获取 ResourceGroup 中所有资源的 FQDN:{resourceGroupName})我无法解决费了好大劲才搞定。
这是对我有用的解决方案:
我 运行 不是 运行 代理作业,而是 部署组作业。使用部署组,我不需要 IP 地址即可连接到我的 VM。为您的 Azure VM 设置部署组非常简单并且解释得很好 here
我在我添加的部署组作业下创建了一个 Windows 机器文件复制任务。我为该任务填写了相同的详细信息,除了我在机器字段中输入了 计算机名称 而不是 Windows VM 的 IP 地址和文件复制任务 运行成功!
希望对您有所帮助
转到目标文件夹,右键单击文件夹 select 属性,共享选项在那里,单击那个并共享所有人选项在那里
我正在 Azure DevOps 上构建发布管道。我发布的一部分是将一堆文件复制到 Azure VM。据我了解,目标机器需要打开PowerShell 5986端口。
我有一个打开了端口 5986 的虚拟机(我通过使用 "PowerShell on Target Machines" 任务在这个虚拟机上远程调用一些命令来验证这一点)。 我添加了 "Windows Machine File Copy" 任务并填写了字段: - 资源 - 机器 - 管理员登录 - 密码 - 目标文件夹
在"Machines"字段中,我输入了目标机器的IP。
由于 运行 发布,我收到一个错误:
Failed to Create PSDrive with Destination: '\11.11.11.11\C$\TargetDirectory', ErrorMessage: 'The network path was not found' The network path was not found
我也尝试将 IP 地址与端口放在一起,格式为:11.11.11.11:5986
然后,我得到了这个错误:
Cannot convert value ".97.151.221:5986" to type "System.Uri". Error: "Invalid URI: The hostname could not be parsed."
文档 (https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/deploy/windows-machine-file-copy?view=azure-devops) 表示允许带有端口的 IP 地址。
这里有什么问题?
答案很简单,DevOps 任务实际上是 运行 您 VM 上的 PowerShell 并试图创建 PSDrive。
尝试使用下面屏幕截图中提到的任务:
解决方案是转到目标服务器并共享将要复制文件的目录。在 Windows 中,只需转到目录的属性,共享选项卡,并将其共享给在 VSTS 任务中使用的用户。
问题是因为您无法使用该任务跨 Windows 域 复制文件!也就是说,如果你在主机A上搭建,想复制文件到主机B,那么A和B必须在同一个Windows域,否则你会得到类似
的错误##[error]Failed to Create PSDrive with Destination: '\your-server-name-or-ip\some\path', ErrorMessage: 'The network path was not found'
也就是说,如果您使用的是托管代理,则您无法将包含该任务的文件复制到您拥有的任何主机,无论它是否具有 public IP ,或 FQDN,因为它们不在同一个 Windows 域中!
您有两种解决方法:
- 如果目标是 Azure VM 或 Azure 存储,请使用 Azure 文件复制任务
- 使用私有托管代理并确保你的目标主机和你的私有代理在同一个Windows域
最后但并非最不重要的一点,文档应该说清楚!解决问题浪费了我很多时间!
我在执行这些操作时遇到了完全相同的错误:
最初在我的发布管道中,我有一个代理作业,我在该作业下创建了一个Windows机器文件复制任务并填写所有细节正确。我用我的目标服务器(一个 Windows Azure VM)的 public IP 地址设置了机器字段,我总是收到你报告的这个错误。
我尝试改用 Azure 文件复制任务,但我遇到了另一个问题(错误消息:无法获取 ResourceGroup 中所有资源的 FQDN:{resourceGroupName})我无法解决费了好大劲才搞定。
这是对我有用的解决方案:
我 运行 不是 运行 代理作业,而是 部署组作业。使用部署组,我不需要 IP 地址即可连接到我的 VM。为您的 Azure VM 设置部署组非常简单并且解释得很好 here
我在我添加的部署组作业下创建了一个 Windows 机器文件复制任务。我为该任务填写了相同的详细信息,除了我在机器字段中输入了 计算机名称 而不是 Windows VM 的 IP 地址和文件复制任务 运行成功!
希望对您有所帮助
转到目标文件夹,右键单击文件夹 select 属性,共享选项在那里,单击那个并共享所有人选项在那里