PowerShellでディレクトリを変更する: ファイルシステムをナビゲートする方法

Windowsでディレクトリを変更することは、ファイル管理の基本的な部分ですが、訪れた各ディレクトリのフルパスを書くことに満足しますか?幸いなことに、PowerShellのディレクトリ変更コマンドを使用することで、あなたの生活を簡単にすることができます。

このチュートリアルでは、PowerShellで利用可能なディレクトリ変更コマンドを調べ、ファイルシステムを簡単にナビゲートするのに役立ちます。

続けて読んで、PowerShellを使ったファイルシステムの基本をマスターしましょう!

前提条件

このチュートリアルは実践的なデモンストレーションです。従って、PowerShellがインストールされたWindowsシステムが必要です。このチュートリアルではWindows 10とPowerShell v7を使用しています。

別のドライブに切り替える

ハードディスクやUSBドライブなどの各ストレージデバイスは、ドライブレター(例:C:D:E:、…Z:)が割り当てられます。PowerShellウィンドウを開くと、プロンプトはデフォルトで現在のドライブ上のユーザープロファイルディレクトリになります。

現在のドライブとは異なるドライブに保存されているファイルやフォルダに頻繁にアクセスする必要がある場合、別のドライブに切り替える必要があります。

どのようにして別のドライブに切り替えるかを確認するには、次の手順を実行してください。

1. PowerShellを開き、プロンプトがC:\Users\admin.と表示されているか確認してください。もし表示されていれば、現在はC:ドライブのadminユーザーのプロファイルディレクトリ内にいます。以下に示すように。

Viewing the default working drive

2. 次に、別のPowerShellセッションを管理者として開いてください。

以下のプロンプトは、通常のユーザーとしてPowerShellを起動する場合とは異なるデフォルトディレクトリから開始されます。具体的には、現在のドライブ(C:)内のWindowsディレクトリ内のSystem32ディレクトリから開始されます。

このデフォルトの動作により、非管理者ユーザーが誤って重要なシステムファイルを変更したり、機密ツールを実行したりするのを防ぎます。

Viewing the default working drive as an admin

3. 現在のドライブをD:(または利用可能なドライブのいずれか)に変更するには、以下のコマンドを実行してください。この構文は、PowerShellで異なるドライブ間を素早く移動する方法です。

D:

この方法でPowerShellでドライブを切り替えると、プロンプトが新しいドライブのルートディレクトリに変更されます。以下の出力のように。

表示されるように、PowerShellのデフォルトディレクトリに関係なく、常に別のドライブに切り替えることができます。

Switching to another drive

4. 今度は、以下のコマンドを実行してD:\Kittyディレクトリ(または他のサブディレクトリ)に切り替えてみてください。

D:\Kitty

以下のエラーが発生しましたか?このエラーは、この方法では一度にサブディレクトリ(例:D:\Kitty)に切り替えることができないため表示されます。

サブディレクトリに切り替える方法については、以下のセクションに移動してください。

Attempting to switch to subdirectories

cdコマンドを使用してファイルシステムをナビゲートする

複数のサブディレクトリをナビゲートすることは、PowerShellでよく行われるタスクです。しかし、異なるサブディレクトリに素早く移動する方法はありますか? はい!現在のディレクトリに関係なく、別のサブディレクトリに素早く切り替えることができる「cd」コマンド(ディレクトリの変更)があります。

昔は、コマンドプロンプトでドライブとディレクトリ間を移動するために「cd」コマンドが使用されていました。Microsoftは「cd」コマンドを後方互換性があるようにしましたので、PowerShellでもディレクトリ間を移動することができます。

以下を読んで、cdコマンドを使用してファイルシステムをナビゲートする方法を確認してください。

異なるドライブのディレクトリに移動する

別のドライブ内のサブディレクトリに移動することは、面倒な作業のように思えるかもしれません。しかし、心配する必要はありません。 cdコマンドを使用すると、別のドライブに素早くジャンプしながら、そのディレクトリの1つに移動することができます。

以下のコマンドを実行して、D:*ドライブ内のKittyという名前のサブディレクトリに移動します。

cd D:\Kitty
Navigating a subdirectory in another drive

ディレクトリ階層で上に移動する方法

ファイルシステムの管理やプロジェクト作業時には、現在のディレクトリから1つまたは2つ上のレベルに移動する必要があることがよくあります。cdコマンドは、現在のディレクトリの親ディレクトリに効果的に切り替えるための「..」表記をサポートしています。

この機能により、親ディレクトリのフルパスを指定せずにファイルシステム内で1つ上のレベルに移動することができます。

1. 以下のcdコマンドを実行し、スペースと「..」表記を追加します。これにより、PowerShellはディレクトリ階層で1つ上に移動します。

