Automatorのアダム

PowerShellには、同じこと(またはそれに近いこと)を行う方法が無数にあります。このブログ投稿では、ローカルコンピューターとリモートコンピューターにあるPowerShellのバージョンを確認するあらゆる方法を学びます。悪い方法と私の推奨する方法について説明します。

PowerShellの初心者からPowerShellの第一人者に移行したい場合は、これを無料で食べることをお勧めします。 PowerShellツールの構築に関するミニコース。これは、Adam theAutomatorからの完全な説明とガイダンスを含むステップバイステップのチュートリアルです!

Powershellのバージョンを確認するさまざまな方法を示すWebサイトがあります。しかし、それらすべての包括的なリストをまとめたものはありません。これを変更することにしました。

これらの方法はすべて、WindowsPowerShellとPowerShellCoreの両方で機能するはずです。これらの方法は、WindowsPowerShellバージョン1.0からPowerShell7まですべてで機能するはずです。

実行しているPowerShellのバージョンを確認する方法は次のとおりです。

  1. (Get-Host).Versionプロパティ
  2. $host.Versionプロパティ
  3. レジストリ(Windows PowerShellのみ)
  4. $PSVersionTable.PSVersionプロパティ

PowerShellのバージョンを見つけるためのすべての方法を最小のものから最も推奨される方法まで分類してみましょう。 。

目次

Get-Host

PowerShellにはホストと呼ばれる概念があります。ホストは、PowerShellエンジンをホストしているプログラムです。これはPowerShellエンジン自体ではありません。PowerShellコンソールまたは端末が統合されたコードエディターはPowerShellホストです。

ホストは、PowerShell自体から完全に独立したバージョンを持つことができます。これは多くの新参者を欺く可能性があります。理由をお見せしましょう。

(Get-Host).Versionを実行すると、PowerShellエンジンのバージョンのように見えるバージョン番号が返されることがわかります。見た目はだまされている可能性があります。

Windows PowerShell5.1でGet-Hostを実行すると、5.1.17134.858で戻ってくることがわかります。これは正規のバージョンのように見えます。

ただし、統合端末でGet-Hostを実行すると、バージョンは同じではありません。通常、ホストは同じバージョンのエンジンを表しますが、必ずしもそうする必要はありません。

リモートコンピューターのGet-Hostを介してPowershellのバージョンを確認する

Get-Hostは、ローカルコンピューターで実行すると同じバージョンを返すようですが、リモートコンピューターでは返されません。

たとえば、Get-HostリモートWindowsServer2016サーバーでInvoke-Commandを使用して、何が起こるかを確認します。

前回チェックしたとき、PowerShellv1をで実行することはできません。 Windows Server2016。

Get-Hostに依存することは、あらゆる面で悪い考えです。

Powershellバージョン$ host.Versionコマンドを確認してください

$host.Versionを参照することは、Powershellのバージョンを確認するもう1つの方法です。 $host変数は、Get-Hostと同じ出力を返す自動変数です。

$host.Version

を参照

この方法には特別なことは何もありません。 Get-Hostを実行するのと同じです。

$ host.Versionをリモートコンピューターで実行する

PowerShellRemotingを使用すると同じ動作が見られます。 $host.Version Get-Hostを実行します。

危険です、ロビンソンになります!

レジストリ

PowerShell自体を開きたくない場合は、レジストリを確認することもできます。 PowerShellのバージョンは、レジストリキーパスHKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngineの値の下に隠れています。このレジストリキーには、PowerShellVersionという値があります。この値はGet-ItemPropertyを使用して参照できます。

これがわかりますバージョンは似ていますが、他のオプションのようにリビジョンが含まれていません。

他のツールの使用

レジストリを使用すると、PowerShellを使用して検索する必要がまったくなくなります。バージョン。コマンドプロンプトまたはレジストリを読み取ることができる別のツールからコマンドを実行できます。

リモートコンピュータのレジストリ

レジストリは静的であり、値はローカルまたはリモートで変更されません。ローカルで表示されるものは、リモートで表示されるものと同じになると確信できます。

ローカルとリモートで同じバージョンを表示することをお勧めします。ただし、$PSVersionTable自動変数を使用して表示するためのより良い方法があります。

$ PSVersionTable.PSVersionコマンドでPowershellのバージョンを確認します

最後の最後の方法は、$PSVersionTable自動変数のPSVersionプロパティを参照することです。このメソッドは常にPowerShellエンジンを表します。

$PSVersionTable自動変数は読み取り専用のハッシュテーブルです。特にPowerShellエンジンバージョンに関する情報を返します。この自動変数は、バージョンだけでなくPSEditionも返します。このプロパティは、コアまたはデスクトップのいずれかで、実行中のPowerShellのエディションに関する詳細情報を提供できます。

$ PSVersionTable出力

リモートコンピューターでの$ PSVersionTable

自動変数は、リモートと同様にローカルでも正確です。以下では、$PSVersionTable.PSVersionをスクリプトブロックでラップし、そのコードをリモートコンピューターで実行すると、同じバージョンが返されることがわかります。

まとめ

このブログ投稿では、PowerShellのバージョンをローカルとリモートの両方で確認するすべての方法を学習しました。最初のいくつかの方法で、バージョンを確認しない方法がわかったと思います。

常に$PSVersionTable.PSVersionを使用することをお勧めします。他のすべてのメソッドは、PowerShellエンジンのバージョンと同じように見える場合がありますが、必ずしもエンジンのバージョンを反映しているとは限りません。

コメントを残す

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