8
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Windows 10にPowerShell 6をインストールしてみた

Posted at

Windows 10にPowerShell 6をインストールしてみました。気づいたことをメモしておきます。

インストール方法

PowerShellではなくPowerShell Coreをインストールする。

PowerShell 6 以降を使う場合は、Windows PowerShell ではなく PowerShell Core をインストールする必要があります。 詳細については、「Windows への PowerShell Core のインストール」を参照してください。
Windows PowerShell のインストール | Microsoft Docs

PowerShell CoreはMSのGitHubページで配布されている。

PowerShell を Windows クライアントまたは Windows Server にインストールするには (Windows 7 SP1、Server 2008 R2 以降で機能)、MSI パッケージを弊社の GitHub リリース ページからダウンロードします。
Windows への PowerShell Core のインストールInstalling PowerShell Core on Windows | Microsoft Docs

ここでは、リリース ページにある最新プレビュー版ではなく、READMEにまとめられているリンクから、Windows (x64)用の安定版(Downloads (stable))のmsiファイルだったPowerShell-6.0.2-win-x64.msiを取得し、インストールした。

インストーラーに従って進めていくだけだったけど、手順説明とか欲しいようであれば「Windows 7にPowerShell 6.0をインストールする - 再び - しばたテックブログ」が参考になりそう。

スタートメニュー

Windowsのスタートメニュー内で、「PowerShell」フォルダ内に「PowerShell 6.0.2」だけが作成されていた。PowerShell 5.xまでは「Windows PowerShell」フォルダ内に「Windows PowerShell」「Windows PowerShell ISE」が作成されていた。

バージョン

$PSVersionTableの出力内容に一部差異があった。

Name PS Core 6.0.2 PS Desktop 5.1.15063.909
PSVersion 6.0.2 5.1.15063.909
PSEdition Core Desktop
BuildVersion 10.0.15063.909
CLRVersion 4.0.30319.42000
GitCommitId v6.0.2
OS Microsoft Windows 10.0.15063
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion 2.3 2.3
SerializationVersion 1.1.0.1 1.1.0.1
WSManStackVersion 3.0 3.0

エンジンの更新 | PowerShell Core 6.0 の新機能What's New in PowerShell Core 6.0 | Microsoft Docsに説明されていた。

モジュールの自動読み込みパス

$env:PSModulePathは以下になっていた。

$env:PSModulePath -split ";" | sort
c:\program files\powershell\6.0.2\Modules
C:\Program Files\PowerShell\Modules
C:\Users\tsukamoto\Documents\PowerShell\Modules

PowerShell 5.0.1環境の方は以下になっていた。

$env:PSModulePath -split ";" | sort
C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ResourceManager\AzureResourceManager\
C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\ServiceManagement\
C:\Program Files (x86)\Microsoft SDKs\Azure\PowerShell\Storage\
C:\Program Files\WindowsPowerShell\Modules
C:\Program Files\WindowsPowerShell\Modules\
C:\Users\tsukamoto\Documents\WindowsPowerShell\Modules
C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules

C:\Program Files\以下についてもC:\Users\tsukamoto\Documents\以下についても、WindowsPowerShell\ModulesではなくPowerShell\Modulesになっていて、共通するパスはない。このため、PowerShell 5.0.1環境でインストールまたは配置したモジュールは、PowerShell 6.0.2では自動読込されなかったし、Import-Moduleでも見つけられなかった。

Windows PowerShell との後方互換性 | PowerShell Core 6.0 の新機能What's New in PowerShell Core 6.0 | Microsoft Docsに説明されていた。これまでのものは「WIndows PowerShellモジュール」という扱いになり、以下を実行することでパスを追加できる様子(まだ実施してない)。

Install-Module WindowsPSModulePath -Force
Add-WindowsPSModulePath

ConvertTo-Jsonのインデントが変わった

ConvertTo-Jsonのインデントが固定幅になっていて、見やすかった。

PS C:\Program Files\PowerShell\6.0.2> $PSVersionTable | ConvertTo-Json
{
  "Platform": "Win32NT",
  "WSManStackVersion": {
    "Major": 3,
    "Minor": 0,
    "Build": -1,
    "Revision": -1,
    "MajorRevision": -1,
    "MinorRevision": -1
  },
(以下略)

PowerShell 5までは可変幅で、インデントが深くなると泣きそうだった。

$PSVersionTable | ConvertTo-Json
{
    "PSVersion":  {
                      "Major":  5,
                      "Minor":  1,
                      "Build":  15063,
                      "Revision":  909,
                      "MajorRevision":  0,
                      "MinorRevision":  909
                  },
    "PSEdition":  "Desktop",
(以下略)

コマンドレットの更新 | PowerShell Core 6.0 の新機能What's New in PowerShell Core 6.0 | Microsoft Docsの「JSONコマンドレット」に説明されていた。

NuGetやPowerShellGetはすぐに使える

Get-PackageProviderを実行するとNugetPowerShellGetが表示された。モジュールインストールのためにまずこれらの環境を作る、ということは必要なさそう。ProviderPathを見る限り、たぶんPowerShell Coreに同梱されている。

Get-PackageProvider | Select Name, Version, ProviderPath

Name          Version   ProviderPath
----          -------   ------------
NuGet         2.8.5.210 C:\program files\powershell\6.0.2\Modules\PackageManagement\1.1.7...
PowerShellGet 1.6.0.0   C:\program files\powershell\6.0.2\Modules\PowerShellGet\1.6.0\PSM...

プロキシ経由でのモジュールインストール

Find-ModuleInstall-Module等の実行時、プロキシ経由でモジュールインストールする時には-Proxy、プロキシが認証を必要とする場合は合わせて-ProxyCredentialパラメータを指定する。以下にまとめた。

COMオブジェクトの使用

Windows PowerShellではなくマルチOSのPowerShell CoreでCOMオブジェクトって使えるのかなと思った。とりあえずWindows上であれば、以下でExcelを起動し、可視状態にすることができた。

$excel = New-Object -ComObject Excel.Application
$excel.Visible = $true

本ページ内容は筆者が参照の便のためにある時点でまとめた個人的なメモです。内容を保証するものではなく、また筆者の所属組織等とは一切かかわりがありません。

8
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?