[ARCHIVED] Setting User Avatars Powershell
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am a systems admin at a community college that uses a local active directory domain. As such we use powershell to automate our systems. I have got a working solution for sis imports, but those do not include user avatars. Thus I have written a script to do so in powershell, however I cannot seem to get the uri correct. This is the code I am using (with confidential parts substituted with <*>) :
$Token = '<token>'
$headers = @{"Authorization"="Bearer "+$Token}
$date = get-date -format "yyyyMMdd"
$csv = import-csv "<server-path>\$date\1usersAcct.csv"
foreach ($_ in $csv)
{
$id = $_."user_id"
$login = $_."login_id"
$uri = "https://<canvas test environment>/api/v1/users/sis_user_id:$id/"
$filename = "<path to photo>.jpg"
if (Test-Path $filename)
{
Invoke-RestMethod -uri $uri -Headers $headers -Method Put -InFile $filename -ContentType "image/jpg"
}
Write-Host $login
}
Everything here is working except I get a unprocessable entity error whenever I add anything to the end of the URI like /avatars, /profile, /profile pictures. /files/28290, /folders/28290, and I have tried many others. 28290 is the profile pictures folder id. Yet, when I just end it at the uri shown above it lists all of the items in a users container, such as content, status code, status description and the like. All this is to say I believe I just need the correct uri, and cannot find the uri I am looking for anywhere on the canvas forums, or on other forums like stack overflow. Any help would be appreciated.
This discussion post is outdated and has been archived. Please use the Community question forums and official documentation for the most current and accurate information.