windows - 从 Windows Powershell 脚本上传到 Artifactory

标签 windows rest powershell webclient artifactory

我已经通过 WebClient 对象从 Artifactory (Generic Repo) 成功下载了一个文件。我在通过相同方法上传文件时遇到问题。我正在尝试找出通过 Powershell 上传到我们服务器的最简单方法。

请注意,目前无法安装其他实用程序(如 Curl)。我正在编写自动化脚本并希望坚持使用基本的 Windows 2008 r2 服务器,不安装其他实用程序,因为我不能指望它们在所有服务器上都存在。

如果有人有使用 Rest API 的示例脚本,那就太完美了!

下载代码示例(有效):

$SOURCE = "https://artifactory.example.com/artifactory/net-generic-local/APP/BF_1.0.zip"  
$DESTINATION = ".\BF_1.0.zip"  
$AF_USER ="user"  
$AF_PWD ="password"  
$WebClient = New-Object System.Net.WebClient  
$WebClient.Credentials = New-Object System.Net.NetworkCredential($AF_USER,$AF_PWD)  
$WebClient.DownloadFile($SOURCE,$DESTINATION)  

这是上传代码的示例(不起作用):

$SOURCE = ".\BF_2.0.zip"  
$DESTINATION = "https://artifactory.example.com/artifactory/net-generic-local/APP/BF_2.0.zip"  
$AF_USER ="user"  
$AF_PWD ="password"  
$WebClient = New-Object System.Net.WebClient  
$WebClient.Credentials = New-Object System.Net.NetworkCredential($AF_USER, $AF_PWD)  
$URI = New-Object System.Uri($DESTINATION)  
$WebClient.UploadFile($URI,$SOURCE)  

这是我在上传时遇到的错误:

Exception calling "UploadFile" with "2" argument(s): "The remote server returned an error: (405) Method Not Allowed."  
At E:\transient\af_put.ps1:8 char:1  
+ $WebClient.UploadFile($URI,$SOURCE)  
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException  
    + FullyQualifiedErrorId : WebException  

最佳答案

我尝试了 Invoke-WebRequest 选项并且能够让它工作:

$URI = New-Object System.Uri("https://artifactory.example.com/artifactory/net-generic-local/APP/BF_2.0.zip")  
$SOURCE = ".\BF_2.0.zip"  
$AF_USER = "user"  
$AF_PWD = ConvertTo-SecureString "password" -AsPlainText -Force  
$CREDS = New-Object System.Management.Automation.PSCredential ($AF_USER, $AF_PWD)  

Invoke-WebRequest -Uri $URI -InFile $SOURCE -Method Put -Credential $CREDS  

必须创建一个 PSCrendential 对象,这样它就不会提示输入用户密码。但除此之外,这项工作完全符合我的需要。

关于windows - 从 Windows Powershell 脚本上传到 Artifactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36265752/

相关文章:

windows - Electron:是否可以检索文件上次访问的日期和时间

javascript - 在 VM 共享目录上运行 `grunt`

c++ - 使用 MFC 创建 WM_USER 处理程序

java - Spring 休息: How to validate Date passed in request body

java - Elasticsearch Java TermVectorRequest (_termvector)

c++ - 多个显示器上的 SetConsoleWindowInfo

powershell - 如何使 PowerShell 选项卡补全像 Bash 一样工作

windows - 为什么 ProcessStartInfo 的参数为空?

git - 在 PowerShell 错误消息中使用 touch 命令创建新文件

c# - 创建通知中心 - 仅 REST(无 SDK)