我正在尝试自动化 Intune 中业务线应用的更新过程。
这是我当前的代码:
function New-AppContentFile {
param(
[Parameter(Mandatory=$true)][System.String]$AppId,
[Parameter(Mandatory=$true)][System.String]$AppContentId
)
$Uri = "https://graph.microsoft.com/beta/deviceAppManagement/mobileApps/8dda54ec-992a-478d-984a-260cd59c1c33/microsoft.graph.mobileLobApp/contentVersions/1/files"
$script:ReqBody = [ordered]@{
"@odata.type" = "#microsoft.graph.mobileAppContentFile"
"name" = "google.msi"
"size" = 4
"sizeEncrypted" = 13
"manifest" = $null
"isCommitted" = $false
} | ConvertTo-Json
$header = @{
Authorization = "Bearer $($token.AccessToken)"
"content-length" = $ReqBody.Length
"Accept" = "application/json"
}
Invoke-RestMethod -Uri $Uri -Headers $header -Method Post -Body $ReqBody -ContentType "application/json"
}
我在测试时注意到的几件事,REST API 上列出的端点很可能是不正确的。如果我在以下 URL“https://graph.microsoft.com/beta/deviceAppManagement/mobileApps/8dda54ec-992a-478d-984a-260cd59c1c33/microsoft.graph.mobileLobApp/contentVersions/1/files”上使用 GET 方法,我会得到回报。如果我使用 REST API 中提到的那个,它会返回一个 (400) 错误请求。
我还测试了 body 的多种变体,以包含示例请求中列出的全部或部分属性。参考下面列出的两个参考文献中的第一个(第 617 行),理论上正文应按以下方式工作:
$ReqBody = [ordered]@{
"@odata.type" = "#microsoft.graph.mobileAppContentFile"
"name" = "google.msi"
"size" = 4
"sizeEncrypted" = 13
"manifest" = $null
}
在示例请求中,指定了“azureStorageUri”属性。在我的情况下,我无法指定,此 POST 应该生成 azureStorageUri,以便我可以将文件上传到该存储端点。
我使用这两个来源作为参考: https://github.com/microsoftgraph/powershell-intune-samples/blob/master/LOB_Application/Application_LOB_Add.ps1 https://github.com/MSEndpointMgr/IntuneWin32App/blob/主/公共/Add-IntuneWin32App.ps1
以下来自 Microsoft Graph REST API 的文档 https://docs.microsoft.com/en-us/graph/api/intune-apps-mobileappcontentfile-create?view=graph-rest-beta 我还应该注意我有使用 MsGraph REST API 的 BETA 和 v1.0 对此进行了测试。