Computer >> 컴퓨터 >  >> 체계 >> Windows Server

설치된 PowerShell 버전을 확인하는 방법은 무엇입니까?

이 기사에서는 존재하는 PowerShell 버전, Windows PowerShell의 차이점에 대해 알아봅니다. 및 PowerShell Core , 로컬 또는 원격 컴퓨터에 설치된 PowerShell 버전을 확인하는 방법.

Windows PowerShell 및 PowerShell Core의 역사 및 버전

PowerShell은 Windows 7 SP1 및 Windows Server 2008 R2 SP1부터 모든 Windows 버전에 기본적으로 설치됩니다. 다음 표는 모든 PowerShell 버전 목록을 보여줍니다.

PS 버전 참고
파워쉘 1.0 Windows Server 2003 SP1 및 Windows XP에 수동으로 설치할 수 있음
파워쉘 2.0 Windows Server 2008 R2 및 Windows 7
파워쉘 3.0 Windows 8 및 Windows Server 2012
파워쉘 4.0 Windows 8.1 및 Windows Server 2012 R2
파워쉘 5.0 Windows 10 RTM에 사전 설치되고 Windows 업데이트를 통해 5.1로 자동 업데이트됨
파워쉘 5.1 Windows 10(Build 1709부터 시작) 및 Windows Server 2016에 내장되어 있습니다.
PowerShell 코어 6.0 및 6.1 지원되는 모든 Windows 버전과 MacOS, CentOS, RHEL, Debian, Ubuntu, openSUSE에 설치할 수 있는 다음 교차 플랫폼 PowerShell 버전(.NET Core 기반)입니다.
PowerShell 코어 7.0 2020년 3월에 출시된 최신 PowerShell 버전입니다(.NET Core 2.x 대신 .NET Core 3.1이 사용됨)
이전 Windows 버전에서 최신 PowerShell 버전을 수동으로 설치할 수 있습니다. 이를 수행하려면 적절한 버전의 Windows Management Framework를 다운로드하여 설치하십시오. (PowerShell은 그 일부입니다).

지난 2년 동안 Microsoft는 클래식 Windows PowerShell 개발을 중단하고(버그 수정 및 보안 업데이트만 릴리스됨) 오픈 소스 크로스 플랫폼 PowerShell Core에 집중했습니다. .

Windows PowerShell과 PowerShell Core의 차이점은 무엇입니까?

  1. Windows PowerShell .NET Framework 기반 (예를 들어 PowerShell 5에는 .NET Framework v4.5가 필요하며 설치되어 있는지 확인하십시오). PowerShell 코어 .Net Core 기반;
  2. Windows PowerShell은 Windows 운영 체제에서만 작동하지만 PowerShell Core 크로스 플랫폼입니다. Linux에서도 작동할 수 있습니다.
  3. PowerShell Core는 Windows PowerShell과 완전히 호환되지 않지만 Microsoft는 이전 PS cmdlet 및 스크립트와의 역호환성을 개선하기 위해 노력하고 있습니다. (PowerShell Core로 이동하기 전에 이전 PS1 스크립트를 테스트하는 것이 좋습니다). PowerShell Core 7은 Windows PowerShell과 최고의 호환성을 제공합니다.
  4. PowerShell ISE 편집기를 사용하여 PowerShell Core 스크립트를 편집할 수 없습니다(그러나 Visual Studio Code는 사용할 수 있음).
  5. Windows PowerShell은 더 이상 개발되지 않았으므로 PowerShell Core로 마이그레이션을 시작하는 것이 좋습니다.

콘솔에서 PowerShell 버전을 가져오는 방법

컴퓨터에 설치된 PowerShell 버전을 찾는 가장 쉬운 방법은 다음 명령을 사용하는 것입니다.

host

버전 속성 값을 확인하십시오.

다음 스크린샷은 Windows Server 2016과 같이 기본적으로 PowerShell 5.1이 설치된 Windows 10에서 만들어졌습니다.

설치된 PowerShell 버전을 확인하는 방법은 무엇입니까?

또는

$PSVersionTable

PowerShell 버전 값만 가져올 수 있습니다.

