Powershell[Invoke WebRequest]是否可以从某个点复制Session,然后从保存的状态重新使用会话?
我登录并完成完整的请求没有问题。
问题是,我应该执行数百个类似的请求,为了做出选择,我为每个参数发送一个单独的post请求(有八个post请求(,并且我必须依次执行这些请求。
前四个对每个人来说都是相同的,所以,在这四个请求之后,是否可以将会话状态保存在变量的副本中,然后使用它?
我试着用复制会话$sessionAfterBasicRequest=$session.PSObject.Copy((但不起作用
也许我错过了一些基本的东西。。。
我很难理解您要做什么,但我认为您希望为这么多请求维护一个会话。
请参阅Invoke-WebRequest
的此示例,解释如何在使用`InvokeWebRequest时维护有状态web服务的会话。我将为子孙后代重复下面的内容,因为这个例子已经解释了正在发生的事情:
$Body = @{
User = 'jdoe'
password = 'P@S$w0rd!'
}
$LoginResponse = Invoke-WebRequest 'https://www.contoso.com/login/' -SessionVariable 'Session' -Body $Body -Method 'POST'
$Session
$ProfileResponse = Invoke-WebRequest 'https://www.contoso.com/profile/' -WebSession $Session
$ProfileResponse
对
Invoke-WebRequest
的第一个调用发送登录请求。该命令为-SessionVariable
参数的值指定一个值"Session",并将结果保存在$LoginResponse
变量中。命令完成后,$LoginResponse
变量包含BasicHtmlWebResponseObject
,$Session
变量包含WebRequestSession
对象。这会将用户登录到网站。对
$Session
的调用本身显示变量中的WebRequestSession
对象。对
Invoke-WebRequest
的第二次调用获取用户的配置文件,该配置文件要求用户登录到站点。存储在$Session
变量中的会话数据用于向登录期间创建的站点提供会话cookie。结果保存在$ProfileResponse
变量中。对
$ProfileResponse
的调用本身显示变量中的BasicHtmlWebResponseObject
。