我需要使用受.NET限制的Powershell(v2)创建带有特定标头的HttpWebRequest。我读了另一个post,这是用C#完成的,但是我遇到了在Powershell中完成相同目标的困难
到目前为止,这是基于以上链接的内容:
$httpWebRequest = [System.Net.HttpWebRequest][System.Net.WebRequest]::Create($url)
[System.Reflection.BindingFlags]$bflags = [Reflection.BindingFlags]"NonPublic" -bor [Reflection.BindingFlags]"Instance" -bor [Reflection.BindingFlags]"InvokeMethod"
$httpWebRequest.Headers.GetType().InvokeMember("ChangeInternal", $bflags, $null, $httpWebRequest.Headers, @{"Host" = "www.example.com"})
不幸的是,Powershell的错误响应如下:
使用“5”参数调用“InvokeMember”的异常:“找不到方法'System.Net.WebHeaderCollection.ChangeInternal'。”
我该如何调用“ChangeInternal”?我得到的错误是否与错误的汇编版本有关?
答案 0 :(得分:0)
InvokeMember
的最后一个参数是一个参数数组,ChangeInternal
有两个参数,即名称和值。发生错误是因为反射无法找到名为ChangedMember
的方法接受单个参数。使用此:
$httpWebRequest.Headers.GetType().InvokeMember("ChangeInternal", $bflags, $null, $httpWebRequest.Headers, @("Host", "www.example.com"))