$PSVersionTable.PSVersion.major

(이 예에서는 깨끗한 Windows Server 2008 R2에서 PSVersion 2.0을 얻었습니다)

설치된 PowerShell 버전을 확인하는 방법은 무엇입니까?

$PSVersionTable 명령은 다른 운영 체제의 PowerShell Core에서 올바르게 작동합니다.

레지스트리를 통해 설치된 PowerShell 버전을 확인할 수도 있습니다. 이를 수행하려면 레지스트리 키 HKLM\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine에서 PowerShellVersion 매개 변수의 값을 가져옵니다. Get-ItemProperty cmdlet 사용:

(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion

설치된 PowerShell 버전을 확인하는 방법은 무엇입니까?

위에서 설명한 방법은 Windows Server 2012/Windows 8 이상에서 작동합니다.

Windows Server 2008 R2/Windows 7에서는 다른 reg 키에서 레지스트리 매개변수 값을 가져올 수 있습니다.

(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion

설치된 PowerShell 버전을 확인하는 방법은 무엇입니까?

설치된 PowerShell Core 버전을 가져오려면 다음 명령을 사용하십시오.

(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShellCore\InstalledVersions* -Name 'SemanticVersion').SemanticVersion

원격 컴퓨터에서 PowerShell 버전 확인

원격 호스트에서 PowerShell 버전을 확인하려면 $PSVersionTable 값을 사용합니다. 환경 변수를 사용하거나 레지스트리에서 직접 정보를 가져옵니다. 다른 방법은 잘못된 데이터를 반환할 수 있습니다.

Invoke-Command를 사용하여 PowerShell Remoting을 통해 원격 컴퓨터에 설치된 PowerShell 버전을 가져올 수 있습니다. cmdlet:

Invoke-Command -ComputerName mun-dc01 -ScriptBlock {$PSVersionTable.PSVersion} -Credential $cred
설치된 PowerShell 버전을 확인하는 방법은 무엇입니까?

Major Minor Build Revision PSComputerName
----- ----- ----- -------- --------------
5 1 14393 3383 mun-dc01

다음 스크립트를 사용하여 여러 컴퓨터에 설치된 PowerShell 버전을 가져올 수 있습니다(원격 컴퓨터 목록은 일반 텍스트 파일로 지정해야 함).

Invoke-Command -ComputerName (Get-Content C:\PS\host_list.txt) -
ScriptBlock{$PSVersionTable.PSVersion} | Select PSComputerName, @{N="PS Version";E={$_.Major}}

또는 Get-ADComputer를 통해 도메인 컴퓨터 목록을 가져와 원격으로 PowerShell 버전을 확인할 수 있습니다.

$adcomputer=(Get-ADComputer -Filter 'operatingsystem -like "*Windows server*" -and enabled -eq "true"' -SearchBase ‘OU=servers,OU=Munich,dc=woshub,dc=com’ ).Name
Invoke-Command-ComputerName $adcomputer -Scriptblock{$PSVersionTable.psversion} -ErrorAction SilentlyContinue

PowerShell 스크립트가 특정 PS 버전의 기능을 사용하는 경우 스크립트를 강제로 다른 PowerShell 버전으로 전환할 수 있습니다. 예를 들어 PowerShell v3 모드에서 콘솔을 실행하려면 다음 명령을 실행합니다(.Net Framework 3.5가 설치되어 있어야 함).

PowerShell.exe -version 3

특정 PS 버전의 cmdlet 또는 기능을 사용하는 스크립트나 명령을 실행하는 경우 PowerShell 버전을 아는 것이 중요할 수 있습니다. 스크립트에서 설치된 PowerShell 버전을 감지하고 이를 기반으로 하는 cmdlet을 사용하려는 경우 다음 PS 스크립트를 실행할 수 있습니다.

$ps_version = $PSVersionTable.PSVersion.major
if ( $ps_version -eq "2” )
{
write "You are using Powershell 2.0"
}
elseif ( $ps_version -eq "5" )
{
write " You are using Powershell 5"
}

다음 기사에서는 Windows에서 PowerShell 버전을 업데이트하는 방법을 살펴보겠습니다.