如何将Invoke-RestMethod替换为PowerShell 2.0

时间:2017-07-25 12:16:23

标签: powershell

我在PowerShell 5.1中创建了一个脚本,该脚本使用' report'来检索有一天不长的邮件。作为主题并将其附件保存到本地驱动器中。问题是在生产环境中我只有Powershell 2.0。我在我的代码中使用Invoke-RestMethod:

$url = "https://outlook.office365.com/api/v1.0/me/messages" 
$date = (get-date).AddDays(-1).ToString("yyyy-MM-dd")
$subject = "'report'"
$messageQuery = "" + $url + "?`$select=Id&`$filter=HasAttachments eq true and DateTimeReceived ge " + $date + " and Subject eq " + $subject
$messages = Invoke-RestMethod $messageQuery -Credential $cred 

foreach ($message in $messages.value) 
{ 
    $query = $url + "/" + $message.Id + "/attachments" 
    $attachments = Invoke-RestMethod $query -Credential $cred 

    foreach ($attachment in $attachments.value) 
    { 
        $attachment.Name

        # SAVE ATTACHMENT CODE HERE
    }
}

是否有一种简单的方法来转换代码以适合PowerShell 2.0?

1 个答案:

答案 0 :(得分:0)

Invoke-WebRequest

此命令与Invoke-RestMethod基本相同,除了它在收到数据后如何处理数据。您将不得不对解析数据的方式进行一些小的修改。

我下注您正在接收JSON数据,因此您只需运行Invoke-WebRequest命令并将其传递给ConvertFrom-JSON并将结果分配给var。这样您就可以执行$x.messages | % { $_ }

之类的操作

您需要在2.0中实现此转换器。您可以复制并粘贴:PowerShell 2.0 ConvertFrom-Json and ConvertTo-Json implementation

PS 2.0本身支持XML。