Windowsの自動化ならPowerShell


 

PowerShellとは

シェルスクリプトです。OSをコマンドライン(文字列)で操作するための言語です。通常、PCはマウスで操作しますが、文字列をPCに伝えて動作させるのがシェルスクリプトです。マウスと違って直感的な操作はできませんが、同じことを何度も繰り返すときは便利。一度処理を記述しておけば、クリック一つで実行できるからです。

PowerShellはWindowsのシェルスクリプトです。Macの場合はzsh、Linuxはbashと、OSによって既定のシェルスクリプトは違いますが、記述方法は違っても同じような処理は実現できるので調べてみてください。


どんなことができるのか

・ファイル・フォルダを別の場所にコピーする。(バックアップをとる)

・ファイルを作って、ファイル名をその日の日付にする。

・あるフォルダ内のファイル名の末尾に同じ文字列を追加する

・あるファイル・フォルダ・URLを開く

・文字コードを一気に変換する

・ある文字列をクリップボードにコピーする。
 (お決まりのパスワードをクリップボードにコピー。あとは貼り付けるだけ)

組み合わせ次第で可能性は広がります。


使い方

PowerShellの実行方法は2つあります。

1.コンソール方式

スクリプトを書くとき、狙い通りに処理が実行されるか確かめるのに使います。

・スクリプト案を準備する(後述)。

・Windowsキー+r→[ファイル名を指定して実行]がでてくる→「powershell」と入力してEnter→青のコンソール画面がでてくる

・準備したスクリプトをCtrl+vで貼り付け→Enter→実行される。

・問題があるときは赤字でエラーが出る。エラーが出るときはスクリプトを1行ずつ実行してどこでエラーが出るのか調べ、原因を探っていく。

・コンソールを閉じたいときはexitを入力してEnter(あるいは右上のバツ印)



2.バッチ方式

簡単に処理を実行する方法。スクリプトが完成すれば後はこの方法を使います。

・完成したスクリプトを準備する。

・Powersellスクリプトを作る。
 任意のフォルダにテキストファイルを作る→拡張子を変える。.txt→.ps1
 ps1ファイルに、準備したスクリプトを貼り付ける→保存して閉じる
 ps1ファイルのパス(場所を指定する住所)をコピーする。ファイルを選択してShifキーを押しながら右クリック→"パスのコピー"→これを控えておく

・バッチファイルを作る。
 テキストファイルを作って以下を記述する。下線はさきほど控えたパス名にする。

@echo off
PowerShell F:\pc\powershell\backup\backup.ps1
exit

 テキストファイルを閉じて、ファイルの拡張子を変える。.txt→bat
「拡張子を変更するとファイルが使えなくなる可能性があります。変更しますか」→「はい」

・バッチファイルを実行する
 バッチファイルをダブルクリックすれば処理が実行される。


・エラー「このシステムではスクリプトの実行が無効になっているため、ファイル xxx.ps1 を読み込むことができません。」→設定を変更する。

powershellを管理者権限で起動する。WindowsキーでPowershellを検索→Powershellを右クリック→「管理者として実行」→はい

Set-ExecutionPolicy RemoteSigned

y→Enter


 

・パスを通してさらに簡単に
 「Windows パスを通す」で検索→任意のフォルダにパスを通す→そのフォルダに先ほどのバッチファイルのショートカットを置く。ショートカットのファイル名はたとえば「bat1」など
  windowsキー+r→「ファイル名を指定して実行」→「bat1」を入力してEnter→スクリプトが実行される


スクリプトの作り方

1.体系的に学ぶ

最初は本やYoutuebeで体系的に学ぶのが良いと思います。私は「Windows PowerShellでキーボード操作を自動化しよう」という本を読みました。短くて読みやすかったです。Powershellに関する本はたくさん出ているのでご自身に合うもの探してください。

2.調べながら書く

実際に「こんな処理を実行したい」と思っても、一からスクリプトを書くのは難しいです。予想外のエラーが出てきて心を折ってきます。ですから、実行したい処理をネットで検索して出てきたスクリプトを改変していくのがおすすめです。
(例)現在の日時をファイル名につける処理なら「Powershell 現在の日時 ファイル名」で検索。


スクリプト例

私が使っているスクリプトを紹介します。

バックアップを取る
フォルダ内の全ファイルを別の場所にコピーする。

文字列をクリップボードにコピーする
パスワードを設定しておくと便利

ファイル名の文字列を一括置換する
フォルダ内の全ファイルに対してファイル名の文字列を置換する。

現在の日時をファイル名にする
ログを取るときに使えます

ファイルから日付を探して、その日付をファイル名にする

Webページを開く
よく見るページを一度に開ける

Git Push
私はHPをバージョン管理システムGitで管理しているので欠かせません。