ささやかな日々記

日々過ごす中で感じたことや培ったことが誰かの役に立てられたらと思うSEの雑記

PowerShell 簡易版ホームディレクトリ変更

PowerShellで起動する際、通常の起動ではホームディレクトリは固定です。

※ホームディレクトリは起動時に自分がいるパスを指します。


これを変更するにはいくつか方法があるのですが、設定自体を変更してしまうと当然ですが一律で変更されてしまうため「この作業している間だけ。ここから起動したいなー」なんていうときには、作業が終わったら結局元の設定に戻したりする必要があります。

今回はそんなときに簡単な方法です。

 

やりかたは

PowerShellを起動するのでは無く、PowerShellを起動するPowerShellの実行ファイルをPowerShellで実行する。

です。


ちょっと何言っているかよくわからないですよね、当然です。ごめんなさい。

要はファイル「powershell.ps1」でPowerShellを起動します。
するとファイル「powershell.ps1」のある場所がホームディレクトリになります。

ファイルの中身はこんな感じでStart-ProcessからPowerShellを起動します。

 

■ファイル名:powershell.ps1

Start-Process powershell

 

Start-Processで起動されたPowerShellは、そのコンソールに限り実行したディレクトリパスがホームディレクトリになりますので、このファイルをホームディレクトリにしたい場所に置きます。

 

つまり、いつもどおりプログラムとしてPowerShellを実行した際は、いつもどおりのホームディレクトリで始まります。


ホームディレクトリを変えたい場合だけそのファイルから起動し、別の作業場所にしたかったら、そのファイルを移動するだけで済みます。
そして用済みになったら削除しちゃえばいいのです。

 

ただ、実行がダブルクリックではNGで、右クリックから「PowerShellで実行」を選んでください。。。ダブルクリックではデフォルトでメモ帳が開きます。
レジストリの内容を書き換えてしまえばダブルクリックからPowerShellが起動できるのですが、それは面倒なのでやりません。


検証する環境は以下とします。
「C:\work」の中に「powershell.ps1」とさらに「homeDirectory」の中に「powershell.ps1」があります。

PS C:\work> tree /f
フォルダー パスの一覧: ボリューム Windows
ボリューム シリアル番号は 1E21-A310 です
C:.
powershell.ps1

└─homeDirectory
powershell.ps1

 


まずは通常のPowerShellの起動

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\Users\ユーザ名>

 


ログインしているユーザの直下がホームディレクトリになっています。
次に「C:\work\powershell.ps1」からのPowerShell起動

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\work>

 

ホームディレクトリが実行した「C:\work」になっています。
最後に「C:\work\homeDirectory\powershell.ps1」からのPowerShell起動

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

PS C:\work\homeDirectory>

 

こちらも起動した場所がホームディレクトリになってますね。

こんな感じで簡単に使い捨てのできるホームディレクトリを指定してPowerShellを起動できます。


ちなみに「powershell」という文字列でpowershellが起動するのは環境変数powershell.exeが起動できるように設定されているからです。
これを環境変数に設定されていない状態でも実行できるような書き方をすると以下のようになります。

 Start-Process C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

 

また、Start-Processのエイリアスは「saps」「start」の2通りが用意されていますので
 start powershell
 saps powershell
なんていう書き方でも同様の処理が行えます。
感覚的に「start powershell」という書き方はまさにpowershellを動かすぞ!という感じがしますね。