我将Invoke-WebRequest命令的响应存储在一个变量中:
$response = Invoke-WebRequest -Uri $URL -Body $body -Headers $headers -Method POST
如果我正在执行的处理完成,我正在点击的 API 将返回 null,我需要检查它:
PS C:Usersme> Write-Host $response
null
我已经尝试了以下所有测试:
If (!$response) {
Write-Host 'Null 1.'
}
If ($response -eq 'null') {
Write-Host 'Null 2.'
}
If ($response -eq $null) {
Write-Host 'Null 3.'
}
If ($response -eq [string]::Empty) {
Write-Host 'Null 4.'
}
If ($null -eq $response) {
Write-Host 'Null 5.'
}
这些都不起作用。我知道空字符串是一个很长的镜头,但我认为其他字符串之一应该有效。我在这里做错了什么?
$response
对象是一个WebResponseObject
(或从它派生的类(,它包含的不仅仅是响应的内容。这就是平等检查失败的原因。
PS C:Usersme> Write-Host $response
打印null
,因为Write-Host
在后台$response
对象上调用ToString()
,这将返回Content
属性。对应的 ToString(( 实现在这里。
因此,如果响应中没有隐藏字符,则以下内容应该有效:
If ($response.Content -eq "null")
{
Write-Host "Server returned null"
}