すぎしーのXRと3DCG

主にXR, Unity, 3DCG系の記事を投稿していきます。

pwshをコマンドラインでインストールしてPATHを通す方法

概要

前回 に続いて、今回はWindowsコマンドラインで PowerShell7 をインストールする方法を紹介します。

github.com

PowerShell5はWindowsに標準で搭載されていますが、pwsh コマンドは実行できません。 そこでPowerShell7を別途インストールすることで pwshコマンドとして使用可能になります。

そんなPowerShell7をコマンドライン経由でインストールしPATHを登録する方法を紹介します。

動作環境

  • Windows 10
    • 筆者はPro版ですが、Homeでも問題ないと思います

変更履歴

  • 2022/05/18
  • 2023/02/05
    • 「install-powershell.ps1 を実行」を PowerShell -ExecutionPolicy Bypass を使ったコマンドに修正

注意事項

  • 以下を試す場合は自己責任でお願いします!
  • 以下の処理は管理者権限で実行しますが、当方は事故や故障などの一切の責任を負いません!
  • 環境変数 PATH を変更するため、変更前のPATHを記録しておくことを推奨!

上記の件、ご留意ください

インストール方法

前回の記事 (Git for Windowsをコマンドラインからインストールする方法) と流れはほとんど同じです

Gitからps1ファイルをクローン

github.com

PowerShellを管理者権限で開く

※開き方は好きなやり方で問題ありません

Windows 10標準搭載のPowerShell5を使用

  • Windows キーを押して、「powershell」を検索
  • 「管理者として実行する」をクリック

PowerShellでクローンしたWindowsInfrastructureExample上に移動

cd <path>\WindowsInfrastructureExample

PowerShell-7.x.x-win-x64.msi を配置

コマンドでダウンロードする場合

Invoke-WebRequest https://github.com/PowerShell/PowerShell/releases/download/v7.2.3/PowerShell-7.2.3-win-x64.msi -OutFile PowerShell-7.2.3-win-x64.msi

※インフラ構築のスクリプトを書く場合は、このコマンド自体をps1スクリプトに組み込んでも良い

ブラウザでダウンロードする場合

以下より PowerShell-7.x.x-win-x64.msiをダウンロードし、WindowsInfrastructureExample フォルダ以下に配置

github.com

ps1の実行を許可

Set-ExecutionPolicy RemoteSigned -Scope Process

install-powershell.ps1 を実行

> PowerShell -ExecutionPolicy Bypass .\install-powershell.ps1

エラーログが出なければ問題なく PowerShell7 のインストール完了

インストールの確認 (コマンドラインの場合)

  • Dir 'C:\Program Files\PowerShell\7\pwsh.exe'でエラーが出なければインストール完了
Dir 'C:\Program Files\PowerShell\7\pwsh.exe'


    ディレクトリ: C:\Program Files\PowerShell\7


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2022/04/15     20:07         287664 pwsh.exe

(任意)PATHの追加

ローカルPCの環境変数 PATH が変更されます!ご注意ください!

PowerShell -ExecutionPolicy Bypass .\set-powershell-path.ps1

以上でインストール及び設定は完了です。


スクリプト解説

install-powershell.ps1

msiexecによるインストール

PowerShell-7.x.x-win-x64.msi のインストールオプション

詳細は以下のページに記載されています

docs.microsoft.com

INSTALLFOLDER

名前の通りインストール先のフォルダを指定。
以下のように指定すると良いです。

$InstallFolder = 'C:\Program Files\PowerShell'
(略)
msiexec.exe `
    ...
    INSTALLFOLDER=`"$InstallFolder`" `
    ...

ちなみに、C:\Program Files\PowerShell を指定した場合、pwsh‪C:\Program Files\PowerShell\7\pwsh.exeに配置されます。

また、スクリプト内でフォルダ名を`"XXX`" のように囲むのは不思議な感じがしますが、これで問題ありません。

Windowsコマンドラインはスペースの扱いがめんどくさいですね。。。それなのに "Program Files" はスペースが有るという。。。

ADD_PATH=0

PATHに追加するかのオプションです。ADD_PATH=1 にすればパスを通してくれます。
今回はコマンドラインで諸々完結させたかったので0指定(登録しない)にしています。

USE_MU=0, ENABLE_MU=0

いわゆるMicrosoft Updateによる自動更新の設定です。
毎回コマンドラインで更新することを想定し、オフにしています。

解説は以上です!


雑感

Git for Windows, PowerShell7 のインストール方法を紹介したのは、bash, pwsh をインストールするためだったりします。

次回はこの2つを活用したCIについてお話します!
もしかしたらピンと来た方がいらっしゃるかもですね。

さらにその次は絶対にUnity + XR関連にします(そっちのほうが断然楽しいし、何よりブログのタイトル的に。。。)

PATHを変更するような手順の紹介は、試した人の環境を壊しかねないので結構神経を使いますね。。。

それでは~