cdコマンドの後のスペース文字は必須ではありませんが、スペースを追加することは可読性と他のコマンドとの一貫性のために一般的な慣行です。

cd ..

以下の出力では、プロンプトがC:\Users\admin\DocumentsからC:\Users\adminディレクトリに1つ上がっていることがわかります。注意すべきは、C:\Users\adminディレクトリのフルパスを指定せずに移動したことです。

Moving up one level in the directory hierarchy

2. 1つ上のレベルに移動する代わりに、以下のコマンドを実行し、2つの「..」表記を使用し、各末尾にバックスラッシュ(\)を追加します。これにより、ディレクトリ階層で2つ上に移動することができます。

cd ..\..\

以下の出力では、C:\Users\admin\Documentsから直接C:\Usersディレクトリに移動したことがわかります。

Moving up two levels from the current directory

3. 最後に、現在のドライブのルートディレクトリに移動するために以下のコマンドを実行します。

もしファイルシステムで迷子になった場合、このコマンドは非常に便利です。このコマンドを使用すると、迅速にルートディレクトリに移動できます。このコマンドを複数回実行する手間が省けます。

cd \
Moving up to the root directory

特定のサブディレクトリに移動する

ディレクトリ階層で一つ上に移動するように、特定のサブディレクトリに移動することも迅速な作業です。前述のような注釈を付けることができませんので、(....\のような)以前のものと同様の注釈を追加することはできません。サブディレクトリの名前を指定する必要があります。

以下のコマンドを実行して、現在のディレクトリ(.)内のサブディレクトリ(\admin)の一つに移動します。

cd .\admin

以下に注意してください。前述の通り、C:\Users\adminディレクトリの完全なパスを指定する必要がなかったため、時間と労力が節約されました。

Moving into one of the subdirectories

PowerShell Cmdletsを使用したファイルシステムのナビゲーション

cdコマンドは確かにPowerShellでも動作しますが、MicrosoftはSet-Locationなどの多くのcmdletを導入しており、これらを使用してファイルシステムをナビゲートできます。

これらのcmdletはcdコマンドよりも堅牢な機能を提供し、ドライブ間を移動したり、スタックされた場所をナビゲートしたり、場所の履歴をサイクルさせたりするために使用できます。

PowerShell cmdletがファイルシステムをナビゲートする際の強力な機能をご覧ください。

異なるドライブから場所を設定する

cdコマンドと同様に、Set-Locationコマンドレットを使用すると、ディレクトリから別のディレクトリに移動し、そのディレクトリの直下に移動することができます。ただし、PowerShellのコマンドレットを使用するため、-Pathパラメータを追加して目的の場所のパスを設定する必要があります。

Set-Locationコマンドレットは、現在の作業ディレクトリを指定した場所に設定します。指定した場所は、次のいずれかであることができます:

  • A directory, or subdirectory on the local file system.
  • PowerShellのプロバイダでサポートされる他の場所。
  • またはレジストリの場所。

Set-Locationコマンドレットがファイルシステムをナビゲートする方法を確認するには、次のコマンドを実行してください:

-Pathパラメータで指定されたD:ドライブのKittyディレクトリに移動します。

Set-Location -Path "D:\Kitty"
Navigating to a directory in another drive

Set-Locationコマンドレットをフルで入力するのが少し面倒な場合は、エイリアスの1つ、chdirslなどを使用してファイルシステムをナビゲートすることもできます。エイリアスは、よく使用するコマンドにより便利なアクセス方法を提供します。

次に、特定のレジストリの場所に作業ディレクトリを設定するために、次のコマンドを実行してください。この場合、HKLM:\パス(省略形)はWindowsレジストリのHKEY_LOCAL_MACHINEハイブを指します。

このコマンドは、レジストリのHKEY_LOCAL_MACHINEハイブのルートに作業場所を設定します。レジストリに移動することで、他のPowerShellコマンドを使用してサブキーと値にアクセスおよび変更できます。

Set-Location -Path "HKLM:\”
Setting the working location to a specific registry location

スタックされた場所の切り替え(プッシュおよびポップ)

スタックされた場所に素早くアクセスすることは便利です。しかし、可能ですか? はい! Push-LocationおよびPop-Locationコマンドレットを使用して、名前付きスタックから最後に追加されたものから順に場所をプッシュおよびポップできます。

スタックされた場所を移動するには、次の手順に従います:

1. 下記のPush-Locationコマンドを実行して、現在の場所をPathsというスタックにプッシュし、C:\Program Files\PowerShell\ディレクトリを現在のディレクトリに設定します。

Push-Location -Path 'C:\Program Files\PowerShell\' -StackName "Paths"
Pushing the current location to a stack called Paths

2. 次に、以下のコマンドを実行して、現在の場所(C:\Program Files\PowerShell\)を同じPathsスタックの一番上にプッシュします。

