本記事は Microsoft Learn の 「PowerShell の概要」というモジュールをまとめたものである。
PowerShell とは
PowerShellは、コマンドラインシェルとスクリプト言語の2つで構成されている。もともとは Windows の管理作業を自動化するためのツールだったが、今ではクロスプラットフォームで様々なタスクに使われている。PowerShell の特徴は次の通り。
- グラフィカルな操作ではなく、テキストコマンドをコンソールに入力して操作する
- コマンド操作はグラフィカルインターフェイスより速いことが多い
- コマンドの一括実行(バッチ処理)ができ、自動化や継続的インテグレーションに向いている
- クラウドや他のリソースの管理にも使える
- コマンドやスクリプトをテキストファイルとして保存し、ソース管理や監査が可能。特に政府システムなど、すべての操作をトレース・評価・監査が求められる環境で役立つ
機能
PowerShell と従来のシェルには共通点と違いがある。
共通点:
- 組み込みヘルプ: コマンドの説明や使い方を調べられる仕組みがある。PowerShell はオンラインヘルプとも連携している
- パイプライン: コマンドの出力を次のコマンドの入力としてつなげて実行できる。PowerShell はオブジェクト単位で処理する点が特徴
- エイリアス: よく使うコマンドに別名を付けられる。たとえば、cls や ls はおなじみのエイリアス
PowerShellの特徴・違い:
- オブジェクトを操作: 従来シェルはテキストとして処理していたが、PowerShell は入力や出力をオブジェクトとして扱うため、データ抽出や書式設定が効率的
- コマンドレット: PowerShell のコマンドは「コマンドレット」と呼ばれ、共通のランタイム上で動作する。これによりパラメーター解析やパイプラインの動作が一貫し、高機能
- 多様なコマンド形式: 実行可能ファイル、関数、スクリプト、エイリアスなど、さまざまな形態のコマンドを扱える
インストール
PowerShell は、さまざまなプラットフォームで使用できるが、 Linux、macOS、または古いバージョンの Windows で使用する場合は、インストールする必要がある。PowerShell をインストールする手順は、OS によって異なる。
Windows
Windows 8 以降のバージョンを使っている場合は、すでに「Windows PowerShell」というバージョンの PowerShell がインストールされてりる。このバージョンは最新の PowerShell とは少し違うが、学習するには問題ない。
他の OS
「 さまざまなバージョンの PowerShell をインストールする」を参照し、インストールが必要。
初めて PowerShell のコマンドを実行する
- Azure Cloud Shell で、[PowerShell に切り替える] を選択してから、[確認] を選択する
- Cloud Shell で次のコマンドを実行した後、Enter キーを押して、PowerShell を使うようにシステムが設定されていることを確認する
$PSVersionTable
出力には、PowerShell のバージョンのほか、プラットフォームとエディションに関する情報も表示される。
- Cloud Shell で次のコマンドを実行した後、Enter キーを押す
$PSVersionTable.PSVersion
この出力により、使用している PowerShell のバージョンに関する詳細がわかる。
コマンドを見つける
コマンドレットは、.NETや.NET Coreで作られたコンパイル済みのコマンドで、PowerShell 内で使える。PowerShell には何千ものコマンドレットがあり、その内容やできることを見つけるのが課題。コマンドレットの名前は「動詞-名詞」の形で付けられていて、これにより動作の内容や検索が分かりやすくなっている。また、開発者も統一した名前を付けやすくなる。動詞の一覧は、Get-Verb
コマンドレットを使うと表示でき、動詞は用途別に整理されている。
Verb AliasPrefix Group Description
---- ----------- ----- -----------
Add a Common Adds a resource to a container, or atta…
Clear cl Common Removes all the resources from a contai…
コマンドレットについて理解を深めるために、次の3つの主要なコマンドレットがある。
-
Get-Command
- システムで使えるすべてのコマンドレットやコマンドを一覧表示する
- 条件を指定して絞り込み、目的のコマンドをすばやく見つけることができる
-
Get-Help
- 指定したコマンドレットの詳しい使い方や説明を表示する
- help というエイリアスコマンドも使える
- ページ分割機能があり、長い説明も読みやすくなっている
-
Get-Member
- コマンドレットの実行結果は多くの場合オブジェクトで返される
- このコマンドレットを使うと、そのオブジェクトの持つプロパティ(情報の種類)やメソッド(操作できる動作)を確認できる
- 結果の詳細を掘り下げて理解するのに役立つ
Get-Command を使用してコマンドを検索する
PowerShell では、膨大な数のコマンドレットが利用可能なため、Get-Command
コマンドレットを使って一覧を表示し、-Verb
や -Noun
パラメーターで動詞や名詞を指定して絞り込むことができる。ワイルドカードを使ったパターンマッチも可能で、これにより目的のコマンドを効率よく検索できる。動詞の一覧は Get-Verb で確認できる。
- -Noun: コマンドレット名の「名詞」部分を対象に検索するためのオプション。 たとえば、「alias」を指定すると、その名詞を含むコマンドレットが一覧表示される
Get-Command -Noun alias*
- -Verb: コマンドレット名の「動詞」部分を対象に検索するためのオプション。 -Noun と -Verb を組み合わせて、さらに詳細な検索クエリと種類を作成できる
Get-Command -Verb Get -Noun alias*
コマンドを見つける
コマンドを見つけるには、Get-Command
コマンドレットを実行する。 このコマンドレットを使用すると、システムにインストールされているすべてのコマンドレットを検索できる。
1.-Noun オプションを指定して、Get-Command
を実行する。 ファイルに関連するものを検索するには、File* を指定する
Get-Command -Noun File*
2.-Noun オプションと -Verb オプションを指定して、Get-Command
を実行する。
Get-Command -Verb Get -Noun File*