見出し画像

0~1年目エンジニアが覚えるべきPowerShellのコマンドと機能

実践向けCLI・PowerShell使いこなす。


始めに。


まずは、私のPowerShell記事をご覧いただき、ありがとうございます。
現代、生成AIがある中で、私の記事を見てくださっているということは、「筆者はどのようにCLIを業務に活かしているのか」を参考にしたいのだと思います。

そのため、この記事では私が普段使いしている構成について、紹介していきたいと思います。

PowerShell「CLI」を使う上でのメリット


この記事をご覧いただいているということは、CLIの大切さについては、すでにご存じであると思いますが、私の言葉で考えを記載させていただきます。

1. GUIに依存せずに安定した速度で操作を行える。
2. Linux環境下でも安定した操作を実現することができる。
3. ある程度の作業を自動化することができる。

簡潔にまとめると、この3点が強いメリットなのではないでしょうか。
また、私自身業務を行っていくうえでGUI操作よりCLI操作のほうが確実でスピードも速く業務をこなすことができていると感じます。

何より、複雑な階層構造「ディレクトリ」によるストレスや、ファイルを紛失するといった現象が起きにくく感じます。

例えば、ローカルに複雑なディレクトリ構造を持つ資料一覧フォルダをチェックアウトしたとします。ここから目的とする資料を毎回探すのでは時間もかかりますし、思考停止状態になってしまいますね。「ストレスで」

ですが、例えばこのコマンドを使えば一発で目的の資料を見つけることができる訳けですね。

Get-ChildItem -Path ./ -Depth 5 -Recurse -Filter "目的のファイル"
Get-ChildItemの実行結果

このようにすることで、今まで資料探すのに5~10分かかってたという作業が、10秒ぐらいになるわけです。ちなみにGet-ChildItemはLinuxでいうところのlsに近く、コマンドプロンプトでいうところのdirに近いコマンドです。

また、PowerShellでlsやdirと入力してもGet-ChildItemと同じ出力を得ることができます。毎回Get-ChildItemと入力するわけにはいきませんからね。

そのため、私はLinuxとの混在を避けるためにPowerShellではdirを採用しています。

と、若干話が脱線しましたが、このようにGUIでは時間がかかってしまう操作を数秒で、安定してこなすことができるようになるのがCLIのメリットであり、魅力だと感じます。

PowerShellの環境を整える。


では、ここからは私の普段使い「実践向けの構成」について、記載させていただきます。

まずは、このような構成を作成していきましょう。

  • homeディレクトリ「sl ~」で移動可能

    • localDesktop

      • work_space

      • tools

      • commit

    • shell_screen

    • Documents

      • WindowsPowerShell

それぞれの役割について、下記に説明します。
〇 localDesktop
普段Desktopにおいてあるファイル、フォルダを格納します。
〇 work_space
ここに実際に仕事をするとき用のファイルやフォルダを置きます。
またこの階層で作業を行います。
〇 tools
自動化を行うためのプログラムファイルやサクラエディタ等のツールを格納します。
〇 commit
リモートから取得した資料、またはgit系の操作を行うためのディレクトリです。
〇 shell_screen
ここに、PowerShellの画面にしたい画像等を格納します。
〇 Documents\WindowsPowerShell
かなり重要になってきますが、自動化をするために必要なディレクトリです。

と、今回は最小構成ですが、これで最低限仕事はスムーズにこなすことができる環境が整いました。

余裕があれば、ダウンロード階層、スクリーンショット階層などを自動で移動できるコマンドなども作成したいですね。

「例」ssと入力するとスクリーンショット階層に行くなど

では、実際に作成していきましょう。

# どちらでも可能です。
sl ~
cd ~

PowerShellは初期エイリアスでSet-Locationがslで登録されています。

New-Item -ItemType Directory localDesktop

PowerShellでフォルダを作成するためのコマンドです。mkdirでも作成できます。

# どちらでも可能です。
sl localDesktop
cd localDesktop

localDesktopに移動します。

New-Item -ItemType Directory -Path work_space,tools,commit

まとめて、work_space、tools、commitディレクトリを作成します。

sl ~; New-Item -ItemType Directory shell_screen

ホームディレクトリに戻ってshell_screenを作成します。

sl Documents; New-Item -ItemType Directory WindowsPowerShell

のちに自動化するために使うディレクトリです。
すでにある場合は作成しなくて問題ございません。

PowerShellの基本操作


次の章では、簡単なコマンドの生成を行いたいが、その前にPowerShellの基本コマンドを記載します。これはスラっと出てくるように覚えましょう。

