1

我正在尝试自动化 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 对此进行了测试。

4

0 回答 0