
変更履歴
- Rev. 0.7 : 2025年05月10日
- 新規作成
1 はじめに
PowerShellって、従来のWindowsコマンドプロンプトや
LinuxなどUNIX系のBashなどと比べるとどうも難しい。
とにかく、“コマンドレット(cmdlet)”っていうのが、よくわからない。
訳のわからない演算子もたくさんでてくる。
「PowerShell実践ガイドブック」
なる本を購入してみたが、分厚くてくじけそうになりました。
それじゃー、理解できるところを始めようと、
まずは身近なファイル操作のコマンドレットから初めてみました。
以降、PowerShellスクリプトが書けるようになるまでを、
シリーズとして学んで行くことにしました。
① コマンドレットとは
② 主要なコマンドレットと入出力、文字列操作
③ PowerShellで使われる演算子
④ パイプラインとリダイレクション
⑤ PowerShellスクリプト
⑤についてはもっと学んで行くべき要素があると思いますが、
2025/05時点では、とりあえずざっくりとしたこの題名で。。。
第2回目は、PowerShellの主要なコマンドレットと、
入出力コマンドや文字列のクラスについて、どういうものがあるのか整理してみました。
現在Windowsコマンドプロンプトが理解できることを前提に、
PowerShellでどのような要素に置き換えられるのかという視点でまとめてみました。
本記事では、個々の要素の使い方の詳しい説明は行いません。
どのような要素があるのかをまとめただけのものであることをお断りしておきます。
【初めてのPowerShell: 作成済みの文書】
第1回目:
【初めてのPowerShell】その1)ファイル・フォルダー操作のコマンドレットと外部コマンド
2 コマンドを確認するための基本コマンドレット
まずは、どういったコマンドレットがあるのを確認する方法から。
2.1 PowerShellで使えるコマンドの表示
PowerShellで使えるコマンドレットは、 “Get-Command” で確認することができます。
パラメータ無しで起動した場合、
現在インストールされているコマンドレット、関数、エイリアスの全てが表示されます。
オプションパラメータ指定で、表示範囲を絞ることができます。
利用できるオプションパラメータは、
“Get-Help Get-Command”で確認することができます。
また、図2.1-2に示すように、 コマンド文字列を一部ワイルドカードで指定して、検索することもできます。
2.2 エイリアス
エイリアスとは、コマンドレットまたはコマンド要素
(関数、スクリプト、ファイル、実行可能ファイルなど)の代替名または短縮名です。
たとえば、“Get-ChildItem”を“ls”とすることで、
ファイルやディレクトリ一覧表示をUNIX系のコマンド風に使えるようになります。
シェルでよく使う長いコマンドを短くできるため、作業効率が上がります。
2.2.2 Windowsコマンドプロンプト互換エイリアス
PowerShellには、コマンドプロンプト“cmd.exe”や
UNIXのユーザーが使い慣れたコマンドをWindowsで使用できるさまざまなエイリアスがあります。
表2.2-1は、一般的なコマンド、
関連するPowerShellコマンドレット、PowerShellエイリアスを示しています。
表2.2-1 一般的なコマンドとコマンドレットのエイリアス
Windows | UNIX | PowerShell | PoweShellエイリアス |
---|---|---|---|
cd, chdir | cd | Set-Location | sl, cd, chdir |
cls | clear | Clear-Host | cls, clear |
copy | cp | Copy-Item | cpi, cp, copy |
del, erase, rd, rmdir | rm | Remove-Item | ri, del, erase. rd, rm, rmdir |
dir | ls | Get-ChildItem | gci, dir, ls |
echo | echo | Write-Output | write, echo |
md | mkdir | New-Item | ni |
move | mv | Move-Item | mi, move, mv |
popd | popd | Pop-Location | popd |
pwd | Get-Location | gl, pwd | |
pushd | pushd | Push-Location | pushd |
ren | mv | Rename-Item | rni, ren |
type | cat | Get-Content | gc, cat,type |
3 オブジェクト
PowerShellオブジェクトは、PowerShellで使用されるデータの構造で、
データとそのデータに関連するメソッド(操作)を持つものです。
これにより、複雑なデータを簡単に扱うことができます。
3.1 主な特徴と利点
以下は、PowerShellオブジェクトの主な特徴と利点です。
3.1.1 特徴
- 1. 属性とメソッド
-
オブジェクトは、プロパティ(属性)とメソッド(操作)を持つことができます。
たとえば、ファイルオブジェクトには、ファイル名やサイズなどのプロパティがあり、
ファイルを開く、コピーするなどのメソッドがあります。 - 2. カスタムオブジェクト
-
PowerShellでは、
“New-Object”や
“PSCustomObject”を使用して
カスタムオブジェクトを作成することができます。
これにより、特定のニーズに合わせたデータ構造を作成できます。 - 3. パイプラインとの統合
-
PowerShellオブジェクトは、パイプラインを通じて他のコマンドレットに渡すことができます。
これにより、データのフィルタリングや変換が簡単に行えます。
3.1.2 利点
- 柔軟性
-
複雑なデータ構造を簡単に扱うことができ、スクリプトの可読性が向上します。
- 再利性
-
同じオブジェクトを複数の場所で使用できるため、コードの再利用が容易です。
- 統一性
-
PowerShellのコマンドはオブジェクトをベースにしているため、
異なるデータソースからのデータを一貫して操作できます。
3.1.3 カスタムオブジェクトの例
以下は、PowerShellオブジェクトを作成し、プロパティにアクセスする簡単な例です。
3.2 オブジェクト操作のコマンドレット
オブジェクト操作の主要なコマンドレットを7.8 オブジェクトに示します。
オブジェクト操作は、PowerShellの他の要素、
パイプラインや特にPowerShell演算子と共に利用すると利便性が増します。
使用例は、パイプラインやPowerShell演算子と合わせて紹介したいので、
別記事にしたいと思っています。
本記事では、省かせていただきます。
4 文字列操作
スクリプトを書く上で、文字列操作は重要な処理の一つです。
PowerShellでは、文字列は「文字列(String型のクラス」として扱われます。
4.1 文字列の定義
PowerShellの文字列は、
ダブルクォーテーション“"”、
シングルクォーテーション“'”を使って定義します。
$str1 = ‘example1’
$str2 = “example2”
上の例では2つの書き方に違いはないですが、
ダブルクォーテーションの場合は文字列内に変数を埋め込むことが出来ます。
$x = 5 + 3
$a = '5 + 3 = ${x}'
$b = "5 + 3 = ${x}"
Write-Host $a # 5 + 3 = ${x}
Write-Host $b # 5 + 3 = 8
変数を埋め込む場合は、${変数名}のように 変数名を中かっこ(brace)“{}”で括る必要があります。
4.2 文字列型
文字列型のクラスは、文字列操作のための様々なメソッドをもっています。
文字列の操作を行うには、このことを理解しておかなければなりません。
個々のメソッドは、C言語の文字列操作ライブラリ関数を知っていれば、
特に理解し難いものではありません。
表4.2-1にPowerShellの文字列型における主なメソッドを示します。
PowerShellの文字列型クラスは、.NETのStringクラスに基づいているようです。
Stringクラス | Learn / .NET / APIブラウザー
5 出力
5.1 Out-File
コマンドレットは、
“Out-File”コマンドにファイルとして送信することができます。
Out-Fileコマンドは、
PowerShellの書式設定システムを暗黙的に使用してファイルに書き込みます。
Out-Fileコマンドは、ターミナルと同じ表示表現を受け取ります。
リダイレクト演算子(>)を使用したPowerShellコマンド
(コマンドレット、関数、スクリプト)の出力のリダイレクトは、
追加のパラメータを使用しないOut-Fileへのパイプ処理と機能的に同等です。
5.2 出力ストリーム
WindowsコマンドプロンプトおよびUNIX系のコマンドでは、
標準出力とエラー出力の二種類の出力がありました。
PowerShellでは、更に多くの種類の出力があります。
表5.2-1 PowerShellの出力ストリーム
ストリームNo. | 説明 | 導入バージョン | 書き込みコマンドレット |
---|---|---|---|
1 | 成功ストリーム | PowerShell 2.0 | Write-Output |
2 | エラーストリーム | PowerShell 2.0 | Write-Error |
3 | 警告ストリーム | PowerShell 2.0 | Write-Warning |
4 | 詳細ストリーム | PowerShell 2.0 | Write-Verbose |
5 | デバッグストリーム | PowerShell 2.0 | Write-Debug |
6 | 情報ストリーム | PowerShell 5.0 | Write-Information |
該当無し | Progressストリーム | PowerShell 2.0 | Write-Progress |
6 コンソールからの入力
コンソール(stdin)入力は、 “Read-Host”コマンドレットで受け取ります。
下に示す例の1行目は、“Please enter your age”という文字列をプロンプトとして表示します。
値を入力しEnterキーを押すと、値は$Age変数に格納されます。
2行目の使用例は、"Enter a Password”という文字列をプロンプトとして表示します。
値を入力すると、入力の代わりにアスタリスク“*”がコンソールに表示されます。
Enter キーを押すと、値は$pwd_secure_string変数に
SecureStringオブジェクトとして
格納されます。
$Age = Read-Host "Please enter your age"
$pwd_secure_string = Read-Host "Enter a Password" -AsSecureString
7 主なコマンドレット
本章では、PowerShellで使われる主要なコマンドレットの一覧を示します。
7.1 ヘルプ
表7.1-1 ヘルプ
コマンドレット | 説明 |
---|---|
Get-Help | ヘルプを表示する |
Get-Command | コマンドの一覧を取得する |
Show-Command | コマンドの引数入力ダイアログを表示する |
7.2 エイリアス
表7.2-1 エイリアス
コマンドレット | 説明 |
---|---|
Get-Alias | エイリアス情報を取得する |
Set-Alias | エイリアスを設定する |
New-Alias | エイリアスを作成する |
Remove-Alias | エイリアスを削除する |
Export-Alias | エイリアス情報をファイルにエクスポートする |
Import-Alias | エイリアス情報をファイルからインポートする |
7.3 出力
表7.3-1 出力
コマンドレット | 説明 |
---|---|
Write-Host | ホスト(コンソール)に文字列情報を出力する |
Clear-Host | ホスト(コンソール)をクリアする |
Write-Output | 成功ストリームにオブジェクト情報を出力する |
Write-Error | エラーストリームにオブジェクト情報を出力する |
Write-Warning | 警告ストリームにオブジェクト情報を出力する |
Write-Verbose | 詳細ストリームにオブジェクト情報を出力する |
Write-Debug | デバッグストリームにオブジェクト情報を出力する |
Write-Information | 情報ストリームにオブジェクト情報を出力する |
Write-Progress | 進行状況バーに進行状況を表示する |
Out-GridView | 別ウィンドウにグリッドビューとして表示する |
Out-Null | 出力を捨てる |
7.4 ロケーション
表7.4-1 ロケーション
コマンドレット | 説明 |
---|---|
Get-Location | カレントディレクトリ情報を取得する |
Set-Location | カレントディレクトリを変更する |
Push-Location | カレントディレクトリを移動し、古いディレクトリをプッシュする |
Pop-Location | プッシュしたディレクトリに戻る |
7.5 アイテム(ファイル、ディレクトリ、エイリアス、リンク、環境変数等)
表7.5-1 アイテム
コマンドレット | 説明 |
---|---|
Get-Item | アイテム情報を取得する |
Get-ChildItem | 子アイテムを取得する |
New-Item | 新しいアイテムを作成する |
Set-Item | アイテムの値を設定する |
Copy-Item | アイテムをコピーする |
Move-Item | アイテムを移動する |
Rename-Item | アイテムを名前変更する |
Remove-Item | アイテムを削除する |
Clear-Item | アイテムの値をクリアする(アイテム自体は削除しない) |
Invoke-Item | アイテムを実行する |
7.6 アイテムプロパティ
表7.6-1 アイテムプロパティ
コマンドレット | 説明 |
---|---|
Get-ItemProperty | アイテムプロパティ情報を得る |
Get-ItemPropertyValue | アイテムプロパティの値を得る |
Set-ItemProperty | アイテムプロパティを設定する |
New-ItemProperty | アイテムプロパティを作成する |
Copy-ItemProperty | アイテムプロパティをコピーする |
Move-ItemProperty | アイテムプロパティを移動する |
Clear-ItemProperty | アイテムプロパティをクリアする |
Rename-ItemProperty | アイテムプロパティを名前変更する |
Remove-ItemProperty | アイテムプロパティを削除する |
7.7 コンテント
表7.7-1 コンテント
コマンドレット | 説明 |
---|---|
Get-Content | コンテントを得る |
Set-Content | コンテントを設定する |
Add-Content | コンテントを追加する |
コンテントをクリアする |
7.8 オブジェクト
表7.8-1 オブジェクト
コマンドレット | 説明 |
---|---|
New-Object | オブジェクトを作成する |
Compare-Object | オブジェクトを比較する |
Sort-Object | オブジェクトをソートする |
Select-Object | オブジェクトを選択する |
ForEach-Object | オブジェクトの各項目に対して処理を実行する |
Where-Object | プロパティ値によってオブジェクトを選択する |
Group-Object | プロパティ値によってオブジェクトをグルーピングする |
Measure-Object | オブジェクトの行数・単語数・文字数を計算する |
Tee-Object | オブジェクトをファイルや変数に格納しながら次のパイプラインに渡す |
7.9 文字列操作
表7.9-1 文字列操作
コマンドレット | 説明 |
---|---|
Select-String | 文字列を検索する |
Out-String | オブジェクトを文字列に変換する |
Join-String | オブジェクトを連結して文字列化する |
ConvertFrom-StringData | キー=バリュー形式の文字列をハッシュテーブルに変換する |
7.10 日時・タイムゾーン
表7.10-1 日時・タイムゾーン
コマンドレット | 説明 |
---|---|
Get-Date | 日時を得る |
Set-Date | 日時を設定する |
Get-TimeZone | タイムゾーン情報を得る |
Set-TimeZone | タイムゾーンを設定する |
7.11 変数
表7.11-1 変数
コマンドレット | 説明 |
---|---|
Get-Variable | 変数情報を得る |
Set-Variable | 変数を設定する |
New-Variable | 変数を作成する |
Clear-Variable | 変数をクリアする |
Remove-Variable | 変数を削除する |
7.12 フォーマット
表7.12-1 フォーマット
コマンドレット | 説明 |
---|---|
Format-List | リスト形式にフォーマットする |
Format-Table | テーブル形式にフォーマットする |
Format-Wide | ワイド形式にフォーマットする |
Format-Custom | 独自形式にフォーマットする |
Format-Hex | 16進ダンプする |
Export-Csv | CSVファイルにエクスポートする |
Import-Csv | CSVファイルからインポートする |
ConvertTo-Csv | CSV形式にコンバートする |
ConvertFrom-Csv | CSV形式からコンバートする |
ConvertTo-Json | JSON形式にコンバートする |
ConvertFrom-Json | JSON形式からコンバートする |
Test-Json | JSON形式をテストする |
Export-Clixml | XMLファイルにエクスポートする |
Import-Clixml | XMLファイルからインポートする |
ConvertTo-Xml | XMLにコンバートする |
Select-Xml | XMLを検索する |
HTMLにコンバートする | |
ConvertFrom-Markdown | Markdownからコンバートする |
Show-Markdown | Markdownを表示する |
7.13 プロセス
表7.13-1プロセス
コマンドレット | 説明 |
---|---|
Get-Process | プロセス情報を得る |
Start-Process | プロセスを開始する |
Stop-Process | プロセスを終了する |
Wait-Process | プロセスの停止を待つ |
Debug-Process | プロセスをデバッグする |
以上
本記事の元となっているWordで作成したPDFを
ページ最後に貼り付けました。
少しでも役に立てていただければ、うれしく思います。
このPDFファイルは、自由に配布されてもかまいません。
ただし、再配布の際には、
入手元と著者名は明らかにしてください。
なお、上のPDFファイルの内容、また本文中の記述に、
誤字や脱字、誤った内容の記述など見つかりましたら、
下に示すフォームでご連絡いただければ幸いです。