Powershell调用WebRequest-收集指定的数据

Powershell调用WebRequest-收集指定的数据,powershell,network-printers,Powershell,Network Printers,我试图从打印机的网页收集打印的总页数。脚本可以 加载登录页面 导航到维护子页面 选择包含所需数据的列 但是,我不知道如何调整脚本以只捕获我需要的数字 $R=Invoke-WebRequest http://1.2.3.4/status.html -SessionVariable session1 #B553 - name w Html $R.Forms[0].Fields["B553"]="login" $R.Forms[0].Fields["password"]="password" $I

我试图从打印机的网页收集打印的总页数。脚本可以

  • 加载登录页面
  • 导航到维护子页面
  • 选择包含所需数据的列
  • 但是,我不知道如何调整脚本以只捕获我需要的数字

    $R=Invoke-WebRequest http://1.2.3.4/status.html -SessionVariable session1
    
    #B553 - name w Html
    $R.Forms[0].Fields["B553"]="login"
    $R.Forms[0].Fields["password"]="password"
    
    $Invoke1=Invoke-WebRequest -Uri ("http://1.2.3.4/status.html" + $R.Forms[0].Action) -WebSession $session1 -Method POST -Body $R.Forms[0].Fields
    
    Start-Sleep -s 5
    
    $Invoke2=Invoke-WebRequest 'http://1.2.3.4/Maintance-sub-page' -WebSession $session1
    
    $Invoke2.AllElements | where tagname -EQ "dd" | Select innerText
    
    结果如下:

    $Invoke2.AllElements | where tagname -EQ "dd" | Select innerText
    
    • 在屏幕上。但我要找的输出应该是“打印的总页数23513”


    看起来Powershell中的结果与HTML页面上的结果顺序相同。这些结果看起来有点像一个数组,而且(如果我算对的话),看起来你想要的字段是23(数组从0开始)

    试试下面的方法

    $($Invoke2.AllElements | where tagname -EQ "dd" | Select innerText)[23]
    

    谢谢你,亚当!再次强制转换变量后,它返回我要查找的结果:)innerText-----23527pages@Bah好极了您是否介意单击答案旁边的复选标记将其标记为成功。通过这种方式,遇到此线程的其他人知道这解决了您的问题。