2015-04-01 41 views
1

我在PowerShell脚本上工作一点我可以通过REST调用修改URL上的文件和文件夹,所以使用Invoke-RestMethod,但我想这适用于任何调用webrequests或者一般地试图使它在curl“username:password @ host:port/path”中的作用等同于在linux中工作。基本身份验证脚本只能在第一时间工作

我的问题是我需要像卷曲一样传递凭证。当我通过凭证使用-Credential 时,我的第一个电话正常工作问题是,当我想要在脚本中执行进一步的操作或在第二次使用它之后,我不再被提示,所以我的脚本只是挂起。

代码的相关部分:

$securepassword = ConvertTo-SecureString "mypass" -AsPlainText -Force 
$credentials = New-Object System.Management.Automation.PSCredential("myuser",$securepassword) 
$URI = "http://myhost:myport/mypath/" 

Invoke-RestMethod -Uri $URI -Credential $credentials -Method DELETE 

这工作完全正常运行它的第一次,但第二次就挂,我猜测这是因为凭据提示不来,因为它被存储一段时间。不过,我可以使用curl立即打几个电话,但不会有任何问题。

回答

0

对我来说,这听起来像你需要在随后的请求中传递某种授权项目。在我构建的几个REST应用程序中,它通常是这样的:

  1. 发送具有凭据的请求。
  2. 接收指示认证/登录成功的响应。响应应该包含一些附加到后续请求的项目(一个关键?)。
  3. 在随后的请求中包含授权令牌。我构建的最新REST应用程序使用userID来获取API密钥,然后在随后的请求中,它会在标头'x-api-key' => 'theActualKeyValue'中发送密钥/ val对。也许你可以做类似的事情。