Y├╝kl├╝ PowerShell s├╝r├╝m├╝n├╝ belirleme


Al─▒nan cevaba git


Bir bilgisayarda hangi PowerShell s├╝r├╝m├╝n├╝n y├╝kl├╝ oldu─čunu ve ger├žekten de y├╝klenip y├╝klenmedi─čini nas─▒l belirleyebilirim?


2515









Cevap say─▒s─▒n─▒ say: 19






$PSVersionTable.PSVersion Motor versiyonunu belirlemek i├žin kullan─▒n . De─či┼čken yoksa, motorun s├╝r├╝m oldu─čunu varsaymak g├╝venlidir 1.0 .

Bunu unutmay─▒n $Host.Version ve (Get-Host).Version g├╝venilir de─čildir - motorun de─čil, yaln─▒zca ana bilgisayar─▒n s├╝r├╝m├╝n├╝ yans─▒t─▒rlar. PowerGUI, PowerShellPLUS, vb. T├╝m bar─▒nd─▒rma uygulamalar─▒d─▒r ve ana bilgisayar─▒n s├╝r├╝m├╝n├╝ kendi ├╝r├╝n s├╝r├╝mlerini yans─▒tacak ┼čekilde ayarlayacakt─▒r - ki bu tam olarak do─čru, ancak arad─▒─č─▒n─▒z─▒ de─čil.

 PS C:\> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      -1     -1
 

3422







Ben de kullan─▒rs─▒n─▒z GET-ana bilgisayar veya $ PSVersionTable . Andy Schneider'in i┼čaret etti─či gibi $PSVersionTable , s├╝r├╝m 1'de ├žal─▒┼čm─▒yor; s├╝r├╝m 2'de tan─▒t─▒ld─▒.

 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
 

423







PowerShell'in y├╝kl├╝ olup olmad─▒─č─▒n─▒ belirlemek i├žin, kay─▒t defterinin var olup olmad─▒─č─▒n─▒ kontrol edebilirsiniz.

 HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell\1\Install
 

ve

 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3
 

ve varsa, de─čerin 1 (y├╝kl├╝ i├žin) olup olmad─▒─č─▒, blog yaz─▒s─▒nda belirtildi─či gibi PowerShell'in kurulu olup olmad─▒─č─▒n─▒ ve s├╝r├╝m├╝n├╝ kontrol edin .

Y├╝klenmi┼č olan PowerShell s├╝r├╝m├╝n├╝ belirlemek i├žin kay─▒t defteri anahtarlar─▒n─▒ kontrol edebilirsiniz.

 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine\PowerShellVersion
 

ve

 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine\PowerShellVersion
 

Bir .ps1 beti─činden y├╝klenen PowerShell s├╝r├╝m├╝n├╝ belirlemek i├žin, ┼ču PowerShell S├╝r├╝m├╝n├╝ ├çal─▒┼čt─▒rd─▒─č─▒m PowerShell.com'da ayr─▒nt─▒l─▒ olarak verilen a┼ča─č─▒daki astar─▒ kullanabilirsiniz .

 $isV2 = test-path variable:\psversiontable
 

Ayn─▒ site, s├╝r├╝m├╝ d├Ând├╝rmek i├žin bir i┼člev de verir:

 function Get-PSVersion {
    if (test-path variable:psversiontable) {$psversiontable.psversion} else {[version]"1.0.0.0"}
}
 

95







Yerle┼čik de─či┼čkene bakabilirsiniz $psversiontable . E─čer yoksa, V1'iniz var. Varsa, ihtiyac─▒n─▒z olan t├╝m bilgileri size verecektir.

 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    
 

94







Komut ─░steminde oldu─ču gibi, harici olarak PowerShell'i ├ža─č─▒rarak yaln─▒zca bir sat─▒rla s├╝r├╝m├╝ kontrol edebilirsiniz.

 powershell -Command "$PSVersionTable.PSVersion"
 

G├Âre @psaul sen yapabilirsiniz asl─▒nda (CMD, PowerShell veya Pwsh) geldi yerden agnostik olan bir komut var. Bunun i├žin te┼čekk├╝r ederim.

 powershell -command "(Get-Variable PSVersionTable -ValueOnly).PSVersion"
 

Test ettim ve hem CMD hem de PowerShell ├╝zerinde kusursuz ├žal─▒┼čt─▒.


g├Âr├╝nt├╝


