使用 Invoke-WebRequest 上传文件

Upload a file using Invoke-WebRequest

使用 PowerShell 7,我使用 Invoke-RestMethod 成功上传了一个文件:

$Uri = '...(my url)...'
$File = '...(path to my file)...'
$Form = @{
    f = Get-Item -Path $File
}
$Result = Invoke-RestMethod -Uri $Uri -Method Post -Form $Form -StatusCodeVariable 'HttpStatus'

我想对 Invoke-WebRequest 做同样的事情;我更喜欢 Invoke-WebRequest 因为它的返回值有一个方便的结构,里面有一个状态和一个内容字段,所以我可以摆脱 $HttpStatus 变量并简单地将结果转换为 JSON with '$Result.Content | ConvertFrom-Json'.

Invoke-WebRequest cmdlet 的文档中有一个上传示例:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/invoke-webrequest?view=powershell-7,示例 6。但是它使用了 Invoke-RestMethod cmdlet。这不是文档中的错字吗?我可以像 Invoke-RestMethod 示例中那样简单地使用 Invoke-WebRequest 吗?

我用 Invoke-WebRequest 成功替换了代码中的 cmdlet:

$Result = Invoke-WebRequest -Uri $Uri -Method Post -Form $Form -SkipHttpErrorCheck
$httpStatus = $Result.StatusCode
if ($httpStatus -eq 200)
{
    $j = $Result.Content | ConvertFrom-Json
    . . . .
}

FoxDeploy,您的评论很有帮助。谢谢。