Download file from dynamic link using VBScript or Powershell

前端 未结 1 1316
刺人心
刺人心 2021-01-16 21:30

I\'m trying to create a VBScript or Powershell script to get the file from dynamic link (e.g. http://www.pepperresources.org/LinkClick.aspx?fileticket=B1doLYYSaeY%3d&tab

相关标签:
1条回答
  • 2021-01-16 22:19

    The URL has to be 100% correct. Unlike a browser there is no code to fix urls.

    The purpose of my program is to get error details.

    How I get a correct URL is to type my url in a browser, navigate, and the correct URL is often in the address bar. The other way is to use Properties of a link etc to get the URL.

    Also Microsoft.XMLHTTP maps to Microsoft.XMLHTTP.1.0. HKEY_CLASSES_ROOT\Msxml2.XMLHTTP maps to Msxml2.XMLHTTP.3.0. Try a later one

    Try this way using xmlhttp. Edit the url's etc. If it seems to work comment out the if / end if to dump info even if seeming to work. It's vbscript but vbscript works in vb6.

     On Error Resume Next
     Set File = WScript.CreateObject("Microsoft.XMLHTTP")
     File.Open "GET", "http://www.microsoft.com/en-au/default.aspx", False
     'This is IE 8 headers
     File.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET4.0C; .NET4.0E; BCD2000; BCD2000)"
     File.Send
     If err.number <> 0 then 
        line =""
        Line  = Line &  vbcrlf & "" 
        Line  = Line &  vbcrlf & "Error getting file" 
        Line  = Line &  vbcrlf & "==================" 
        Line  = Line &  vbcrlf & "" 
        Line  = Line &  vbcrlf & "Error " & err.number & "(0x" & hex(err.number) & ") " & err.description 
        Line  = Line &  vbcrlf & "Source " & err.source 
        Line  = Line &  vbcrlf & "" 
        Line  = Line &  vbcrlf & "HTTP Error " & File.Status & " " & File.StatusText
        Line  = Line &  vbcrlf &  File.getAllResponseHeaders
        wscript.echo Line
        Err.clear
        wscript.quit
     End If
    
    On Error Goto 0
    
     Set BS = CreateObject("ADODB.Stream")
     BS.type = 1
     BS.open
     BS.Write File.ResponseBody
     BS.SaveToFile "c:\users\test.txt", 2
    

    Also see if these other objects work.

    C:\Users>reg query hkcr /f xmlhttp
    
    HKEY_CLASSES_ROOT\Microsoft.XMLHTTP
    HKEY_CLASSES_ROOT\Microsoft.XMLHTTP.1.0
    HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP
    HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.3.0
    HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.4.0
    HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.5.0
    HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.6.0
    HKEY_CLASSES_ROOT\Msxml2.XMLHTTP
    HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.3.0
    HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.4.0
    HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.5.0
    HKEY_CLASSES_ROOT\Msxml2.XMLHTTP.6.0
    End of search: 12 match(es) found.
    

    Also be aware there is a limit on how many times you can call any particular XMLHTTP object before a lockout occurs. If that happens, and it does when debugging code, just change to a different xmlhttp object

    0 讨论(0)
提交回复
热议问题