42







A┼ča─č─▒daki denetimi tamamlayarak Windows PowerShell s├╝r├╝m├╝n├╝n y├╝klendi─čini do─črulayabilirsiniz:

  1. Ba┼člat, T├╝m Programlar, Donat─▒lar, Windows PowerShell ve ard─▒ndan Windows PowerShell ├Â─čelerini t─▒klay─▒n.
  2. Windows PowerShell konsolunda, komut istemine a┼ča─č─▒daki komutu yaz─▒n ve ENTER tu┼čuna bas─▒n:

     Get-Host | Select-Object Version
     

Buna benzeyen bir ├ž─▒kt─▒ g├Âreceksiniz:

 Version
-------
3.0
 

http://www.myerrorsandmysolutions.com/how-to-verify-the-windows-powershell-version-installed/


34







Microsoft'un PowerShell'in kurulu olup olmad─▒─č─▒n─▒ kontrol etmek ve kurulu s├╝r├╝m├╝ belirlemek i├žin ├Ânerilen ileri uyumlu y├Ântem iki ├Âzel kay─▒t defteri anahtar─▒na bakmakt─▒r. Ba─člant─▒ koparsa diye detaylar─▒ burada ├žo─čaltt─▒m.

Ba─člant─▒l─▒ sayfaya g├Âre:

Di─čer kay─▒t defteri anahtarlar─▒na veya anahtarlar─▒na veya PowerShell.exe s├╝r├╝m├╝ne veya PowerShell.exe dosyas─▒n─▒n konumuna ba─čl─▒ olarak uzun vadede ├žal─▒┼čmas─▒ garanti edilmez.

Olmad─▒─č─▒n─▒ kontrol etmek i├žin herhangi bir s├╝r├╝m PowerShell y├╝kl├╝ oldu─ču defterinde a┼ča─č─▒daki de─čer denetlemek,:

  • Anahtar Yeri: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1
  • De─čer Ad─▒: Y├╝kle
  • De─čer T├╝r├╝: REG_DWORD
  • De─čer Verisi: 0x00000001 (1

Kontrol etmek s├╝r├╝m 1.0 veya 2.0 olsun PowerShell y├╝klenir, kay─▒t defterinde a┼ča─č─▒daki de─čeri kontrol edin:

  • Anahtar Yeri: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine
  • De─čer Ad─▒: PowerShellVersion
  • De─čer T├╝r├╝: REG_SZ
  • De─čer Verisi: <1.0 | 2.0>

21







Y├╝kl├╝ olup olmad─▒─č─▒n─▒ kontrol etmenin en kolay yolunu buldum:

  • komut istemini ├žal─▒┼čt─▒r─▒n (Ba┼člat, ├çal─▒┼čt─▒r cmd , ard─▒ndan Tamam)
  • yaz─▒n powershell sonra return tu┼čuna bas─▒n. Daha sonra PowerShell PS istemini almal─▒s─▒n─▒z :

 C:\Users\MyUser>powershell

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

PS C:\Users\MyUser>
 

Daha sonra a┼ča─č─▒dakileri yazarak s├╝r├╝m├╝ PowerShell isteminden kontrol edebilirsiniz $PSVersionTable.PSVersion :

 PS C:\Users\MyUser> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
2      0      -1     -1

PS C:\Users\MyUser>
 

Tip exit istemi komutuyla (geri d├Ânmek istiyorsan─▒z exit siz de yak─▒n komuta istemi istiyorum tekrar varsa).

Komut dosyalar─▒n─▒ ├žal─▒┼čt─▒rmak i├žin bkz. Http://ss64.com/ps/syntax-run.html .


11







$host.version sadece d├╝z yanl─▒┼č / g├╝venilmez. Bu, hosting y├╝r├╝t├╝lebilir (powershell.exe, powergui.exe, powershell_ise.exe, powershellplus.exe vs) ve s├╝r├╝m├╝n├╝ verir de─čil motorun kendisinin s├╝r├╝m├╝n├╝.

Motor versiyonu i├žeride bulunur $psversiontable.psversion . PowerShell 1.0 i├žin bu de─či┼čken mevcut de─čildir, bu y├╝zden a├ž─▒k├ža e─čer bu de─či┼čken mevcut de─čilse, a├ž─▒k├ža motorun 1.0 oldu─čunu varsaymak tamamen g├╝venlidir.


9


2013-04-17





kullan─▒n:

 $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'}
}
 

