【初めてのPowerShell】その2)主要なコマンドレットと入出力、文字列操作

変更履歴

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.1 エイリアス一覧

登録済みのエイリアスは、
図2.2-1に示すように “Get-Command -CommandType Alias”で確認することができます。

2.2.2 Windowsコマンドプロンプト互換エイリアス

PowerShellには、コマンドプロンプトcmd.exe”や
UNIXのユーザーが使い慣れたコマンドをWindowsで使用できるさまざまなエイリアスがあります。

表2.2-1は、一般的なコマンド
関連するPowerShellコマンドレットPowerShellエイリアスを示しています。

表2.2-1 一般的なコマンドとコマンドレットのエイリアス

WindowsUNIXPowerShellPoweShellエイリアス
cd, chdircdSet-Locationsl, cd, chdir
clsclearClear-Hostcls, clear
copycpCopy-Itemcpi, cp, copy
del, erase, rd, rmdirrmRemove-Itemri, del, erase. rd, rm, rmdir
dirlsGet-ChildItemgci, dir, ls
echoechoWrite-Outputwrite, echo
mdmkdirNew-Itemni
movemvMove-Itemmi, move, mv
popdpopdPop-Locationpopd
pwdGet-Locationgl, pwd
pushdpushdPush-Locationpushd
renmvRename-Itemrni, ren
typecatGet-Contentgc, cat,type

2.3 コマンドレットのヘルプ表示

PowerShellでは、 “Get-Help”でコマンドレットの使い方を表示させることができます。

また、動的ヘルプが「F1キーにマップされています。

Learn / PowerShell / 動的ヘルプの使用

下に示すような状態で、「F1キーを押下すれば、
図2.3-2に示すように“Get-Help”コマンドレットと同様のヘルプが表示されます。

完全に展開されたコマンドレット名の末尾にカーソルがある状態で「F1キーを押す。
 
完全に展開されたパラメータ名の末尾にカーソルがある状態で「F1キーを押すと、
コマンドレットのそのパラメータ以降のヘルプが表示されます。

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-1PowerShellの文字列型における主なメソッドを示します。
PowerShellの文字列型クラスは、.NETStringクラスに基づいているようです。

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.0Write-Output
2エラーストリームPowerShell 2.0Write-Error
3警告ストリームPowerShell 2.0Write-Warning
4詳細ストリームPowerShell 2.0Write-Verbose
5デバッグストリームPowerShell 2.0Write-Debug
6情報ストリームPowerShell 5.0Write-Information
該当無しProgressストリームPowerShell 2.0Write-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-Hex16進ダンプする
Export-CsvCSVファイルにエクスポートする
Import-CsvCSVファイルからインポートする
ConvertTo-CsvCSV形式にコンバートする
ConvertFrom-CsvCSV形式からコンバートする
ConvertTo-JsonJSON形式にコンバートする
ConvertFrom-JsonJSON形式からコンバートする
Test-JsonJSON形式をテストする
Export-ClixmlXMLファイルにエクスポートする
Import-ClixmlXMLファイルからインポートする
ConvertTo-XmlXMLにコンバートする
Select-XmlXMLを検索する
HTMLにコンバートする
ConvertFrom-MarkdownMarkdownからコンバートする
Show-MarkdownMarkdownを表示する

7.13 プロセス

表7.13-1プロセス

コマンドレット説明
Get-Processプロセス情報を得る
Start-Processプロセスを開始する
Stop-Processプロセスを終了する
Wait-Processプロセスの停止を待つ
Debug-Processプロセスをデバッグする

以上

本記事の元となっているWordで作成したPDFを
ページ最後に貼り付けました。

少しでも役に立てていただければ、うれしく思います。

このPDFファイルは、自由に配布されてもかまいません。
ただし、再配布の際には、
入手元著者名は明らかにしてください

なお、上のPDFファイルの内容、また本文中の記述に、
誤字や脱字、誤った内容の記述など見つかりましたら、
下に示すフォームでご連絡いただければ幸いです。

お問い合わせ