Я создал скрипт, который просматривает каждый удаленный IP-адрес, подключенный к моему компьютеру, и возвращает информацию о нем, если это возможно. Все работает нормально, кроме
$serv_inf.RawContentStream
не возвращает никакого вывода, когда вызывается его переменная.
Вот сценарий:
$h_list = Get-NetTCPConnection -AppliedSetting internet | Select-Object -Property RemoteAddress
$h_conv = $h_list.remoteaddress
foreach ($_ip in $h_conv) {
if ($_ip -ne "127.0.0.1") {
try {
if (Invoke-WebRequest -Method Head -TimeoutSec 3 -DisableKeepAlive $_ip -ea Ignore) {
echo "`n"
echo "[+] NSLookup:`t$_ip`n"
$x = nslookup $_ip
foreach ($line in $x){
if ($line -ne "") {
echo " |--$line"
}
}
$serv_inf = Invoke-WebRequest -Method Head -TimeoutSec 5 -DisableKeepAlive $_ip -ea Ignore
echo "-------------------------------------"
echo "[+] Header Info:`n-------------------------------------"
$serv_inf.Headers
echo "-------------------------------------"
echo "[+] Raw Content:`n-------------------------------------"
$serv_inf.RawContent
echo "-------------------------------------"
echo "[+] Raw Content Stream:`n-------------------------------------`n"
$serv_inf.RawContentStream
echo "`n=============================================================================================="
}
Start-Sleep -Seconds 1
} catch {}
}
}
Возвращаемый результат выглядит следующим образом:
[+] NSLookup: xx.xx.xx.xx
|--Server: xx.some.com
|--Address: xx.xx.xx.xx
|--Name: xx.other.some.com
|--Address: xx.xx.xx.xx
-------------------------------------
[+] Header Info:
-------------------------------------
Connection close
Content-Length 0
Date Fri, 11 May 2018 20:43:10 GMT
Server Microsoft-IIS/8.0
X-Powered-By ASP.NET
-------------------------------------
[+] Raw Content:
-------------------------------------
HTTP/1.1 200 OK
Connection: close
Content-Length: 0
Date: Fri, 11 May 2018 20:43:10 GMT
Server: Microsoft-IIS/8.0
X-Powered-By: ASP.NET
-------------------------------------
[+] Raw Content Stream:
-------------------------------------
Что меня смущает, так это то, что если я запускаю $serv_inf.RawContentStream
сам по себе, он выдает нормально:
-------------------------------------
[+] Raw Content Stream:
-------------------------------------
CanRead : True
CanSeek : True
CanTimeout : False
CanWrite : True
Length : 0
Capacity : 10000
Position : 0
ReadTimeout :
WriteTimeout :
но если я вызову его в этом сценарии, $serv_inf.RawContentStream
не будет выводиться каждый раз. Почему он выводит вывод по отдельности, но каждый раз в скрипте возвращает пустое значение?
Edit:
Я установил точку останова, где должен вызываться $serv_inf.RawContentStream
, и попытался выполнить ее самостоятельно:
[DBG]: PS C:\Users\xxxxxxx\Desktop\scripts\ps>> $serv_inf.RawContentStream
CanRead : True
CanSeek : True
CanTimeout : False
CanWrite : True
Length : 0
Capacity : 10000
Position : 0
ReadTimeout :
WriteTimeout :
Я вижу, что с его содержимым все в порядке, но я не уверен, почему он не отображается. Я понимаю, что $serv_inf.BaseResponse
ведет себя аналогично, когда выводит его по отдельности, но не в сценарии, и мне было интересно, как они были связаны.