8
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Powershell で gdrive(Google Drive CLI Client)を動かす

MacとLinuxはREADMEに書いてあるのに、Windowsのやり方が書いてなかったので

手順

  1. (https://github.com/prasmussen/gdrive) から自分の環境にあうexeファイルをダウンロードする

  2. コマンドを簡単に使えるようにする

    下記いずれか一つを行う

    1. エイリアスを設定する

      PS> Move-Item $env:USERPROFILE\Downloads\gdrive-windows-x64.exe $env:USERPROFILE\Documents\WindowsPowerShell\
      PS> Set-Item -Path env:Path -Value "$env:Path;$env:USERPROFILE\Documents\WindowsPowerShell\"
      PS> Set-Alias gdrive gdrive-windows-x64.exe
      

      ただし、 Set-Item, Set-Alias はPowerShellを再起動すると消える。
      つまり起動するごとに実行しなければならない。
      それはめんどくさいので、

      PS> code $PROFILE
      

      等でエディターを開き上記の Set-alias gd ..... dows-x64.exe を書き加える。
      $PROFILEが大きくなりすぎた場合は Export-Alias, Import-Alias を活用するのも良いだろう。

    2. Pathを通す。
      ついでに必要に応じてリネーム。

      PS> Move-Item $env:USERPROFILE\Downloads\gdrive-windows-x64.exe $env:USERPROFILE\bin\gdrive.exe        
      

      ファイルが移動されていることを確認

      PS C:\WINDOWS> Get-ChildItem $env:USERPROFILE\bin | Where-Object{$_ -like "gdrive*"}
      

      [Windowsボタン] を押して「環境変数」とタイプ、サジェストされた「環境変数の編集」をクリック。
      Path に C:\Users\<USERNAME>\bin を追加して保存する。

    3. 実行時に指定する
      gdrive コマンドの global option として

    global:
    -c, --config <configDir>         Application path, default: C:\Users\<USERNAME>\AppData\Roaming\.gdrive
    --refresh-token <refreshToken>   Oauth refresh token used to get access token (for advanced users)
    --access-token <accessToken>     Oauth access token, only recommended for short-lived requests because of short lifetime (for advanced users)
    

    といったものがある。
    このうち -c, --config <configDir> でアプリケーションのパスを指定しても実行できる。

  3. Powershell 上で gdrive aboutgdrive listを実行

  4. Authentication を要求されるのでそこに表示されているURLをコピーしブラウザに貼り付けて移動

  5. ログインして許可を押すとコードが発行されるのでそれをPowershellに貼り付けEnter

  6. Powershell 上でもう一度 gdrive list 実行

  7. Google ドライブ上のファイルが表示されたら、おめでとう!無事Powershell上でgdriveコマンドが使えるようになったよ!やったね

おまけ

上記のコードでは全てCmdletをフルネームで書いているが、当然エイリアスを使っても良い

PS> Get-Alias | Where-Object {$_.Definition -in "Move-Item", "Set-Alias", "Remove-Item", "Get-Alias", "Where-Object"}

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Alias           ? -> Where-Object
Alias           del -> Remove-Item
Alias           erase -> Remove-Item
Alias           gal -> Get-Alias
Alias           mi -> Move-Item
Alias           move -> Move-Item
Alias           mv -> Move-Item
Alias           rd -> Remove-Item
Alias           ri -> Remove-Item
Alias           rm -> Remove-Item
Alias           rmdir -> Remove-Item
Alias           sal -> Set-Alias
Alias           where -> Where-Object

というようにAliasが設定されており、検索できる。
例えば今の Get-Alias | Where-Object {}gal|?{} と書くこともできる。
ユーザーフォルダも $env:USERPROFILE で書いたが $HOME でも良いし、他のシェルよろしく ~ でも(初期設定では)同様の挙動だと思う。また、.NETも使えるので [Environment]::GetFolderPath("MyDocuments")Documents フォルダを検索しても良い。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
8
Help us understand the problem. What are the problem?