Invoke-WebRequest не выводит RawContentStream в сценарии - PullRequest
0 голосов
/ 12 мая 2018

Я создал скрипт, который просматривает каждый удаленный 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 ведет себя аналогично, когда выводит его по отдельности, но не в сценарии, и мне было интересно, как они были связаны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...