Windows Power Shell をアップデート!Windwos7 に Power Shell 5.1をインストール


ps_20180208_1800

仕事で Windows7 でこつこつ作業するシステムエンジニアです。
PowerShellは 特にアップデートしなくても不便を感じることが少なく、アップデートしない人も多いのでは・・・
私も放置してた人。でも「いよいよPowerShell アップデート」しました!

私は 唯一不便に感じていたのが 「Vagrantの新しいバージョンと相性が悪くて使えない!」こと。他にも

  • PowerShell を使ったシェル開発でバージョンが合わない
  • PowerShell の機能を使ったアプリが動作しない
  • PowerShell が最新でないと気に食わない

などなど 人によっては様々な理由があるとは思います。
Windows Power Shell をアップデートした備忘録をまとめましたので、参考にしていただければ幸いです。

アップデートの概要

Windows Power Shell の アップデート の流れは以下のようになります。

  1. OSに対応する Windows Management Framework(WMF)をダウンロード
  2. Windows PowerShell の実行ポリシーを変更
  3. WMF の更新用スクリプトを実行
  4. Windows Update スタンドアロン インストーラー 実行
  5. Windows PowerShell の実行ポリシーを戻す

流れは、WMFをダウンロードして、更新用スクリプトを実行するだけと非常に簡単です。
ただし、PowerShellのスクリプトは Windows7 など多くのOSでデフォルトでは実行が禁止! そりゃ、OSを操作するPowerShellスクリプトがウィルスなどで操作されたら大変ですしね。
ということで、セキュリティを一時的に弱める操作も途中で行います。

自分の PowerShell のバージョンを知ろう!

まずは、現在使っている PowerShell のバージョンを確認。
後の作業で 管理者権限が必要になるため 、管理者権限で PowerShell を起動します。

そして 次のコマンドを実行!

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

PS C:\Users\hoge> $PSVersionTable

Name                           Value
----                           -----
CLRVersion                     2.0.50727.8762
BuildVersion                   6.1.7601.17514
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1

PS C:\Users\hoge>

CLRVersion の項目が PowerShell のバージョンです。

PowerShell バージョン:2.0.50727.8762

Windows Management Framework(WMF)って?

Windows Management Framework (WMF) って?
私もよく知らなかったです。
Microsoft Docs によると 以下のような説明が・・・

Windows Management Framework (WMF) は配信メカニズムであり、さまざまな種類の Windows や Windows Server に一貫した管理インターフェイスを提供します。

とりあえず、Windows をいろいろ管理してくれているようです。
その機能の1つに 「Windows PowerShell」があるので、WMF をバージョンアップすれば PowerShell もバージョンアップします。

Windows と WMF の互換性を調べよう!

Windows のバージョンには、 XP や 7 さらに Windows Server ってのもあります。
すべてが、現在最新の WMF 5.1 をインストールできるかといえば できません。

Microsoft Docs によると 互換性は以下のとおり。
今回の私の OSバージョンは Windows7 なので default(プリインストール)は WMF2.0
上記で確認したバージョン 「2.0.50727.8762」と確かに一致していますね。

そして、どこまでバージョンアップできるのかというと、WMF 5.1が「可」なので最新で更新できそうです。

ps_20180207_1310

WMF 5.1 を手にいれよう!

WMFですが、Microsoft Dwonload Center から手にいれることができます。

現在の Dwonload Center への URL は以下になります。

https://www.microsoft.com/en-us/download/details.aspx?id=54616

ps_20180207_1800

「ダウンロード」ボタンをクリック!
ファイル選択のダイアログ Choose the download you want が開きます。

今回は、Windows 7 なのでダウンロード選択対象のファイルは次の2つ!

  • Win7AndW2K8R2-KB3191566-x64.zip
  • Win7-KB3191566-x86.zip

ファイル名に x64 とか x86 とか含まれているので、予想できるとは思います。

Win7AndW2K8R2-KB3191566-x64.zip: 64bit PC用
Win7-KB3191566-x86.zip : 32bit PC用

私は 64bit PC なので、「Win7AndW2K8R2-KB3191566-x64.zip」 をダウロードしました。

ZIP ファイルに含まれいるファイルは、以下の 2つ。

  • Install-WMF5.1.ps1
  • Win7AndW2K8R2-KB3191566-x64.msu

Install-WMF5.1.ps1 は 更新用スクリプトファイル、
MSUは 更新プログラム パッケージ です。

更新用スクリプトを実行すると Windows Update スタンドアロン インストーラーが起動します。

PowerShell スクリプト が実行できない・・

Install-WMF5.1.ps1 は、PowerShell スクリプト のファイル。

Windows 7 ですが、デフォルトで PowerShell スクリプト(.ps1) が実行できない!

「全てのスクリプトが実行禁止」の実行ポリシーになってるのです。