sl

階層を移動するときのコマンドです。PowerShellでは、初期エイリアスとして、Set-Locationがslとして登録されています。cdコマンドでもsl同様にディレクトリを移動することができます。

New-Item "ファイル名"

新規ファイルを作成するときのコマンドです。

New-Item -ItemType Directory "フォルダ名"

新規ディレクトリを作成するときのコマンドです。mkdirコマンドでも新規に作成することができます。

Get-ChildItem -Path ./ -Depth 階層数 -Recurse -Filter "探したいファイルもしくはディレクトリ"

現在いる階層から、指定階層分の検索を行います。Linuxのコマンドでいうところのfind ./ -maxdepth -nameコマンドに近いものとなります。

# どちらでも可能です。
dir
ls
Get-ChildItem

現在いる階層の資源を表示します。

explorer "開きたい階層もしくはファイル名"
explorer.exe "開きたい階層もしくはファイル名"

ファイルを開くときに使用できるコマンドです。
「explorer .」 とした場合は現在いる階層でエクスプローラを開きます。

Remove-Item "ファイルもしくはフォルダ名"

ファイルやフォルダを削除します。必要に応じて-Recurseや-Forceを使用します。

Get-Content "ファイル名" -Encoding UTF8

ファイルの内容を表示します。-Encoding UTF8は、UTF8としてファイルを読み込みます。PowerShell 6.0 以降ではデフォルトの文字コードはUTF8のため、省略可能です。さらにSelect-Stringを使用することで、取得したい文字列を検索することができます。

Get-Content "ファイル名" -Encoding UTF8 | Select-String "検索文字列"

PowerShellについて、操作に自信がない方はまずは上記コマンドを使用できるようにしましょう。それだけでも大分CLI操作に慣れるはずです。

実際にコマンドを作成してみる。


それでは、いよいよコマンドを作成してみましょう。
次のディレクトリに移動して、下記のコマンドを入力します。

sl ~\Documents\WindowsPowerShell
code $PROFILE

上記を入力するとVScodeが起動して、Microsoft.PowerShell_profile.ps1が開きます。
※codeコマンドを使用するにはVScodeをインストールする必要があります。あらかじめインストールしておいてください。

① slack起動コマンド、chatgpt起動コマンド
それでは、実際に下記のように入力していきましょう。

function chatgpt { Start-Process "chatgptへのURL" }
function slack { Start-Process "slackへのURL" }

これらを入力して、Ctrl+Sで保存をかけ、PowerShellでprofileを更新します。

code $PROFILEでprofileを開く
profileに上記2行を追加する。
. $PROFILEを入力してprofileの内容を反映
以降はchatgptと入力してchatGPTが起動する。

このようにコマンドを生成して、リンク先を開いたり、アプリケーションを開いたりすることができます。

では次に、仕事を始めたときにスムーズに、Excelファイルやツールを開くようにしてみましょう。

ひとつのコマンドに、複数の起動命令を記述
次回以降は、workですべて起動することができる。

自分のファイルを起動するときは、どの階層「ディレクトリ」に居ても正しく動作するように、絶対パスで記述すると確実に動作するようになります。
上記画像では、explorerの行が該当します。

ここで役に立ってくるのが、先ほど役割ごとに作成したtoolsやwork_space等になります。例えば毎回仕事で使うExcelやWordのファイルであれば、work_spaceに保存をしておくわけですが、この時にわかりやすく、下記のように記載することができるようになるわけです。

explorerの行が一貫性のあるパスになった。

このようにすることで、ファイルがどこにあるのかが一目でわかりますし、次から読み込みたいファイルを変更したい場合には、ファイル名だけ変更すればよいということになります。
※work_spaceにない場合は除く。

自動化する際の注意点


profileにこのように記載した場合は、PowerShellが起動したときにコマンドが自動で実行されます。

functionで囲まず直で記載。
PowerShellが起動してすぐにコマンドが実行される。

つまり、こういう下記のような書き方をすると、無限にタブが複製されてしまい、操作が困難になります。

!注意! 絶対に試さないでください。「NG」
ダメな例「これのPowerShell版が大量に開き続けます。」

最後に


最後までご覧いただきありがとうございました。
この記事から、少しでもCLIって楽しいんだなと思っていただけたら幸いです。

コマンドは初めは覚えるのが大変かもしれません。ですが慣れてくるとコマンドを覚えることが楽になったり、業務でCLI環境が楽しいと思えるようになり、モチベーションが上がると思います。

まずは、毎日CLI環境に触れるということから始めてみてください。

いいなと思ったら応援しよう!