Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 如何在不启用API访问的情况下下载Google驱动器文件?_Powershell_Batch File_Download_Google Drive Api - Fatal编程技术网

Powershell 如何在不启用API访问的情况下下载Google驱动器文件?

Powershell 如何在不启用API访问的情况下下载Google驱动器文件?,powershell,batch-file,download,google-drive-api,Powershell,Batch File,Download,Google Drive Api,正在寻找从共享的Google驱动器下载特定文件的方法。类似于批处理文件的东西会很棒。运行它,它将下载所需的5/6文件,并将它们放入网络驱动器位置。使用本机windows的东西,没有特定的文件(与工作相关,所以下载限制等) 我试过几件事,但似乎都想不起来 到目前为止我已经尝试过的事情: 尝试以各种形式使用PowerShell来完成此操作。但我有一种奇怪的感觉,即公司代理阻止了它的工作 已尝试: $client = new-object System.Net.WebClient $client.C

正在寻找从共享的Google驱动器下载特定文件的方法。类似于批处理文件的东西会很棒。运行它,它将下载所需的5/6文件,并将它们放入网络驱动器位置。使用本机windows的东西,没有特定的文件(与工作相关,所以下载限制等)

我试过几件事,但似乎都想不起来

到目前为止我已经尝试过的事情:

尝试以各种形式使用PowerShell来完成此操作。但我有一种奇怪的感觉,即公司代理阻止了它的工作

已尝试:

$client = new-object System.Net.WebClient 
$client.Credentials = Get-Credential
$client.Proxy.Credentials[System.Net.CredentialCache]::DefaultNetworkCredentials
$client.DownloadFile("https://docs.google.com/a/mydomain.co.uk/spreadsheets/d/1in0m8PhfiYhu4qCWO1dxNc3OS3p8prF7HWRZ-bjnKBI/export?format=xlsx","W:\Corp\Comp Serv\Comp Op\Op Br\Dep Data\Call\Rota\WTR.xlsx")
以及:

尝试使用bitsadmin执行此操作,但没有成功,它返回-“无法添加文件-0x80070005”

bitsadmin /transfer myDownloadJob /download /priority normal https://docs.google.com/a/mydomain.co.uk/spreadsheets/d/1in0m8PhfiYhu4qCWO1dxNc3OS3p8prF7HWRZ-bjnKBI/export?format=xlsx W:\Corp\Comp Serv\Comp Op\Op Br\Dep Data\Call\Rota\WTR.xlsx
尝试通过批处理完成,但没有乐趣。使用我在网上找到的脚本:

   @echo off
    setlocal

    :: uses bitsadmin utility to download a file
    :: bitsadmin is not available in winXP Home edition
    :: the only way to download a file with 'pure' batch
   :download

    if "%2" equ "" (
      call :help
      exit /b 5
   )

   if "%1" equ "" (
      call :help
      exit /b 6
   )
    set url=%~1
    set file=%~2
    rem ----
    if "%~3" NEQ "" (
        set /A timeout=%~3
    ) else (
        set timeout=5
    )

    bitsadmin /cancel download >nul
    bitsadmin /create /download download >nul 
    call bitsadmin /addfile download "%url%" "%CD%\%file%" >nul
    bitsadmin /resume download >nul 
    bitsadmin /setproxysettings download AUTODETECT >nul

    set /a attempts=0
    :repeat
    set /a attempts +=1
    if "%attempts%" EQU "10" (
        echo TIMED OUT
        endlocal
        exit /b 1
    )
    bitsadmin /info download /verbose | find  "STATE: ERROR"  >nul 2>&1 && endlocal &&  bitsadmin /cancel download && echo SOME KIND OF ERROR && exit /b 2
    bitsadmin /info download /verbose | find  "STATE: SUSPENDED" >nul 2>&1 && endlocal &&  bitsadmin /cancel download &&echo FILE WAS NOT ADDED && exit /b 3
    bitsadmin /info download /verbose | find  "STATE: TRANSIENT_ERROR" >nul 2>&1 && endlocal &&  bitsadmin /cancel download &&echo TRANSIENT ERROR && exit /b 4
    bitsadmin /info download /verbose | find  "STATE: TRANSFERRED" >nul 2>&1 && goto :finishing 

   w32tm /stripchart /computer:localhost /period:1 /dataonly /samples:%timeout%  >nul 2>&1
    goto :repeat
    :finishing 
    bitsadmin /complete download >nul
    echo download finished
    endlocal
   goto :eof

   :help
   echo %~n0 url file [timeout]
   echo.
   echo  https://docs.google.com/a/domainname.co.uk/spreadsheets/d/1in0m8PhfiYhu4qCWO1dxNc3OS3p8prF7HWRF-bjnKBI/export?format=xlsx
   echo  W:\Corp\Comp Serv\Comp Op\Op Br\Dep Data\Call\Rota\WTR.xlsx
   echo  10
   echo.
   goto :eof

