Я пишу скрипт для создания новых контактов для пользователя в Exchange Online. Используя Microsoft Graph, я могу легко создавать контакты с помощью POST
до https://graph.microsoft.com/v1.0/me/contactFolders...
. Я также могу запросить фотографию у другого контакта с помощью GET
на https://graph.microsoft.com/v1.0/me/contactFolders/$($contactFolder)/contacts/$($contactId)/photo/$value
и сохранить результат, затем передать значение фотографии в теле PATCH
обратно на этот адрес и обновить фотографию для других контактов.
Что я не могу понять, как это сделать, так это прочитать файл с диска (в моем случае файл jpg), а затем правильно закодировать его, чтобы отправить его в тексте запроса выше для обновления контакта.
Я использую этот документ: https://docs.microsoft.com/en-us/graph/api/profilephoto-update?view=graph-rest-1.0
Я вижу, что ожидаемый тип: "photo": { "@odata.type": "microsoft.graph.profilePhoto" }
Документ говорит:
В теле запроса включитедвоичные данные фотографии в теле запроса.
Я изо всех сил пытаюсь выяснить файл изображения, прочитанный и закодированный для отправки его в качестве параметра -Body
в Invoke-RestMethod
. Как я уже сказал, я могу сделать это сейчас, если я отправлю существующую фотографию в качестве тела. Я просто что-то упускаю при чтении с диска.
Вот что я пробовал, и это не работает (contactPhotos из моего каталога):
$photoBinary = [convert]::ToBase64String((get-content -Path $contactPhotos[0].FullName -encoding byte))