【发布时间】:2018-08-26 18:56:33
【问题描述】:
创建新用户的代码:
function New-DropBoxUser {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$true, ValueFromPipeline=$true, Position=0)]
[string]$FullName
)
# Split name into username #
$FirstName, $LastName = $FullName.split(' ')
$UserName = ($FirstName[0]+$LastName).toLower()
$email = "$UserName@mycomp.com"
$Body = @{
"new_members" = @(@{
"member_email" = $email;
"member_given_name" = $FirstName;
"member_surname" = $LastName;
"send_welcome_email" = "true";
"role" = @{
".tag" = "member_only"
}
})
}
Write-Host ''
Write-Host 'Creating DropBox User...' -ForegroundColor 'Yellow' -BackgroundColor 'Black'
$AuthToken = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
$token = "Bearer $AuthToken"
$response = Invoke-RestMethod `
-Method Post `
-Uri "https://api.dropboxapi.com/2/team/members/add" `
-Headers @{ Authorization = $token } `
-ContentType "application/json; charset=utf-8" `
-Body (ConvertTo-Json $Body)
}
输出:
Invoke-RestMethod : 远程服务器返回错误:(400) Bad Request。
任何人,请告诉我解决方法。我尝试使用相同的$token 端点“团队/成员/列表”来获取用户列表,它可以工作。
我对 Dropbox API 完全陌生,所以我的代码是从 Google 借来的,虽然我很擅长 PowerShell,但我尝试使用许多不同的代码进行修补,但都没有奏效。
【问题讨论】:
-
错误消息可能包含有关您做错了什么的提示。我建议您通过将
-ErrorVariable irmError添加到Invoke-RestMethod调用来捕获变量中的错误,然后再查看$irmError -
@MathiasR.Jessen,我尝试了 -ErrorVariable 但变量没有数据。此错误未捕获。
-
Invoke-RestMethod ` -Method Post ` -Uri "api.dropboxapi.com/2/team/members/add" ` -Headers @{ Authorization = $token } ` -ContentType "application/json; charset=utf-8" ` -Body (ConvertTo-Json $Body) ` -ErrorVariable $ero Write-Host $ero
-
试过try catch也捕捉异常,
-
尝试 { Invoke-RestMethod ` -Method Post ` -Uri "api.dropboxapi.com/2/team/members/add" ` -Headers @{ Authorization = $token } ` -ContentType "application/json; charset=utf-8" ` -Body (ConvertTo-Json $Body) ` -ErrorVariable $ero ` -ErrorAction Stop Write-Host $ero } catch {$ErrorMessage = $_.Exception.Message Write-Host $ErrorMessage}
标签: api powershell dropbox