Push-Location -Path 'C:\Program Files\WindowsPowerShell\' -StackName "Paths"

3. 各コマンドを実行して、Pathsをデフォルトのスタックに設定し、スタックされた場所を表示(Get-Location)します。

# Pathsスタックをデフォルトに設定
Set-Location -StackName "Paths"
# デフォルトスタック内のすべてのスタックされたパスを表示
Get-Location -Stack

以下は、現在2つの場所が重ねられていることが分かる、最後に追加した場所が一番上にある状態です。

Viewing stacked locations in the Paths stack

4. 今、以下のPop-Locationコマンドを2回実行して、デフォルトのスタックからトップの場所をポップし、現在はパススタックです。

Pop-Location
Changing the current directory by popping stacked locations

スタックから場所をポップすると、その場所がスタックから削除されます。以下のエラーは、デフォルトのスタックからすべてのスタックされた場所をポップしたことを示しています。

Attempting to view an empty stack

変数に格納されたディレクトリへの移動

ファイルシステム内のディレクトリを移動するさまざまな方法を試してきました。しかし、特定の場所を頻繁に移動する必要がある場合はどうでしょうか?完全なパスを複数回入力したり、場所の履歴を辿るのは面倒です。代わりにディレクトリの完全なパスを変数に格納することはいかがでしょうか?

宣言された変数を使用すると、頭の中でパスを指定せずに目標のディレクトリに移動できます。

1. 以下のコマンドを実行して、C:\Program Files\PowerShell\ディレクトリを$psh変数に格納し、その場所($psh)を現在のディレクトリとして設定します。

# ディレクトリパスを変数に格納
$psh = 'C:\Program Files\PowerShell\'
# $psh変数からディレクトリを設定
Set-Location -Path $psh

以下の出力は、変数を使用したディレクトリ変更の成功を確認しています。現在のディレクトリに関係なく、C:\Program Files\PowerShell\ディレクトリに素早く移動することができます。$psh変数を使用して。

Navigating to a location stored in a variable

しかし、この方法は現在のPowerShellセッションにのみ適用されます。変数を永続化しない限り、次の手順で示されているように、この方法は機能しません。

# 以下のコマンドを実行し、出力は提供されませんが、ev_psh変数を環境変数として永続化します(SetEnvironmentVariable
[System.Environment]::SetEnvironmentVariable('ev_psh', 'C:\Program Files\PowerShell\', 'Machine')
# 新しく追加された環境変数(ev_psh)を再読み込みします
$Env:ev_psh = [System.Environment]::GetEnvironmentVariable("ev_psh","Machine")

最後に、以下のコマンドを実行して、ev_psh環境変数の値を現在のディレクトリとして設定します。現在のディレクトリがev_psh変数のディレクトリと異なることを確認してください。

Set-Location -Path $env:ev_psh
Setting the value of an environment variable as the current directory

PowerShellの位置履歴をサイクリングする

PowerShellでディレクトリをサイクリングするもう1つの迅速な方法は、位置履歴を使用することです。 -Pathパラメータは、Set-Locationコマンドレットに指定された値に基づいて、位置履歴(前方および後方)から別のディレクトリに移動するよう指示します(-または+

PowerShellの位置履歴をサイクリングするには:

次のコマンドを実行して、履歴から場所を現在のディレクトリとして設定します。 + 文字は、場所の履歴で前方に移動し、- 文字は後方に移動します。

# システムのルートディレクトリを現在のディレクトリに設定します
Set-Location -Path $env:SystemRoot

# 履歴で前のディレクトリに戻ります(証明書プロバイダー)
Set-Location -Path -

# 再び履歴で前のディレクトリに戻ります(システムのルートディレクトリ)
Set-Location -Path -

# 履歴で次の作業ディレクトリに進みます(証明書プロバイダー)
Set-Location -Path +

# 履歴で次の作業ディレクトリに進みます(HKEY_LOCAL_MACHINE ハイブ)
Set-Location -Path +
Cycling through locations in the location history

結論

ファイルシステムのナビゲーションは、オプションが限られている場合にはややこしいことがあります。しかし、Set-Location のようなPowerShellのディレクトリ変更コマンドを使えば、多くのオプションが利用できます。ファイルシステムをより効率的にナビゲートする方法は、完全にあなた次第です。

さらに、Push-LocationPop-Location を使って最近の場所を保存・呼び出す方法をマスターすることは、貴重なスキルです。

これらのテクニックを使用すると、PowerShellでディレクトリや場所を迅速かつスムーズに移動できます。さらに改善するためには、Get-ChildItemなどの追加のコマンドについて学ぶことを考えてみてはいかがでしょうか?これにより、日常のタスクで多くの時間を節約できます。

Source:
https://adamtheautomator.com/powershell-change-directory/