Powershell 7 preview2をインストールしてみた

#はじめに
Powershell 7をインストールしてみた。
それだけ。

#まとめ
* Powershell5.1と同居できる！
* 破壊的な変更が行われているため、5.1と7で使い分けができる。**Powershell Core、6などが現環境にある人は破壊されてしまうようです。**
* 私の環境だけかもしれませんが、Path変数の値が変だった。

#やったこと

* まずは以下のURLを一読する。

https://docs.microsoft.com/ja-jp/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-7#installing-the-msi-package

なるほどなるほど… side by side… Zzz…？

* GitHubのページから、[Assets]セクションを開き、Powershellのインストーラーをダウンロードする。

https://github.com/PowerShell/PowerShell/releases

**Assetsの文字見づらい…。**
私は``PowerShell-7.1.0-preview.2-win-x64.msi``をインストールしました。

* ほぼ標準のままインストールする。

私はExplorerへのコンテキストメニューの追加のチェックを入れました。


**インストール終わり！**

# Powershell 5.1と7の共存確認
よーし、まずはメニューから起動して、バージョンを見てみよう！

```powershell:Powershell7-psversiontable
> $psversiontable

Name                           Value
----                           -----
PSVersion                      7.1.0-preview.2
PSEdition                      Core
GitCommitId                    7.1.0-preview.2
OS                             Microsoft Windows 10.0.18363
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0
```

おお…。
コマンドプロンプトを開き、``powershell``と入力して、Powershell5.1で同様にバージョン確認しよう！

```powershell:Powershell5-psversiontable
> $psversiontable

Name                           Value
----                           -----
PSVersion                      5.1.18362.752
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.18362.752
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
```

完全に環境がわかれてる！これは破壊的だけど、長い間Powershell 5.1で開発を続けてきた身としては安心できる！

# ps1ファイルを実行すると、どっちで動く？
以下のファイルを準備しました。

```powershell:version_check.ps1
$ver = $psversiontable

$ver.PSVersion

read-host
```

ファイルを右クリック→Powershellで実行を試してみました。

```powershell:結果
Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      18362  752
```

右クリック→Powershellで実行だと、5.1の環境で動作する！

# cmdからexeを指定して実行すると？

```cmd:5.1で実行
>powershell -command .\version_check.ps1

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      18362  752
```

良い感じ。

7からはpowershell.exeではなく、pwsh.exeに変わっているそう。

```cmd:7で実行
>pwsh -command .\version_check.ps1
'pwsh' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
```

…ん？パスが通ってない…？
ここでPCを一度再起動してみましたが変わりませんでした。
なんだか変だぞ。

#パスを確認

PATHにはそれっぽい内容が追加されてる…？

```powershell:PATH確認
$(get-childitem env:path).value
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;
(省略)
C:\Program Files\PowerShell\7-preview\preview;
(省略)
```

フォルダーをたどって、pwsh.exeを探してみると…。
``C:\Program Files\PowerShell\7-preview\pwsh.exe``にあった！

PATHの後ろの``preview``がいらないみたい。
PCのプロパティ→システムの詳細設定→環境変数→システムの環境変数→Path→編集→``preview``を削除する。
コマンドプロンプト閉じて、もう一度pwshから実行。~~pwshって打ちづらくないですか~~

```cmd:PATHを通して7で実行
>pwsh -command .\version_check.ps1

Major  Minor  Patch  PreReleaseLabel BuildLabel
-----  -----  -----  --------------- ----------
7      1      0      preview.2
```

7で動いた！
``-command``で動くあたりは変更が入ってないんだなー。(調べてからやれっていう突込みはなしで…)
基本的な使い方は踏襲されているみたい。

これから少しずつ7を触る機会を増やします！