假设您无法对您的帐户启用api访问(请参阅其中显示如何仅对域内的组织启用api访问),您可以执行以下操作:
使用浏览器调试器(我使用的chrome是用F12打开的)转到您的驱动器,并选择一个要下载的文件。
在chrome调试器中,查看“网络”选项卡。清除它使事情变得更容易。
现在下载文件。如果是非谷歌文件,就从那里下载。您将看到类似“”的帖子。您可以使用curl进行相同的发布,右键单击该行并“复制为curl”,这将复制cookie等内容。
该帖子提供了一个下载url。

如果是google文件(如电子表格),则需要执行类似操作,但只有先打开电子表格,然后使用菜单导出为xlsx,这将是最好的备份格式,才能执行类似操作。
这些URL看起来像“


请注意,在这两种情况下,关键是要包含浏览器使用的同一cookie。我使用的cookie就是这样的(但gmail不是drive)到目前为止,cookie持续数月,尚未过期)。请确保脚本安全,因为cookie用于您自己的驱动器,并且可能会被恶意使用。

完全可能。如果您发布您尝试的内容,您将得到帮助。昨晚很忙。我将更新帖子。现在已进行编辑。您尝试的任何方法都不会使用cookie谷歌记录的方式。看看谷歌驱动器api和/或spteadsheets api我们的Coroperate帐户没有让我访问api,这就是为什么…因为你的评论说很多人需要访问你的脚本,请注意cookie是为你的驱动器准备的,因此恶意用户可能会共享它或使用它来控制你ur drive.Nope,没有启用API访问的选项,因此我找到了其中一个电子表格的cURL链接。该链接工作正常,下载电子表格没有问题。现在我需要一种方法来指定文件位置(在网络驱动器上),并将其导入批处理。我使用START firefox.exe*cURL address,这将提示并下载它。理想情况下,我不会打开浏览器,它只是在后台安静地下载文件。cURL可以从脚本使用,而不仅仅是从浏览器使用(关于cURL的帮助不属于此问题)所以,我要打开另一个问题来得到我问题的答案?先用谷歌搜索。这是一个在很多网站上都有解释的基本问题。
   @echo off
    setlocal

    :: uses bitsadmin utility to download a file
    :: bitsadmin is not available in winXP Home edition
    :: the only way to download a file with 'pure' batch
   :download

    if "%2" equ "" (
      call :help
      exit /b 5
   )

   if "%1" equ "" (
      call :help
      exit /b 6
   )
    set url=%~1
    set file=%~2
    rem ----
    if "%~3" NEQ "" (
        set /A timeout=%~3
    ) else (
        set timeout=5
    )

    bitsadmin /cancel download >nul
    bitsadmin /create /download download >nul 
    call bitsadmin /addfile download "%url%" "%CD%\%file%" >nul
    bitsadmin /resume download >nul 
    bitsadmin /setproxysettings download AUTODETECT >nul

    set /a attempts=0
    :repeat
    set /a attempts +=1
    if "%attempts%" EQU "10" (
        echo TIMED OUT
        endlocal
        exit /b 1
    )
    bitsadmin /info download /verbose | find  "STATE: ERROR"  >nul 2>&1 && endlocal &&  bitsadmin /cancel download && echo SOME KIND OF ERROR && exit /b 2
    bitsadmin /info download /verbose | find  "STATE: SUSPENDED" >nul 2>&1 && endlocal &&  bitsadmin /cancel download &&echo FILE WAS NOT ADDED && exit /b 3
    bitsadmin /info download /verbose | find  "STATE: TRANSIENT_ERROR" >nul 2>&1 && endlocal &&  bitsadmin /cancel download &&echo TRANSIENT ERROR && exit /b 4
    bitsadmin /info download /verbose | find  "STATE: TRANSFERRED" >nul 2>&1 && goto :finishing 

   w32tm /stripchart /computer:localhost /period:1 /dataonly /samples:%timeout%  >nul 2>&1
    goto :repeat
    :finishing 
    bitsadmin /complete download >nul
    echo download finished
    endlocal
   goto :eof

   :help
   echo %~n0 url file [timeout]
   echo.
   echo  https://docs.google.com/a/domainname.co.uk/spreadsheets/d/1in0m8PhfiYhu4qCWO1dxNc3OS3p8prF7HWRF-bjnKBI/export?format=xlsx
   echo  W:\Corp\Comp Serv\Comp Op\Op Br\Dep Data\Call\Rota\WTR.xlsx
   echo  10
   echo.
   goto :eof