PowerShellを家庭で活用する方法 – 初心者向け徹底ガイド
魔法使いになって、呪文をひとつ唱えるだけで不思議なことが起こる——そんな夢を抱いたことはありませんか?本物の魔法は教えられませんが、パソコン上でちょっとした「魔法」を実現する方法ならお教えできます。
Windows 7がインストールされたパソコンをお持ちなら、すでにPowerShellは使える状態になっています。ちなみに、まだWindows 7をご利用の場合は、セキュリティの観点から早めのアップデートを強くおすすめします。
この記事はWindowsユーザーだけのものではありません。最新版のPowerShellは無料で提供されており、MacやLinuxのパソコンにもインストールして使えます。
これは重要なポイントです。つまり、ここで身につけたPowerShellのスキルは、ほぼどんなコンピューターでも応用できるということです。もしかしたら、このスキルをきっかけに、IT業界へのキャリアへとステップアップするかもしれませんよ。
PowerShellとは何か?
マイクロソフトの公式な説明によると、PowerShellとは「システム管理者のために特別に設計されたコマンドラインシェル」です。少し難しそうに聞こえますが、心配いりません。あなたは自宅のパソコンの管理(メンテナンス)をしていますか?答えがイエスなら、あなたは自宅のシステム管理者なのです。
マウスのクリックやキーボード入力でパソコンに指示を出していますよね?それと同じように、コマンドラインシェルとは、タイプした内容でパソコンに指示を出すためのもうひとつのウィンドウだと考えてください。きっとできます。
PowerShellはプログラミング言語のようなものですが、多くの言語ほど難解ではありません。通常の英語のように読みやすいのが特徴で、これは非プログラマーでも習得できるよう、マイクロソフトが目指してきたことです。
数行のコマンド(スクリプトと呼ばれます)を書くことで、Windows OSに自分の望む動作をさせることができます。そして、その行をファイルに保存しておけば、クリックひとつで実行したり、定期的に自動実行するようスケジュールすることも可能です。
PowerShellで何ができるのか?
PowerShellの最大の目的は、タスクの自動化です。単純作業を何度も繰り返して時間を無駄にする必要がなくなります。プロのシステム管理者であれば、新しいユーザーアカウントの作成、パスワードの生成、詳細情報を記載したメールを上司への送信といった処理を自動化するでしょう。
これらを手作業(クリックと入力)で行うと、5分程度で済む場合もあれば、1時間以上かかることもあります。しかし適切なスクリプトがあれば、システム管理者はそのどの部分も手作業で行う必要すらなくなります。
さて、家庭でPowerShellを使って何ができるのでしょうか?答えは「繰り返しやりたくないこと、ほぼすべて」です。たとえば、不要な一時ファイルやログファイルを削除してハードドライブの空き容量を確保できます。
子どものパソコンに使用時間の制限を設けたり、大量のファイルをまとめてリネーム・整理したりすることも可能です。これこそがPowerShellの魅力です。パソコンでできることのほとんどは、PowerShellスクリプトを作成して自動化し、クリックひとつまたはスケジュール実行できるのです。
PowerShellはどうやって使うのか?
PowerShellを使う最も簡単な方法は、PowerShell統合スクリプティング環境(ISE)を利用することです。Windows 10では、スタートボタンをクリックし、検索バーにpowershell iseと入力すれば見つかります。以下のように表示されるはずです。
初めて使うときは、管理者として実行しましょう。そのためには、まずパソコンの管理者権限が必要です。スタートメニューでPowerShell ISEを右クリックし、管理者として実行を選択してください。
ユーザーアカウント制御(UAC)の警告ポップアップが表示され、「本当に実行しますか?」と確認されることがあります。はいをクリックしてください。
これでPowerShell ISEの画面が開きました。ウィンドウ上部のペイン(1)はスクリプトペインです。ここにスクリプトを書きます。下部のペイン(2)はコンソール領域で、スクリプトをテストすると、その出力結果がここに表示されます。
エラーメッセージなどもここに表示され、スクリプトの修正や改善に役立ちます。ウィンドウ右側のペイン(3)はコマンドアドオンです。利用可能なすべてのPowerShellコマンドが載った辞書のようなものと考えてください。
PowerShellは初期設定では、Windowsに標準搭載されているスクリプト以外は実行できないようになっています。自分で作成したスクリプトを実行できるよう、設定を変更する必要があります。
スクリプトウィンドウに、以下のコードをコピー&ペーストしてください。
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Set-ExecutionPolicyの部分は「コマンドレット(cmdlet:コマンドレットと発音)」と呼ばれます。コマンドレットは強力な機能です。短いコマンドをWindowsに与えると、Windowsがその背後でより複雑な処理を行ってくれる、とイメージしてください。
例えるなら、子どもに「部屋を片付けて」と伝えるようなものです。短く要点だけを伝えます。部屋の片付けに慣れた子どもなら、ベッドを整え、洗濯物をかごに入れ、おもちゃや本を棚に戻し、掃除機までかけてくれるかもしれません。「Clean-YourRoom」というコマンドレットには、それらすべてが含まれていると理解しているわけです。
ウィンドウ上部に緑色の矢印が見えますね。それをクリックするとコマンドが実行されます。
-ExecutionPolicyの部分は、Set-ExecutionPolicyに対して「どのポリシーを設定するか」を指定するパラメータです。「このガイドラインに従って、具体的にこれを実行してほしい」という指示であり、RemoteSignedという特定のポリシーの使用を伝えています。
RemoteSignedポリシーでは、インターネットからダウンロードしたスクリプトは、信頼できる発行者によって署名されていない限り、PowerShellは実行できません。裏を返せば、ローカルで作成したスクリプトは署名不要で自由に実行できるということです。これで、あなたがパソコン上で書いたスクリプトはすべて実行できるようになります。
次に、一時ファイルを削除するスクリプトを見てみましょう。CCleanerほど強力でも徹底的でもありませんが、CCleanerには独自の問題点もあります。
PowerShellでハードドライブの空き容量を作る
このスクリプトを1行ずつ分解して解説し、仕組みがわかるようにします。最後に完成版のスクリプト全体を掲載するので、必要ならコピー&ペーストして使えます。
$TempFileLocation = "C:\Users\username\Appdata\Local\Temp\*"
先頭にドル記号($)が付いているものは変数名です。貴重品を入れる財布のようなものと考えてください。ドル記号といえば財布、そして「valuables(貴重品)」は「variable(変数)」と音が似ているので、覚えやすいはずです。ここでは$TempFileLocationという名前の財布(変数)を作成しています。等号(=)は、その変数に何を入れるかをPowerShellに伝えます。
この場合、Windowsの一時ファイルの場所であるC:\Users\username\AppData\Local\Temp\*を格納しています。この場所を選んだ理由は2つあります。第一に、常に安全にファイルを削除できる場所だからです。第二に、PowerShellにどこへ行ってファイルを削除すべきかを指示するために使うからです。
パスの中のusernameの部分は、ご自身のユーザー名に置き換えてください。パソコンにログインするときに使うユーザー名のことです。末尾のアスタリスク(*)はワイルドカードで、Tempフォルダ内のすべてを意味します。Tempフォルダの中身はすべて一時的なものなので、全部削除したいわけです。
場所を囲む二重引用符(")も重要です。これは中身が文字列であることをPowerShellに伝えます。文字列とは、文字や記号の連なりだと考えてください。もし普通の数字であれば、引用符は不要です。
$TempFile = Get-ChildItem $TempFileLocation -Recurse
次に別の変数を作ります。今度はコマンドを使って、$TempFile変数に入れる値を取得します。
Get-ChildItem
Get-ChildItemのようなコマンドレットについて気づくのは、非常に読みやすいという点です。最初の単語が動詞になっていることに注目してください。コマンドレットはすべてアクションの言葉で始まるので、何をするものか即座にわかります。ChildItemは2つの名詞です。
コマンドレットの後半部分は、必ず「PowerShellがそのアクションを何に適用するか」を示します。ChildItemとは親となる場所の子要素すべてのことです。フォルダ内のすべてのファイルを取得する、と言っているようなもので、ファイルが子、フォルダが親に相当します。
では、何の子要素を取得するのでしょうか?変数$TempFileLocationの中にあるすべてです。PowerShellは先ほど$TempFileLocationに格納した場所へ移動し、そこにあるすべての子要素を取得して、変数$TempFileに格納します。
では、-Recurseの部分は何でしょうか?これはGet-ChildItemに対して、その場所の中をすべて再帰的に調べるよう指示しています。親フォルダ直下のファイルだけを取得するのではなく、その中にフォルダがあれば、その子要素も、さらにその子要素も……と、すべて取得します。
$TempFileCount = ($TempFile).count
はい、3つ目の変数$TempFileCountを作成し、そこに数値を入れます。その数値はどこから来るのでしょう?($TempFile).countがその数値を返してくれます。お察しのとおり、.countの部分が、$TempFileに格納したすべてのファイルを数えています。
なぜこんなことをするのでしょう?主な理由は、残りのスクリプトでいくつの不要ファイルを削除できたかを把握できれば、その効果を測れるからです。
if($TempFileCount -eq 0)
ここで条件文を設定します。「if(もし)」と尋ねているのがわかりますね。何を?括弧内の内容が真か偽かを判定します。括弧は重要です。なければif文は何と何を比較すればいいかわかりません。ここでは、$TempFileCountに格納された数値がゼロに等しいかどうかを尋ねています。
-eqはequals(等しい)の略で、比較演算子の一種です。子どもに「部屋がきれいだったら、いいことがあるよ…」と言うのに似ています。この文は、$TempFileCountに格納された数値がゼロに等しい場合、次の処理を実行しなさい、という意味です。
{Write-Host "There are no files in the folder $TempFileLocation" -ForegroundColor Green}
これが$TempFileCountがゼロだった場合に実行される処理です。波括弧({})は重要です。$TempFileCountがゼロの場合にのみ、波括弧内の処理を実行するようPowerShellに指示しています。
ホスト、つまり画面に「There are no files in the folder C:\Users\username\Appdata\Local\Temp\*」(フォルダにファイルはありません)と出力されます。末尾のパラメータ-ForegroundColorは、テキストを緑色で表示するようPowerShellに指示します。これは通常赤色で表示されるエラーメッセージと区別しやすくするためです。
Else
Elseの意味はご存じのとおりです。「部屋を片付けないと、いいことがないぞ…」という、子どもの部屋チェックの「さもなくば」の部分です。$TempFileCountがゼロでなかった場合に実行される処理です。
{$TempFile | Remove-Item -WhatIf -Confirm:$false -Recurse -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue}
これは、$TempFileに格納された場所へ移動しなさい、という意味です。直後の縦線は「パイプ」と呼ばれます。実際のパイプのように機能し、$TempFileの中身をコマンドレットへ流し込むようPowerShellに指示します。洗濯機に水をパイプで送り込むようなイメージです。そしてコマンドレットRemove-Itemは、その名のとおり、その場所にあるものを削除します。
-WhatIfパラメータは、この段階では非常に重要です。PowerShellにコマンドを実行させるものの、あくまで試験的な実行にとどめ、実際には何も削除しません。本当に実行したらどうなるかを表示するだけです。
これにより、パソコン上の何も変更せずにコマンドをテストできます。スクリプトが意図したとおりの動作をすることを確認できるまで-WhatIfを残しておきましょう。問題なければ削除すれば、スクリプトが本来の仕事を行います。
パラメータ-Confirm:$falseは、本当にファイルを削除していいかを尋ねる確認を停止させます。-Recurseの意味はもう説明しましたね。-Forceは、どんな状況でも強制的に削除するという意味です。-WarningActionはSilentlyContinueに設定されています。
これにより、削除対象に関する警告が表示されなくなります。-ErrorActionもSilentlyContinueに設定されており、処理中に何らかのエラーが発生しても、そのまま処理を続行します。
さて、最後の行です。
Write-Host "Cleared $TempFileCount files in the folder $TempFileLocation" -ForegroundColor Green}
最初のWrite-Hostと同様に、何が起きたかを知らせる文章が出力されます。処理したフォルダからいくつのファイルが削除されたかを教えてくれ、見つけやすいよう緑色で表示されます。
スクリプト全体を見てみましょう。
$TempFileLocation = "C:\Users\guymcd\Appdata\Local\Temp\*"
$TempFile = Get-ChildItem $TempFileLocation -Recurse
$TempFileCount = ($TempFile).count
if($TempFileCount -eq "0") {
Write-Host "There are no files in the folder $TempFileLocation" - ForegroundColor Green
}
Else {
$TempFile | Remove-Item -Confirm:$false -Recurse -Force -WarningAction SilentlyContinue -ErrorAction SilentlyContinue
Write-Host "Cleared $TempFileCount files in the folder $TempFileLocation" -ForegroundColor Green
}
このコードをPowerShell ISEにコピー&ペーストし、delete-TemporaryFiles.ps1のような名前で保存できます。コマンドレットの命名規則が理解できたところで、命名規則に従っておくと良いでしょう。
何らかの理由でコードがうまく動作しない場合は、作成済みのPowerShellスクリプトをダウンロードして実行することもできます。まずZIPファイルを解凍してスクリプトファイルを表示してください。
このスクリプトを実行したいときは、ファイルを右クリックしてPowerShellで実行を選択するだけです。PowerShellコンソールが1〜2秒ほど表示され、スクリプトが処理を行い、エラーがなければ自動的に閉じます。
PowerShellをもっと学ぶには?
かなり多いと感じましたか?初めてのPowerShellスクリプトとしては、確かにボリュームがあります。ここまで読み進められたなら、自分を褒めてあげてください。今日だけで多くのことを学びました。さらに学びたい気持ちがあるなら素晴らしいことです!
PowerShellについてさらに学べるリソースはインターネット上にたくさんあります。まずは当サイトの記事「Generate a List of Startup Programs via Command Line or PowerShell(コマンドラインまたはPowerShellでスタートアッププログラムの一覧を生成する)」から始めるのがおすすめです。その後、以下のリソースもチェックしてみてください。
- Getting Started with Microsoft PowerShell – Microsoft Virtual Academy
- PowerShell Tutorial – TutorialsPoint.com
-
Androidユーザー必見!写真ライフがもっと楽しくなるおすすめ写真アプリ5選
スマートフォンは日常生活の中心となる万能デバイスです。仕事をこなしたり、久しぶりの友人と連絡を取ったりと、あらゆる場面で活躍します。そんなスマホで私たちが最も頻繁に行うことのひとつが「写真撮影」です。しかし、撮った写真のうち、本当に満足できるものはどれくらいあるでしょうか?ある調査によると、1人平均1日に322枚もの写真を撮影している一方で、撮影した写真をじっくり見返す時間はほとんどないというデータもあります。せっかく撮るなら、完璧で思い出に残る一枚にしたいですよね。そこで今回は、あなたの写真体験を格段に向上させるAndroid向け写真アプリを5つご紹介します。ステップ1:「Open Came
-
ディスククリーンアップ完全ガイド:Windows・Macユーザー必見のストレージ整理術
「ディスクの空き領域が不足しています」「起動ディスクがほぼ一杯です」——WindowsでもmacOSでも、誰もが一度は目にしたことのある警告メッセージではないでしょうか。家の隅々にホコリや不要物が溜まっていくように、パソコンの中にも時間とともに不要なファイルやプログラム、ジャンクデータが蓄積され、動作がどんどん遅くなってしまいます。 「ハードドライブが満杯だ」とパソコンに警告されたら、この記事を参考に、ディスククリーンアップを徹底的に行いましょう。 まずは、現在のディスク空き容量を確認しよう 作業を始める前に、自分のパソコンにどれだけのディスク容量があるのかを把握しておくことが大切です。残り容