Ayr─▒nt─▒l─▒ beti─či, kurulu PowerShell s├╝r├╝m├╝n├╝n nas─▒l belirlenece─či b├Âl├╝m├╝nden indirebilirsiniz .


9







PowerShell'in kurulu olup olmad─▒─č─▒n─▒ kontrol etmek i├žin ┼čunlar─▒ kullan─▒n:

 HKLM\Software\Microsoft\PowerShell\1 Install ( = 1 )
 

RC2 veya RTM'nin kurulu olup olmad─▒─č─▒n─▒ kontrol etmek i├žin ┼čunlar─▒ kullan─▒n:

 HKLM\Software\Microsoft\PowerShell\1 PID (=89393-100-0001260-00301) -- For RC2
HKLM\Software\Microsoft\PowerShell\1 PID (=89393-100-0001260-04309) -- For RTM
 

Kaynak: bu web sitesi .


7







En yararl─▒ cevap, e─čer varsa b├Âl├╝m├╝n├╝ ele almad─▒─č─▒ndan, h─▒zl─▒ ve kirli bir ├ž├Âz├╝mle bir tane verece─čimi d├╝┼č├╝nd├╝m. PowerShell'in, istedi─činiz olas─▒l─▒k olan yol ├ževre de─či┼čkeninde olmas─▒na dayan─▒r . (┼×apka bunu bilmedi─čim i├žin en ├╝stteki cevaba i┼čaret ediyor.) Bunu bir metin dosyas─▒na yap─▒┼čt─▒r─▒n ve adland─▒r─▒n

Powershell S├╝r├╝m├╝n├╝ Test Edin.

veya benzeri.

 @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
 

7







Bu sayfay─▒ unutman─▒n ve asla geri d├Ânmemenin en kolay yolu ┼čunu ├Â─črenmek Get-Variable :

 Get-Variable | where {$_.Name -Like '*version*'} | %{$_[0].Value}
 

Her de─či┼čkeni hat─▒rlamaya gerek yok. Sadece Get-Variable yeterli (ve "s├╝r├╝mle ilgili bir ┼čeyler olmal─▒").


6







PowerShell s├╝r├╝m├╝n├╝ kontrol etmem ve ard─▒ndan uygun kodu ├žal─▒┼čt─▒rmam gerekiyordu. Sunucular─▒m─▒zdan baz─▒lar─▒ v5, di─čerleri v4. Bu, kompres gibi baz─▒ fonksiyonlar─▒n mevcut olabilece─či veya bulunmayabilece─či anlam─▒na gelir.

Bu benim ├ž├Âz├╝m├╝m:

 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"
}
 

4







A┼ča─č─▒daki cmdlet, PowerShell s├╝r├╝m├╝n├╝ d├Ând├╝r├╝r.

 $PSVersionTable.PSVersion.Major
 

3







PowerShell komut sat─▒r─▒ndan "host" komutunu da ├ža─č─▒rabilirsiniz. Size $host de─či┼čkenin de─čerini vermelidir .


1







Bu, "Toplu i┼č dosyas─▒ powershell s├╝r├╝m├╝n├╝ alma" i├žin en iyi arama sonucudur, bu nedenle, powershell s├╝r├╝m├╝ne ba─čl─▒ olarak toplu i┼č dosyas─▒nda ko┼čullu ak─▒┼č─▒n nas─▒l yap─▒ld─▒─č─▒na ili┼čkin temel bir ├Ârnek vermek istiyorum.

Genel ├Ârnek

 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.
)
 

Ger├žek d├╝nya ├Ârne─či

 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
)
 

1







Cevab─▒ se├žilen bir operat├Ârle geni┼čletme:

 Get-Host | select {$_.Version}
 

0


2016-01-25





Burada ├žok fazla cevap var. Benimkini buraya koyaca─č─▒m─▒ d├╝┼č├╝nd├╝m ├ž├╝nk├╝ olduk├ža k─▒sa ve hem ana hem de k├╝├ž├╝k versiyonlar─▒ birlikte s├Âyl├╝yor.

 $psMajorVer = $PSVersionTable.PSVersion.Major.ToString();$psMinorVer = $PSVersionTable.PSVersion.Minor.ToString();Write-Host "You have Powershell version " -NoNewline; Write-Host ($psMajorVer + "." + $psMinorVer);
 

-2