설치되어 있는 PowerShell 버전 확인
컴퓨터에 어떤 버전의 PowerShell이 설치되어 있는지, 실제로 설치되어 있는지 확인하는 방법은 무엇입니까?
$PSVersionTable.PSVersion
엔진 버전을 확인합니다.하지 않는 「」으로 상정해도 합니다.1.0
.
:$Host.Version
★★★★★★★★★★★★★★★★★」(Get-Host).Version
을 사용하다이것은, 엔진이 아니고, 호스트의 버전만을 반영하고 있습니다.PowerGUI, PowerShell PLUS 등은 모두 애플리케이션을 호스팅하고 있으며, 제품 버전을 반영하도록 호스트의 버전을 설정합니다.이것은 완전히 맞지만, 필요한 것은 아닙니다.
PS C:\> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
4 0 -1 -1
Get-Host 또는 $PSversionTable 중 하나를 사용합니다.앤디 슈나이더가 지적했듯이$PSVersionTable
되었습니다.2번입니다.
get-host
Name : ConsoleHost
Version : 2.0
InstanceId : d730016e-2875-4b57-9cd6-d32c8b71e18a
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : en-GB
CurrentUICulture : en-US
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
$PSVersionTable
Name Value
---- -----
CLRVersion 2.0.50727.4200
BuildVersion 6.0.6002.18111
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.1
기본 변수인 , in,, , you you you 、 , you 、 you you 、 you 。$psversiontable
V1을 사용하다존재하는 경우 필요한 모든 정보를 얻을 수 있습니다.
1 > $psversiontable
Name Value
---- -----
CLRVersion 2.0.50727.4927
BuildVersion 6.1.7600.16385
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.1
PowerShell이 설치되어 있는지 여부를 확인하려면 레지스트리에서
HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell\1\Install
그리고.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3
또한 PowerShell 설치 여부 및 버전 확인 블로그 게시물에서 자세히 설명한 바와 같이 값이 1(설치된 경우)인지 여부도 확인할 수 있습니다.
설치된 PowerShell의 버전을 확인하려면 레지스트리 키를 확인하십시오.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine\PowerShellVersion
그리고.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine\PowerShellVersion
.ps1 스크립트에서 설치된 PowerShell 버전을 확인하려면 PowerShell.com에서 자세히 설명한 대로 다음 한 줄을 사용합니다.
$isV2 = test-path variable:\psversiontable
같은 사이트에서 버전을 반환하는 기능도 제공합니다.
function Get-PSVersion {
if (test-path variable:psversiontable) {$psversiontable.psversion} else {[version]"1.0.0.0"}
}
명령 프롬프트에서와 같이 외부에서 PowerShell을 호출하여 한 줄의 버전만 직접 확인할 수 있습니다.
powershell -Command "$PSVersionTable.PSVersion"
@psaul에 따르면 실제로 하나의 명령어(CMD, PowerShell 또는 Pwsh)를 사용할 수 있습니다.감사합니다.
powershell -command "(Get-Variable PSVersionTable -ValueOnly).PSVersion"
테스트를 해봤는데 CMD와 PowerShell 모두에서 완벽하게 작동했습니다.
다음 검사를 수행하여 윈도우즈 PowerShell 버전이 설치되어 있는지 확인할 수 있습니다.
- 시작, 모든 프로그램, 보조 프로그램, Windows PowerShell, Windows PowerShell 순으로 클릭합니다.
윈도우즈 PowerShell 콘솔에서 명령 프롬프트에 다음 명령을 입력한 다음 Enter 키를 누르십시오.
Get-Host | Select-Object Version
다음과 같은 출력이 표시됩니다.
Version
-------
3.0
http://www.myerrorsandmysolutions.com/how-to-verify-the-windows-powershell-version-installed/
PowerShell이 설치되어 있는지 확인하고 설치된 버전을 확인하기 위해 마이크로소프트가 권장하는 순방향 호환 방법은 두 개의 특정 레지스트리 키를 확인하는 것입니다.링크가 끊어질 경우를 대비해서 여기에 세부사항을 재현해 놨어요.
링크된 페이지에 따르면:
다른 레지스트리 키, PowerShell.exe 버전 또는 PowerShell.exe 위치에 따라서는 장기적으로 동작하지 않을 수 있습니다.
설치되어 있는 PowerShell 버전이 있는지 확인하려면 레지스트리에서 다음 값을 확인합니다.
- 장소 : ★★★★★★★★★★★★★★★★★★★★:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1
- 값 이름:설치하다
- 값 유형: REG_DWORD
- 값 데이터: 0x00000001 (1)
PowerShell 버전 1.0 또는 2.0이 설치되어 있는지 확인하려면 레지스트리에서 다음 값을 확인합니다.
- 장소 : ★★★★★★★★★★★★★★★★★★★★:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine
- 값 이름:PowerShell 버전
- 값 유형: REG_SZ
- 가치 데이터: <1.0 | 2.0 >
설치되어 있는지 확인하는 가장 쉬운 방법은 다음과 같습니다.
- 프롬프트를 합니다(Start, "Start", "Start", "Run", "Run"
cmd
[OK], [OK]) - 「」라고 입력합니다.
powershell
턴을누누 누누누다다 PowerShell PowerShell을 받을 수 .PS
★★★★★★★★★★★★★★★★★★:
C:\Users\MyUser>powershell
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.
PS C:\Users\MyUser>
에서 PowerShell 을 입력하여 버전을 할 수 .$PSVersionTable.PSVersion
:
PS C:\Users\MyUser> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
2 0 -1 -1
PS C:\Users\MyUser>
「」라고 입력합니다.exit
('명령어프롬프트로 돌아갑니다.exit
령령프프프프프프닫닫닫닫닫닫)
스크립트를 실행하려면 , http://ss64.com/ps/syntax-run.html 를 참조해 주세요.
$host.version
그냥 틀렸다/불가능하다.그러면 호스팅 실행 파일의 버전(powershell.exe, powergui)이 나타납니다.exe, powershell_ise.exe, powershellplus.exe 등)를 사용합니다.
은 에 되어 있습니다.$psversiontable.psversion
PowerShell 1.0에서는 이 변수가 존재하지 않기 때문에 이 변수를 사용할 수 없는 경우에는 엔진이 1.0이라고 가정해도 무방합니다.
않는 은 이 페이지를 입니다.Get-Variable
Get-Variable | where {$_.Name -Like '*version*'} | %{$_[0].Value}
모든 변수를 기억할 필요는 없습니다. ★★★★★★★★★★★★★★★★★.Get-Variable
이 정도면 충분합니다(및 "버전에 대해 뭔가 있을 것").
용도:
$psVersion = $PSVersionTable.PSVersion
If ($psVersion)
{
#PowerShell Version Mapping
$psVersionMappings = @()
$psVersionMappings += New-Object PSObject -Property @{Name='5.1.14393.0';FriendlyName='Windows PowerShell 5.1 Preview';ApplicableOS='Windows 10 Anniversary Update'}
$psVersionMappings += New-Object PSObject -Property @{Name='5.1.14300.1000';FriendlyName='Windows PowerShell 5.1 Preview';ApplicableOS='Windows Server 2016 Technical Preview 5'}
$psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.494';FriendlyName='Windows PowerShell 5 RTM';ApplicableOS='Windows 10 1511 + KB3172985 1607'}
$psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.122';FriendlyName='Windows PowerShell 5 RTM';ApplicableOS='Windows 10 1511 + KB3140743 1603'}
$psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.117';FriendlyName='Windows PowerShell 5 RTM 1602';ApplicableOS='Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8.1, and Windows 7 SP1'}
$psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.63';FriendlyName='Windows PowerShell 5 RTM';ApplicableOS='Windows 10 1511 + KB3135173 1602'}
$psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.51';FriendlyName='Windows PowerShell 5 RTM 1512';ApplicableOS='Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8.1, and Windows 7 SP1'}
$psVersionMappings += New-Object PSObject -Property @{Name='5.0.10514.6';FriendlyName='Windows PowerShell 5 Production Preview 1508';ApplicableOS='Windows Server 2012 R2'}
$psVersionMappings += New-Object PSObject -Property @{Name='5.0.10018.0';FriendlyName='Windows PowerShell 5 Preview 1502';ApplicableOS='Windows Server 2012 R2'}
$psVersionMappings += New-Object PSObject -Property @{Name='5.0.9883.0';FriendlyName='Windows PowerShell 5 Preview November 2014';ApplicableOS='Windows Server 2012 R2, Windows Server 2012, Windows 8.1'}
$psVersionMappings += New-Object PSObject -Property @{Name='4.0';FriendlyName='Windows PowerShell 4 RTM';ApplicableOS='Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8.1, and Windows 7 SP1'}
$psVersionMappings += New-Object PSObject -Property @{Name='3.0';FriendlyName='Windows PowerShell 3 RTM';ApplicableOS='Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8, and Windows 7 SP1'}
$psVersionMappings += New-Object PSObject -Property @{Name='2.0';FriendlyName='Windows PowerShell 2 RTM';ApplicableOS='Windows Server 2008 R2 SP1 and Windows 7'}
foreach ($psVersionMapping in $psVersionMappings)
{
If ($psVersion -ge $psVersionMapping.Name) {
@{CurrentVersion=$psVersion;FriendlyName=$psVersionMapping.FriendlyName;ApplicableOS=$psVersionMapping.ApplicableOS}
Break
}
}
}
Else{
@{CurrentVersion='1.0';FriendlyName='Windows PowerShell 1 RTM';ApplicableOS='Windows Server 2008, Windows Server 2003, Windows Vista, Windows XP'}
}
설치된 PowerShell 버전을 확인하는 방법에서 자세한 스크립트를 다운로드할 수 있습니다.
PowerShell 7
승인된 답변은 PowerShell의 한 버전이 시스템에 설치되어 있는 경우에만 적절합니다.PowerShell 7의 등장으로 이 시나리오는 점점 더 어려워지고 있습니다.
Microsoft 문서에는 PowerShell 7 설치 시 추가 레지스트리 키가 생성된다고 나와 있습니다.
PowerShell 7.1의 [installer]의 PowerShell에 대해 설명합니다.은 러음음음음 these these these these these these these these these these 。
HKLM\Software\Microsoft\PowerShellCore\InstalledVersions\<GUID>
의 の of 。<GUID>
는 빌드 유형(릴리스 또는 미리보기), 메이저버전 및 아키텍처별로 고유합니다.
레지스트리를 하면 레지스트리 값인 "R" "R" "R" "Resistry"는 " 값입니다.SemanticVersion
이 값에는 우리가 찾는 정보가 포함됩니다.
내 컴퓨터에는 다음과 같이 표시됩니다.
Path Name Type Data
---- ---- ---- ----
HKLM:\SOFTWARE\Microsoft\PowerShellCore\InstalledVersions\31ab5147-9a97-4452-8443-d9709f0516e1 SemanticVersion String 7.1.3
보시다시피 컴퓨터에 설치된 PowerShell 7 버전은 7.1.3입니다.대상 시스템에 PowerShell 7이 설치되어 있지 않으면 키 전체가 존재하지 않습니다.
Microsoft 의 메뉴얼에 기재되어 있듯이, 레지스트리 패스는, 인스톨 되고 있는 PowerShell 의 버전에 의해서 약간 다릅니다.
일부 키 경로 변경은 일부 시나리오에서 문제가 될 수 있지만 명령줄 기반 솔루션에 관심이 있는 사용자는 PowerShell 자체에서 이 문제를 쉽게 해결할 수 있습니다.
이 레지스트리 값의 데이터를 쿼리하는 데 사용되는 PowerShell cmdlet이 cmdlet입니다.그 사용방법 및 출력에 주의해 주십시오(키 패스의 변경 가능성이 있는 부분 대신에 사용되는 아스타리스크 와일드카드 문자 참조).
PS> Get-ItemPropertyValue -Path "HKLM:\SOFTWARE\Microsoft\PowerShellCore\InstalledVersions\*" -Name "SemanticVersion"
7.1.3
간단한 원라이너입니다.
PowerShell이 설치되어 있는지 확인하려면 다음을 사용합니다.
HKLM\Software\Microsoft\PowerShell\1 Install ( = 1 )
RC2 또는 RTM 이 인스톨 되어 있는지를 확인하려면 , 다음의 순서에 따릅니다.
HKLM\Software\Microsoft\PowerShell\1 PID (=89393-100-0001260-00301) -- For RC2
HKLM\Software\Microsoft\PowerShell\1 PID (=89393-100-0001260-04309) -- For RTM
출처: 이 웹사이트.
가장 도움이 되는 답변은 존재여부를 다루지 않았기 때문에, 저는 빠르고 더러운 해결책으로 그것을 받아들이려고 했습니다.PowerShell이 경로 환경 변수에 포함되어 있는지 여부에 따라 달라집니다. 이는 사용자가 원하는 것일 수 있습니다. (모르쇠로 맨 위의 답변에 대한 힌트입니다.텍스트 파일에 붙여넣고 이름을 지정합니다.
Powershell 버전 테스트.cmd
또는 이와 유사합니다.
@echo off
echo Checking powershell version...
del "%temp%\PSVers.txt" 2>nul
powershell -command "[string]$PSVersionTable.PSVersion.Major +'.'+ [string]$PSVersionTable.PSVersion.Minor | Out-File ([string](cat env:\temp) + '\PSVers.txt')" 2>nul
if errorlevel 1 (
echo Powershell is not installed. Please install it from download.Microsoft.com; thanks.
) else (
echo You have installed Powershell version:
type "%temp%\PSVers.txt"
del "%temp%\PSVers.txt" 2>nul
)
timeout 15
PowerShell 버전을 확인하고 적절한 코드를 실행해야 했습니다.일부 서버는 v5를 실행하고 다른 서버는 v4를 실행합니다.즉, 압축과 같은 일부 기능을 사용할 수도 있고 사용할 수도 없는 경우도 있습니다.
제 솔루션은 다음과 같습니다.
if ($PSVersionTable.PSVersion.Major -eq 5) {
#Execute code available in PowerShell 5, like Compress
Write-Host "You are running PowerShell version 5"
}
else {
#Use a different process
Write-Host "This is version $PSVersionTable.PSVersion.Major"
}
다음 cmdlet은 PowerShell 버전을 반환합니다.
$PSVersionTable.PSVersion.Major
이것은 "Batch file get powershell version"의 상위 검색 결과이므로 powershell version에 따라 배치 파일에서 조건부 플로우를 수행하는 기본적인 예를 제시하겠습니다.
일반적인 예
powershell "exit $PSVersionTable.PSVersion.Major"
if %errorlevel% GEQ 5 (
echo Do some fancy stuff that only powershell v5 or higher supports
) else (
echo Functionality not support by current powershell version.
)
실제의 예
powershell "exit $PSVersionTable.PSVersion.Major"
if %errorlevel% GEQ 5 (
rem Unzip archive automatically
powershell Expand-Archive Compressed.zip
) else (
rem Make the user unzip, because lazy
echo Please unzip Compressed.zip prior to continuing...
pause
)
이거 입어봤어version 7.1.0
효과가 있었습니다.
$PSVersionTable | Select-Object PSVersion
산출량
PSVersion
---------
7.1.0
이 동작하지 않는다version 5.1
7시 7분, 7시 7분 에서는 이 을 사용하세요.
$PSVersionTable.PSVersion
산출량
Major Minor Build Revision
----- ----- ----- --------
5 1 18362 1171
편집
PowerShell 7.2.5에서는 다음 작업을 수행할 수 있습니다.
pwsh -v
또는
pwsh --version
산출량
PowerShell 7.2.5
PowerShell "호스트"를 선택합니다. 하면 그 알 수 있을 거예요.$host
★★★★★★ 。
매우 오래된 질문이지만 여전히 관련이 있습니다. 단지 2023년에 문제의 성격이 달라졌을 뿐입니다.버전을 찾는 것은 쉽지만 먼저 올바른 실행 파일을 시작해야 합니다.그러기 위해서는 기본적으로 레지스트리를 다시 살펴봐야 합니다.
reg query "HKLM\SOFTWARE\Microsoft\PowerShell\1" /v Install >nul 2>&1
if %ERRORLEVEL% EQU 0 (
:: Default to PowerShell 5 if both are installed
set PSEXE=powershell
) else (
set PSEXE=pwsh
)
echo Using %PSEXE%
%PSEXE% -ExecutionPolicy bypass -command "& { ... ; exit $LASTEXITCODE }"
환경변수를 조사함으로써 얻을 수 있는 힌트가 있지만 레지스트리를 'Windows' PowerShell로 테스트하는 것이 가장 안전하다고 생각합니다.
선택한 연산자를 사용하여 답변 확장:
Get-Host | select {$_.Version}
PowerShell 버전을 확인할 수 있는 작은 배치 스크립트를 만들었습니다.
@echo off
for /f "tokens=2 delims=:" %%a in ('powershell -Command Get-Host ^| findstr /c:Version') do (echo %%a)
PowerShell을 사용하여 만 하면 .Get-Host
는 문자열 입니다.Version
되면, 「」를 합니다.for
이치노첫콜론 제 는 콜론입니다.그 결과 이 경우는5.1.18362.752
.
언급URL : https://stackoverflow.com/questions/1825585/determine-installed-powershell-version
'prosource' 카테고리의 다른 글
iOS에서 Base64 인코딩을 하려면 어떻게 해야 하나요? (0) | 2023.04.13 |
---|---|
합병 갈등에 부딪혔어요.마지를 중단하려면 어떻게 해야 하나요? (0) | 2023.04.13 |
CTE, Sub-Query, Temporary Table 또는 Table Variable에 성능 차이가 있습니까? (0) | 2023.04.08 |
폴더가 비어 있는지 Powershell 테스트 (0) | 2023.04.08 |
SQL Server NOLOCK 및 가입 (0) | 2023.04.08 |