我将Invoke-WebRequest命令的响应存储在变量中:
$response = Invoke-WebRequest -Uri $URL -Body $body -Headers $headers -Method POST
如果我正在进行的处理完成,我正在点击的API将返回null,我需要检查它:
PS C:\Users\me> 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.'
}
这些都不起作用。我知道空串是一个很长的镜头,但我认为其中一个应该工作。我在这里做错了什么?
答案 0 :(得分:1)
$response
对象是WebResponseObject
(或从中派生的类),它不仅仅包含响应的内容。这就是平等检查失败的原因。
PS C:\Users\me> Write-Host $response
打印null
因为Write-Host
在幕后的ToString()
对象上调用$response
,后者返回Content
属性。相应的ToString() implementation is here。
因此,如果响应中没有隐藏字符,则以下内容应该有效:
If ($response.Content -eq "null")
{
Write-Host "Server returned null"
}