Learn-Software "PowerShell" -Basic
「シェル(コマンドラインインターフェイス)」の基本操作を習得する。
はじめに
PowerShellを用いて「シェル(コマンドラインインターフェイス)」でコンピュータを操作する方法を学ぶ。当記事で紹介するのは、PowerShellへの文字列入力の仕方とコツ、それから、ぼくが日常的によく使うコマンドだ。
「シェル」の操作はすべて「コマンド」と呼ばれる文字入力で行う。操作方法は最初はとっつきにくいかもしれないが、試行錯誤するうちに慣れてくると思う。コマンド操作といってもその内容はGUIでの日常的な操作と同じで、ファイルやディレクトリ(フォルダ)の作成、移動、コピー、削除、名前の変更、起動、一覧表示などを取り扱う。
前提条件
- ✓ PowerShellのインストール
- ✓ PowerShellの起動
- ✓ (Optional) Windows Terminalのインストール
- ✓ 検証した環境はこちら
コマンドを入力する
基本の操作
シェルにコマンドを入力してコンピュータを操作する基本的な手順は以下のとおり:
- シェルを開く:See → Launch-PowerShell
- コマンドを入力する: 例
ls
と入力する - コマンドを実行する:コマンド入力後、ENTER
- コマンドの出力を確認する:
- コマンドの実行結果が端末に出力される
- エラーが発生した場合はエラーメッセージが出力される
例:現在の日時を取得するコマンド"Get-Date “を実行する。
Get-Date
Sunday, February 16, 2025 4:11:50 PM
例: PowerShellコマンド”Get-Content “のヘルプをブラウザで読む。
Get-Help Get-Content -Online
入力補完を用いて楽をする
PowerShellコマンドの命名規則は一貫して「<動詞>-<名詞>
」という構造なので直観的に分かりやすいが、長いので手動でタイプするのが面倒でもある。コマンド入力をより楽に正確におこなうために入力補完機能を積極的に活用しよう。
- コマンド履歴 (History)
- ↑や↓キーで以前入力したコマンドを再利用することができる
- “Get-History
“コマンドで履歴の一覧を取得できる
- See → about_History
- 履歴ファイルのパスを取得:
(Get-PSReadlineOption).HistorySavePath
TAB
補完(Tab-Completion )- コマンド(またはファイル名)を途中までタイプしTABを入力
- 複数候補がある場合、TAB → TAB → …と入力すると候補を次々と切り替える
- 例:
Get-Cont
と入力 → TAB →Get-Content
と補完される
CTRL+SPACE
補完(MenuComplete )- コマンド(またはファイル名)を途中までタイプしCTRL+SPACEを入力
- 候補がリストされるので、矢印キーで選択してENTER
- 例:
Get-Ch
と入力 → CTRL+SPACE → 候補リスト表示
- PSReadLineの予測機能(IntelliSense
)
- コマンド(またはファイル名)を途中までタイプすると、コマンド履歴などに基づく予測候補を表示
- 操作:
- InlineView:デフォルト:→で受け入れ、ENTERで実行
- ListView:F2で切り替え:↑,↓で選択、ENTERで実行
- 設定確認:
Get-PSReadLineOption | Select-Object -Property PredictionSource
None
以外(たとえばHistory
)であれば有効な状態
短縮名(エイリアス)で楽に入力する
短縮名(エイリアス )が登録されているコマンドは、より短い別名で入力することができる。
- PowerShellでエイリアスを使用する方法
- エイリアスの確認:"Get-Alias “コマンドで登録されているエイリアスを確認する
- エイリアスの使用:コマンド名の代わりにエイリアスを入力
- 例:
ls
はGet-ChildItem
のエイリアス
- 例:
以下の2つのコマンドは等価。(man
はGet-Help
のエイリアス。cat
はGet-Content
のエリアス)
Get-Help Get-Content
# use aliases
man cat
コマンドのヘルプを読む
コマンドの概要や使い方は”Get-Help “コマンドで知ることができる。PowerShellのコマンドはヘルプが充実しているので、読むだけでPowerShellのよい学習になる。
- “Get-Help
“の使い方
Get-Help <Name>
Get-Help <Name> -Online
-Online
オプションは、web上にある情報をブラウザで表示する
Get-Help Get-Content
NAME
Get-Content
SYNTAX
Get-Content [-Path] <string[]>...
Get-Content -LiteralPath <string[]>...
ALIASES
gc
cat
type
REMARKS
Get-Help cannot find the Help files for this cmdlet on this computer.
It is displaying only partial help.
-- To download and install Help files for the module that include
s this cmdlet, use Update-Help.
-- To view the Help topic for this cmdlet online, type: "Get-Help
Get-Content -Online" or
go to https://go.microsoft.com/fwlink/?LinkID=2096490.
コマンドを検索する
“Get-Command “でコマンドを検索できる。
- “Get-Command
“の使い方
Get-Command *
:すべての種類のコマンドを取得Get-Command Get-*
:Get-
を含むコマンドを取得Get-Command *-Content
:-Content
を含むコマンドを取得
PowerShellコマンドの命名規則が「<動詞>-<名詞>
」という構造を知っておくと、コマンドを知らなくてもある程度存在を予想できる。オプション:-Noun
や-Verb
でそれぞれ明示的に指定して検索することもできる。
# <名詞>に「Content」を含むコマンドを検索する
Get-Command -Noun "Content"
CommandType Name Version
----------- ---- -------
Cmdlet Add-Content 7.0.0…
Cmdlet Clear-Content 7.0.0…
Cmdlet Get-Content 7.0.0…
Cmdlet Set-Content 7.0.0…
日常的なコマンド操作
ぼくにとっての日常的なコンピュータ操作とは、ファイルとディレクトリ(フォルダ)の操作である。その流れと対応するコマンドを以下に示す。同じことは、CLI(コマンドラインインターフェース)を用いずとも、エクスプローラとマウスクリックによる視覚的な操作でもできる。
操作 | コマンド(短縮名) |
---|---|
1. ディレクトリを移動する | cd , pushd , popd |
2. ディレクトリ内のファイルを一覧表示する | ls |
3. ファイルのオープン・作成・移動・コピー・削除・名前変更 | ii , mkdir , ni , mv , cp , rm , ren |
4. ファイルを編集し、保存して閉じる | アプリで編集・保存 |
実際の操作例。エイリアスやTAB補完、コマンド履歴呼び出し等を用いて入力作業を省力化している:
操作 | コマンド |
---|---|
1. ディレクトリ内のファイルを一覧表示する ( → 結果、めあてのファイルがなかったとする😢) |
ls path/to/the/directory |
2. 別のディレクトリ内のファイルを一覧表示する ( → めあてのファイルを見つけたとする🙄) |
ls path/to/the/another/directory |
3. ディレクトリを移動する | pushd path/to/the/another/directory |
4. めあてのファイルを開く | ii file.xlsx |
5. ファイルを編集し、保存して閉じる | アプリで編集・保存 |
6. もと居たディレクトリに戻る | popd |
以下、コマンドを個別に説明する。より詳しい情報はman <command> -Online
参照。
とくにコマンド ii
(Invoke-Item
のエイリアス)は便利で、ii <file>
とすると、拡張子に応じたアプリでファイルが開く。
ii
コマンドに慣れてきたら、よく使うフォルダやファイルはカレントディレクトリから移動することなく操作できるようになる:
操作 | コマンド |
---|---|
1. めあてのファイル(またはディレクトリ)を開く | ii path/to/file.xlsx |
2. ファイルを編集し、保存して閉じる | アプリで編集・保存 |
ls (Get-ChildItem )
Synopsis: 現在いるディレクトリ(カレントディレクトリ)にあるファイルとフォルダをリストする。
Param | Command | Note |
---|---|---|
Help | man ls -Online
|
|
Example | ls |
カレントディレクトリのファイルとフォルダ情報をリスト。 |
Example | ls -Name |
カレントディレクトリのファイル名とフォルダ名のみ表示。 |
Example | ls *.txt |
名前が「*.txt 」であるファイルをリスト。 |
Example | ls *.txt -Recurse |
名前が「*.txt 」であるファイルをリスト。サブディレクトリも再帰的に検索。 |
Example | Get-ChildItem | Select-Object -ExpandProperty FullName | カレントディレクトリのファイルとディレクトリのフルパスを文字列として取得。 |
→ 戻る :日常的なコマンド操作表
cd (Set-Location )
Synopsis: 指定したディレクトリに移動する。
Param | Command | Note |
---|---|---|
Help | man cd -Online
|
|
Example | cd , cd ~ |
ホームディレクトリに移動。 |
Example | cd C:/Users/btklab/ |
絶対パス指定:ユーザ「btklab」のホームディレクトリに移動。 |
Example | cd ./ |
相対パス指定:カレントディレクトリのまま(移動しない)。 |
Example | cd ../ |
相対パス指定:ひとつ上のディレクトリに移動。 |
Example | cd - |
ひとつ前に居たディレクトリに戻る。 |
→ 戻る :日常的なコマンド操作表
pushd (Push-Location )
Synopsis: 現在の場所を場所スタックの上に追加した上で指定したディレクトリに移動する。pushd
したのちにpopd
することで現在の場所(スタックの最上部に登録された場所)に戻ることができる。
Param | Command | Note |
---|---|---|
Help | man pushd -Online
|
|
Example | cd ~ ; pushd C:/Users/ |
絶対パス指定:ホームディレクトリ → ディレクトリ「Users」に移動。 |
Example | popd |
ディレクトリ「Users」の前にいた場所(ホームディレクトリ)に戻る。 |
→ 戻る :日常的なコマンド操作表
popd (Pop-Location )
Synopsis: 最後にpushd
した場所(場所スタックの最上段)に戻る。
Param | Command | Note |
---|---|---|
Help | man popd -Online
|
|
Example | cd ~ ; pushd C:/Users/ |
絶対パス指定:ホームディレクトリ → ディレクトリ「Users」に移動。 |
Example | popd |
ディレクトリ「Users」の前にいた場所(ホームディレクトリ)に戻る。 |
→ 戻る :日常的なコマンド操作表
ii (Invoke-Item )
Synopsis: ファイルやフォルダを関連したアプリで開く。
Param | Command | Note |
---|---|---|
Help | man ii -Online
|
|
Example | ii . |
エクスプローラでカレントディレクトリを開く。 |
Example | ii a.txt |
テキストエディタでファイルa.txt を開く。 |
Example | ii a.xlsx |
エクセルでファイルa.xlsx を開く 。 |
- Tips:
- 似たような機能をもつ「Start-Process
」というコマンドがある。以下はどちらもテキストエディタで
a.txt
を開く Invoke-Item "C:/path/to/file.txt"
Start-Process "notepad.exe" "C:/path/to/file.txt"
- ファイルやフォルダを簡単に開きたい場合は、Invoke-Item が便利
- 特定のアプリケーションで特定の引数とともに起動したい場合は、Start-Process が適す。
→ 戻る :日常的なコマンド操作表
mkdir (New-Item )
Synopsis: ディレクトリ(フォルダ)を新規作成する。
Param | Command | Note |
---|---|---|
Help | man mkdir -Online
|
|
Example | mkdir "newdir" |
カレントディレクトリに新規ディレクトリnewdir を作成。 |
Example | New-Item -Path . -Name "newdir" -ItemType "directory" |
同上。 |
→ 戻る :日常的なコマンド操作表
ni (New-Item )
Synopsis: ディレクトリやファイルを新規作成する。
Param | Command | Note |
---|---|---|
Help | man ni -Online
|
|
Example | ni -Path . -Name "a.txt" -ItemType "file" |
カレントディレクトリに空ファイルa.txt を新規作成。 |
Example | New-Item -Path . -Name "a.txt" -ItemType "file" |
同上。 |
→ 戻る :日常的なコマンド操作表
mv (Move-Item )
Synopsis: ファイルやフォルダを移動する、もしくはリネームする。-WhatIf
スイッチを追加すると、実行せずに動作だけを確認できる。
Param | Command | Note |
---|---|---|
Help | man mv -Online
|
|
Example | mv C:/a.txt E:/Temp/b.txt |
ファイルリネーム:ファイルa.txt をC: ドライブからE:/Temp ディレクトリに移動し、名前をb.txt に変更。 |
Example | mv -Path C:/a.txt -Destination E:/Temp/b.txt |
同上。 |
Example | ls a.txt | mv -Destination E:/Temp/ | ファイル移動:カレントディレクトリのファイルa.txt をE:/Temp ディレクトリに移動。この場合、-Destination オプションを明示すること。 |
cp (Copy-Item )
Synopsis: ファイルやフォルダをコピーする。元のファイルは削除されない。-WhatIf
スイッチを追加すると、実行せずに動作だけを確認できる。
Param | Command | Note |
---|---|---|
Help | man cp -Online
|
|
Example | cp ./a.txt ../hoge |
ファイルコピー:カレントディレクトリのファイルa.txt を一つ上の階層../ にあるディレクトリhoge にコピー。 |
Example | cp -Path ./a.txt -Destination ../hoge |
同上。 |
Example | cp -Path "C:/hoge" -Destination "C:/fuga" -Recurse |
ディレクトリコピー:ディレクトリC/hoge を中身ごとディレクトリC:/fuga にコピー |
Example | ls a.txt | cp -Destination E:/Temp/ | カレントディレクトリのファイルa.txt をE:/Temp ディレクトリにコピー。この場合、-Destination オプションを明示すること。コピー元および先のアイテムが存在しない場合はエラーを出力。 |
→ 戻る :日常的なコマンド操作表
rm (Remove-Item )
Synopsis: ファイルやディレクトリを削除。指定したアイテムが存在しない場合はエラーを返し処理は実行されない。削除したアイテムは「ごみ箱」には移動されず、元に戻せない点に注意する。-WhatIf
スイッチを追加すると、実行せずに動作だけを確認できる。
Param | Command | Note |
---|---|---|
Help | man rm -Online
|
|
Example | rm a.txt |
カレントディレクトリのファイルa.txt を削除。 |
Example | ls a.txt | rm | 同上。 |
Example | Remove-Item -Path a.txt |
同上。 |
Example | rm *.txt |
カレントディレクトリから、拡張子が.txt である1つ以上のファイルを削除。 |
Example | ls *.cache -Recurse | rm | カレントディレクトリおよびサブディレクトリから、拡張子が.cache である1つ以上のファイルを削除。 |
Example | Remove-Item a.md -WhatIf |
ドライラン:実行せずに動作結果だけがコンソールに出力される。 |
→ 戻る :日常的なコマンド操作表
ren (Rename-Item )
Synopsis: ファイルやフォルダのリネーム。-WhatIf
スイッチを追加すると、実行せずに動作だけを確認できる。
Param | Command | Note |
---|---|---|
Help | man ren -Online
|
|
Example | ren "./a.txt" "b.txt" |
ファイルリネーム:カレントディレクトリのファイルa.txt をB.txt にリネーム。 |
Example | ren -Path "./a.txt" -NewName "b.txt" |
同上。 |
Example | Rename-Item -Path "./a.txt" -NewName "b.txt" |
同上。 |
Example | Get-ChildItem *.txt | Rename-Item -NewName { $_.Name -replace ‘.txt’,’.log’ } | 複数ファイルのリネーム:カレントディレクトリにある拡張子が.txt であるファイルの拡張子を.log に一括リネーム。 |
→ 戻る :日常的なコマンド操作表
用語
- PowerShellのコマンド
-
PowerShellの世界では"コマンド"は"コマンドレット"と呼ばれる。コマンドレットの命名規則が
<動詞>-<名詞>
という構造であることを知っておくと、知らないコマンドの存在を(ある程度)予想できる。
リンク
- About
- PowerShell Command
- Microsoft.Learn – Get-History
- Microsoft.Learn – Get-Help
- Microsoft.Learn – Get-Command
- Microsoft.Learn – Get-Alias
- Microsoft.Learn – Get-Date
- Microsoft.Learn – Get-Content
- Microsoft.Learn – Set-Location
- Microsoft.Learn – Push-Location
- Microsoft.Learn – Pop-Location
- Microsoft.Learn – Invoke-Item
- Microsoft.Learn – New-Item
- Microsoft.Learn – Move-Item
- Microsoft.Learn – Copy-Item
- Microsoft.Learn – Remove-Item
- Microsoft.Learn – Rename-Item