ウィルスなどで PowerShell スクリプトを悪用されて 実行できたら非常に怖いです。
セキュリティ上 むやみに実行できない方が安全なのですね。

ちなみに、Install-WMF5.1.ps1 を実行してみると以下のように怒られます。

C:\hoge> .\Install-WMF5.1.ps1

スクリプトの実行がシステムで無効になっているため、ファイル C:\hoge\Win7AndW2K8R2
-WMF5.1.ps1 を読み込めません。詳細については、「get-help about_signing」と入力してヘルプを参照してください。

発生場所 行:1 文字:21
.\Install-WMF5.1.ps1 <<<< + CategoryInfo : NotSpecified: (:) []、PSSecurityException + FullyQualifiedErrorId : RuntimeException C:\hoge>

PowerShell の実行ポリシーを変更しよう!

PowerShell の 実行ポリシーですが すべてで6種類あります。
今回 関係するのは Restricted と AllSigned です。

詳しく知りたい方は Microsoft 公式ドキュメント about_Execution_Policies が参考になります。

  • Restricted
    個別のコマンドは許可さるが、スクリプトは実行されない。
    すべてのスクリプト ファイルの実行を防止する。
  • AllSigned
    信頼された発行元によって署名されているスクリプトは実行可能。
    不明の場合は、確認メッセージが表示される。
    ※署名されているが悪意のあるスクリプトが実行される危険性あり

それでは PowerShell の 実行ポリシー を 変更します。

Restricted  →  AllSigned

現在の 実行ポリシー を調べよう

本当に 現在の実行ポリシーが Restricted であるか確認します。
以下のコマンドを実行!

Get-ExecutionPolicy
PS C:\hoge> Get-ExecutionPolicy
Restricted
PS C:\hoge>

Restricted が返ってきました。

実行ポリシー を変更しよう

以下のコマンドで 実行ポリシーを変更します。

Set-ExecutionPolicy 実行ポリシー

今回は AllSigned への変更なので 「Set-ExecutionPolicy AllSigned」となります。

PS C:\hoge> Set-ExecutionPolicy AllSigned

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピックで説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): y
PS C:\hoge>

リスクがある旨の説明が表示されます。納得したら [Y] を入力して Enter !
これで PowerShell 実行ポリシーは変更されているはず。

変更を確認してみよう

再度 以下のコマンドを実行!

Get-ExecutionPolicy
PS C:\hoge> Get-ExecutionPolicy
AllSigned
PS C:\hoge>

今度は AllSigned が返ってきました。無事 変更できました。

PowerShell スクリプト Install-WMF5.1.ps1 を実行しよう!

やっと ここまできました。
あとは、ダウンロードしたファイル Install-WMF5.1.ps1 を実行し インストーラーに従って進めるだけです。

C:\hoge> Install-WMF5.1.ps1

この信頼されていない発行元からのソフトウェアを実行しますか?
ファイル C:\hoge\Install-WMF5.1.ps1 の発行元は CN=Microsoft Corporation,
 OU=MOPR, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
であり、このシステムで信頼されていません。信頼された発行元からのスクリプトのみを実行してください。

[V] 常に実行しない(V)  [D] 実行しない(D)  [R] 一度だけ実行する(R)  [A] 常に実行する(A)  [?] ヘルプ (既定値は "D"):

Microsoft Dwonload Center から手に入れたのに 信頼されていないって
とりあえず 「R」で enter !

しばらく待ちます



ps_20180208_1200

Windows Update スタンドアロン インストーラーが起動された!
あとはインストーラーに従って進めて終わりっと

完了画面で以下のメッセージが

更新プログラムを有効にするには、コンピューターを再起動してください。

ということで再起動します。

PowerShell のバージョン確認をしよう!

さて、無事にPowerShell アップデートされているでしょうか。

$PSVersionTable
PS C:\hoge> $PSVersionTable

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

PS C:\hoge>

バージョンは・・・

PSVersion  5.1.14409.1005

PowerShell が アップデート されていることが確認できました。

ラスト! PowerShell 実行ポリシー を戻すの忘れるな

最後に PowerShell の 実行ポリシー を 戻します。
このままだと、セキュリティが弱くなってるので危険です。

AllSigned →  Restricted  
PS C:\hoge> Set-ExecutionPolicy Restricted

Execution Policy Change
The execution policy helps protect you from scripts that you do not trust. Changing the execution policy might expose
you to the security risks described in the about_Execution_Policies help topic at
http://go.microsoft.com/fwlink/?LinkID=135170. Do you want to change the execution policy?

[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "N"): y
PS C:\hoge>

Restricted に戻しました。

PS C:\hoge> Get-ExecutionPolicy
Restricted
PS C:\hoge>

きちんと Restricted に戻っていることも確認。

以上で 作業終了です。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です