PowerShell에는 동일한 작업을 수행하는 수많은 방법이 있습니다. 이 블로그 게시물에서는 로컬 및 원격 컴퓨터에있는 PowerShell 버전을 확인하는 모든 방법에 대해 알아 봅니다. 나쁜 방법과 제가 권장하는 방법을 다룰 것입니다.
PowerShell 초보자에서 PowerShell 전문가로 전환하려면이 무료 프로그램을 사용하는 것이 좋습니다. PowerShell 도구 구축에 대한 미니 코스. Adam the Automator의 전체 설명과 안내가 포함 된 단계별 자습서입니다.
Powershell 버전을 확인하는 다양한 방법을 보여주는 웹 사이트가 있습니다. 그러나 그들 모두의 포괄적 인 목록을 편집 한 사람은 없습니다. 변경하기로 결정했습니다.
이 모든 방법은 Windows PowerShell과 PowerShell Core에서 모두 작동합니다. 이러한 메서드는 Windows PowerShell 버전 1.0에서 PowerShell 7까지 작동해야합니다.
실행중인 PowerShell 버전을 찾을 수있는 방법은 다음과 같습니다.
-
(Get-Host).Version
속성 -
$host.Version
속성 - 레지스트리 (Windows PowerShell 만 해당)
-
$PSVersionTable.PSVersion
속성
PowerShell 버전을 최소한에서 가장 권장되는 방법으로 찾는 모든 방법을 분석해 보겠습니다. .
목차
Get-Host
PowerShell에는 호스트라는 개념이 있습니다. 호스트는 PowerShell 엔진을 호스팅하는 프로그램입니다. PowerShell 엔진 자체가 아닙니다. PowerShell 콘솔 또는 통합 터미널이있는 코드 편집기는 PowerShell 호스트입니다.
호스트는 PowerShell 자체와 완전히 독립적 인 버전을 가질 수 있습니다. 이것은 많은 신규 이민자들에게 속일 수 있습니다. 이유를 보여 드리겠습니다.
(Get-Host).Version
를 실행하면 PowerShell 엔진 버전 일 수있는 것처럼 보이는 버전 번호가 반환되는 것을 확인할 수 있습니다. 속일 수 있습니다.
아래에서 Windows PowerShell 5.1에서 Get-Host
를 실행했으며 5.1.17134.858로 돌아 오는 것을 볼 수 있습니다. 합법적 인 버전 인 것 같습니다.
하지만 통합 터미널에서 Get-Host
를 실행할 때 버전이 동일하지 않습니다. 일반적으로 호스트는 동일한 버전의 엔진을 나타내지 만 항상 그렇게 할 필요는 없습니다.
원격 컴퓨터의 Get-Host를 통해 Powershell 버전 확인
는 로컬 컴퓨터에서 실행할 때 동일한 버전을 반환하는 것처럼 보이지만 원격 컴퓨터에서는 절대 반환하지 않습니다.
예를 들어 Get-Host
원격 Windows Server 2016 서버에서 Invoke-Command
를 통해 어떻게되는지 확인하세요.
마지막으로 확인했을 때 PowerShell v1을 실행할 수 없습니다. Windows Server 2016.
Get-Host
에 의존하는 것은 좋지 않은 생각입니다.
Powershell 버전 $ host.Version 명령 확인
$host.Version
참조는 Powershell 버전을 확인하는 또 다른 방법입니다. $host
변수는 Get-Host
와 동일한 출력을 반환하는 자동 변수입니다.
참조
이 방법에는 특별한 것이 없습니다. Get-Host
를 실행하는 것과 동일합니다.
원격 컴퓨터에서 $ host.Version
PowerShell Remoting을 통해 동일한 동작을 볼 수 있습니다. $host.Version
Get-Host
를 실행합니다.
위험, Will Robinson!
레지스트리
PowerShell 자체를 열지 않으려면 레지스트리를 확인할 수도 있습니다. PowerShell 버전은 레지스트리 키 경로 HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine
의 값 아래에 숨겨져 있습니다. 이 레지스트리 키에는 Get-ItemProperty
를 사용하여 참조 할 수있는 PowerShellVersion
라는 값이 있습니다.
다음을 볼 수 있습니다. version은 비슷하지만 다른 옵션처럼 개정판을 포함하지 않습니다.
다른 도구 사용
레지스트리를 사용하면 찾기 위해 PowerShell을 전혀 사용할 필요가 없습니다. 버전. 명령 프롬프트 또는 레지스트리를 읽을 수있는 다른 도구에서 명령을 실행할 수 있습니다.
원격 컴퓨터의 레지스트리
레지스트리는 정적이며 값은 로컬 또는 원격으로 변경되지 않습니다. 로컬에서 보는 것과 원격에서 보는 것과 동일 할 것이라고 확신 할 수 있습니다.
동일한 버전을 로컬 및 원격으로 표시하는 것이 좋습니다. 하지만 $PSVersionTable
자동 변수를 사용하는 방법을 더 잘 보여 드릴 수 있습니다.
$ PSVersionTable.PSVersion 명령을 통해 Powershell 버전 확인
마지막이자 마지막 방법은 $PSVersionTable
자동 변수의 PSVersion
속성을 참조하는 것입니다.이 메서드는 항상 PowerShell 엔진을 나타냅니다.
$PSVersionTable
자동 변수는 읽기 전용 해시 테이블입니다. 특히 PowerShell engin 버전에 대한 정보를 반환합니다. 이 자동 변수는 버전뿐만 아니라 PSEdition
도 반환합니다. 이 속성은 실행중인 PowerShell 버전에 대한 추가 정보를 제공하기 위해 Core 또는 Desktop이 될 수 있습니다.
원격 컴퓨터의 $ PSVersionTable
자동 변수는 원격과 마찬가지로 로컬에서 정확합니다. 스크립트 블록에 $PSVersionTable.PSVersion
를 래핑하고 해당 코드를 원격 컴퓨터에서 실행하면 동일한 버전이 반환된다는 것을 아래에서 확인할 수 있습니다.
요약
이 블로그 게시물에서는 로컬 및 원격으로 PowerShell 버전을 확인하는 모든 방법을 배웠습니다. 처음 몇 가지 방법이 버전을 확인하지 않는 방법에 대한 아이디어를 얻었기를 바랍니다!
항상 $PSVersionTable.PSVersion
를 사용하는 것이 좋습니다. 다른 모든 방법은 PowerShell 엔진 버전과 유사하게 보일 수 있지만 항상 엔진 버전을 반영하지는 않습니다.