如何使用PowerShell Invoke-WebRequest Post

时间:2017-05-23 12:57:52

标签: jquery python html powershell webrequest

我知道我们应该尽可能多地添加细节,但我不知道它是如何工作的,所以我的细节将是最小的。我不确定这是否是正确/最好的方法,所以请放轻松我。这是我的情况:

我想从网页上获取信息。我无法为您提供网页,因为它是公司的内部网页。基本上,网页有一个带有一堆文本框和几个按钮的表单(一个是提交的)。我想以编程方式(使用PowerShell - 或者像Python这样的其他东西可以更好地工作)web请求页面提交一条信息并获得结果。

我基本上有一个需要循环的名称列表。手动完成,每个名称将粘贴到页面上的一个文本框中,单击提交按钮,结果将弹出。

我想循环浏览名称列表并对每个项目执行web后请求,然后获取结果。可以使用PowerShell完成吗?

我一直在搞乱Invoke-WebRequest,但我不完全确定它是如何工作的。我很确定网页可以在其上执行发布请求,因为当我执行

$req = Invoke-WebRequest -URI https://www.foobar.com -Method Post

我不接受有关不接受帖子的网页的任何错误。有什么建议吗?

以下是网页上的一些相关代码:

<button class="Button k-button k-button-first SearchButton" data-categorytext="#SearchByValue, #ServerRequestValue" data-summary="" id="btnSearch_SearchBy">Search</button>
<script>
    jQuery(function(){jQuery("#btnSearch_SearchBy").kendoButton({});});
</script>

我需要向

提供信息的文本框
<input class="k-textbox SearchField" data-summary="Server Name like " id="ServerNameSearchValue" name="ServerNameSearchValue" style="width: 300px;" type="search" value="SOME_SERVER_NAME_FROM_MY_LIST" />

提交表单后,页面上会弹出一个包含结果的窗口。页面没有重新加载或任何东西,所以在执行发布请求以从新窗口获取信息后,我是否需要在页面上执行get请求?

1 个答案:

答案 0 :(得分:0)

您需要指定要在Hasthable中发送的POST参数:

# Name is the field name on the form
$params = @{Name = 'Some Name'}
$results = Invoke-WebRequest -Uri http://example.com/foobar -Method POST -Body $params

您可以通过查看生成的HTML并将它们添加到数组中来获取组合框/文本框:

$params = @{TextBox1 = 'Some Name'; TextBox2 = 'Some Name'}

您还可以使用带有Invoke-WebRequest的GET请求,然后解析HTML以获取文本框名称并使用名称和值构建上面的数组。如果你想让你的代码更通用,那就更复杂但很有价值。

但是,无论如何,您都必须在Powershell脚本中设置这些组合框/文本框的值。