Windows 10のPowerShellで実践できる15の高度なタスク〜初心者から一歩進むために
PowerShellは、初めて触れるユーザーにとって非常に敷居が高い存在に映るかもしれません。テキストベースのインターフェースには、どこか難解で古風な印象があります。しかし、使いこなせるようになれば、これまで想像もしなかった方法でPCを思い通りに操作できるようになるのです。
PowerShellのエキスパートは、システムのあらゆる領域に関わる多彩なタスクを実行できます。ただし、そのような熟練度に到達するには、まず基本を理解し、実践を重ねることが欠かせません。本記事で紹介する15のタスクを理解すれば、PowerShellとは何かをつかみ、その能力がどこまで及ぶのかを体感できるでしょう。
管理者権限でPowerShellを起動する
以下の作業を始める前に、まず管理者権限でPowerShellを起動する必要があります。Windowsの検索バーに「powershell」と入力し、表示された結果を右クリックして「管理者として実行」を選択しましょう。
あるいは、検索バーに「powershell」と入力した状態で Ctrl + Shift + Enter を押しても、同じ結果が得られます。
日付と時刻を設定する
PCの日付を設定する方法は数多くありますが、次のPowerShellコマンドはシンプルなので、初心者の練習にぴったりです。ただし、他人のPCでこれらのパラメーターを変更するときは注意が必要です。システム時計がずれたまま放置されると、Active Directory環境に深刻な混乱をもたらしかねません。
まず、管理者権限でPowerShellプロンプトを開き、次のコマンドを入力します。
Set-Date -date "12/25/2016 7:30 AM"
Enterキーを押すと、PCはクリスマスの日付になったと認識します。学んだ内容を試すために同じコマンドで正しい日時に戻してもよいですし、設定アプリから自動的に日時を同期させるよう再設定しても構いません。
日付と時刻を調整する
場合によっては、日付や時刻を完全に変更するのではなく、少しだけ調整したいこともあるでしょう。その場合は、先ほどと同じ Set-Date コマンドレットを、少し異なる方法で使います。
Set-Date (Get-Date).AddDays(2)
このコマンドでは、現在PCに設定されている日付を取得し(Get-Date)、そこへ指定した日数を加算する処理(AddDays)を実行しています。AddHours、AddMinutes、AddSeconds を使えば時間単位で細かく調整できますし、数値の前にマイナス記号を付ければ、時刻を未来ではなく過去へ戻すことも可能です。
ファイルやフォルダーの存在を確認する
PowerShellのコマンドを使えば、エクスプローラーを何度も開かなくても、特定のファイルやフォルダーがPC上に存在するかどうかを手軽にチェックできます。ここで活躍するのが Test-Path コマンドレットです。指定したパスに何かが存在するかどうかを検証してくれます。たとえば「Documents」フォルダー内の「PowerShell.xls」というファイルを探すなら、次のようなコマンドになります(実際のパスはフォルダー構成によって異なります)。
Test-Path c:\Users\Brad\Documents\PowerShell.xls
また、正確なファイル名を知らなくてもスキャンは実行できます。アスタリスク(*)をワイルドカードとして使えば、特定の拡張子を持つファイルだけを探すといったことも可能です。
Test-Path c:\Users\Brad\Documents\*.xls
ファイルやフォルダーの名前を変更する
ファイルパスを正確に入力できるようになったら、PowerShellでファイルやフォルダーの名前を素早く効率的に変更してみましょう。Rename-Item コマンドレットで始め、続けて既存のパス、そして新しい名前を指定します。
Rename-Item c:\Users\Brad\Documents\PowerShellisDifficult.xls PowerShellisEasy.xls
ファイルやフォルダーを移動する
Rename-Item を使ったことがあれば、PowerShellでのファイル移動も簡単です。新しい名前を指定していた部分を、移動先の場所に置き換えるだけです。
Move-Item c:\Users\Brad\Documents\PowerShellisEasy.xls c:\Users\Brad\Important Documents
さらに、先ほど紹介したワイルドカードと組み合わせれば、特定の種類のファイルをまとめて別のフォルダーへ移動することもできます。
Move-Item c:\Users\Brad\Documents\*.xls c:\Users\Brad\Important Documents
プログラムを起動する
Invoke-Item コマンドレットを使うと、PowerShellプロンプトから直接アプリケーションやファイルを開けます。
Invoke-Item c:\Windows\System32\notepad.exe
また、アプリケーションがWindowsのパスに含まれているなら、名前を入力するだけで同じことができます。
notepad
既定のプログラムでファイルを開く
このコマンドレットは、ファイルを開く用途の方が実は便利ですが、事前に知っておくべき注意点があります。Invoke-Item でファイルを開くと、既定のプログラムとして設定されているアプリで開かれます。そのため、あらかじめ意図したプログラムが既定に設定されているかを確認しておきましょう。
Invoke-Item c:\MakeUseOf\Hello.txt
ファイルをまとめて開く
Invoke-Item コマンドレットが真価を発揮するのは、先ほどのワイルドカード「*」と組み合わせたときです。このコマンドを使えば、フォルダー内のファイル全体を一瞬で開くことができます。
Invoke-Item c:\MakeUseOf\*.txt
テキストファイルを読む
PowerShellのテキストベースのインターフェースが、VLCのように多種多様なファイル形式を表示できるわけではありません。しかし、Get-Content コマンドを使えば、.txtファイルの内容を表示するには十分すぎるほどです。
Get-Content c:\MakeUseOf\Hello.txt
ただし、特に大きなファイルの場合は、ドキュメント全体ではなく冒頭だけをプレビューしたいこともあるでしょう。そんなときは -totalcount パラメーターを使います。
Get-Content c:\MakeUseOf\Hello.txt -totalcount 5
このように、ドキュメントの最初の5行だけが表示されます。
テキストファイルに追記する
Add-Content コマンドレットを使えば、.txtファイルの読み取りにとどまらず、内容の追記まで行えます。
Add-Content c:\MakeUseOf\Hello.txt "written by Brad Jones"
ただし、この方法では追加したテキストがドキュメントの末尾にそのまま連結され、意図した結果にならないことがあります。
そこで、追記を新しい行から始めたい場合は、特殊文字を使って指定します。
Add-Content c:\MakeUseOf\Hello.txt "`nwritten by Brad Jones"
PowerShellを操作しているうちに、覚えておくと便利な特殊文字がいくつか登場します。`b はバックスペース、`t は水平タブを表します。また、`' はシングルクォート、`" はダブルクォートを出力するのに使えます。
テキストファイルの行数を測る
名前のわからないファイルを探しているときや、1日のプログラミングでどれだけコードを書いたか知りたいときなど、PowerShellにはテキストファイルの行数を効率的に測定する方法が用意されています。次のコマンドを使用します。
Get-Content c:\MakeUseOf\Hello.txt | Measure-Object
ここでは2つのコマンドレットをパイプラインで組み合わせています。この手法は、PowerShellを深く学ぶほど重要性が増していきます。
セキュリティとシステム管理
PCの挙動がおかしいとき、通常使っている診断ツールにアクセスできないケースがあります。こうしたときに、PowerShellで同じ情報を取得する方法を知っていると非常に役立ちます。
Get-Service は覚えておく価値のあるコマンドレットのひとつです。呼び出すだけで、PCにインストールされているすべてのサービスとその現在の状態が表示されます。
Get-Service
さらに、より複雑なコマンドを使えば、表示したいサービスの種類を絞り込むこともできます。
Get-Service | Where-Object {$_.status -eq "stopped"}
これは、各オブジェクト(コマンド内では $_ で表される)の状態をチェックし、現在停止中のサービスだけを表示します。「stopped」を「running」に置き換えれば、実行中のサービス一覧を得ることもできます。
サービスを再起動する
問題の原因となるサービスを特定できたら、PowerShellから直接再起動できます。
Restart-Service dbupdate
また、システム内部の分かりにくい名前ではなく、表示名でサービスを指定できるパラメーターも用意されています。
Restart-Service -displayname "Dropbox Update Service"
サービスの設定を変更する
単純な再起動では解決しないサービス問題もあります。起動時に自動的に開始する設定になっている厄介なサービスが原因なら、PowerShellでこの設定を変更できます。
Set-Service dbupdate -startuptype "manual"
目的に応じて、「manual」の代わりに「automatic」や「disabled」も使用できます。
固まったアプリを復旧させる
アプリがスプラッシュ画面のまま固まったり、起動に失敗したりすると、非常にストレスを感じます。Windows 10では従来のプログラムよりもアプリが重視されましたが、こうしたソフトウェアはユーザーがトラブルシューティングできる余地が少ないものです。
しかし、PowerShellを使えば、この種の問題への回避策を講じられます(MakeUseOfの読者Gary Beaty氏によるヒントです)。
Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}
これはこれまで扱った中で最も複雑なコマンドなので、すべての要素をすぐに理解できなくても落胆しないでください。とはいえ、これまで学んだコマンドレットやパラメーターの概念、記事内で紹介したテクニックをもとに、何が行われているのかを部分的にでも解読しようと挑戦してみる価値は十分あります。
次のステップへ
今回の15のテクニックは、PowerShellの能力のごく入門編にすぎません。さらに深く掘り下げるには、多少のコーディング知識、あるいは学ぼうという意欲が必要ですが、費やした時間は必ず報われます。
まずはMicrosoftの公式ドキュメント「Windows PowerShell オーナーズ マニュアル」から始めるのがおすすめです。その後はRedditのPowerShellコミュニティ(r/PowerShell)を覗いてみるのもよいでしょう。参加者の大半がエキスパートなので、最初は圧倒されてしまうかもしれません。しかし、経験豊富なユーザーの技を見て、自分のスキルアップへの刺激を得るには絶好の場所です。
PowerShellについて助けが必要ですか?それとも、自分の知識を共有する準備はできていますか?ぜひコメント欄で意見を交わしてみてください。
-
Windows 11でPowerShellを更新する3つの方法【初心者向け完全ガイド】
Windowsオペレーティングシステムを常に最新のソフトウェアとセキュリティアップデートの状態に保つことは、パソコンを快適に維持するために欠かせません。特にWindows 11は、以前のバージョンよりもセキュリティが強化されて設計されていますが、だからといってセキュリティ上の問題が一切起こらないわけではありません。OSを最新の状態に保てば、Microsoftが提供する新機能や新しい能力にもいち早くアクセスできるようになります。 当ブログを定期的にお読みの方なら、ソフトウェアの更新とパッチ適用の重要性はすでにご存じかもしれません。通常、これは最新のOSアップデート、サードパーティ製ソフトウェアの
-
Windowsでタスクを自動化する方法【タスクスケジューラ活用ガイド】
ノートパソコンやデスクトップPCは、多くの人にとって欠かせないツールとなっています。仕事をこなすのも、家族や友人との連絡も、一日の終わりにリラックスすることも、Windowsが動作するデバイスならすべてこなせます。こうした環境を常に快適に保つため、Windowsはバックグラウンドで更新プログラムの確認や一時ファイルの削除など、数多くのメンテナンスタスクを自動的に実行しています。これらは「タスクスケジューラ」というツールによって管理されており、このツールは自分で作成したスクリプトでも自由にカスタマイズできます。基本的な使い方としては、特定の条件が満たされたときに特定のアプリを自動的に開くといった