commands - اوامر powershell




تحديد تثبيت إصدار PowerShell (16)

أمر $PSVersionTable.PSVersion مفيد.

Major  Minor  Patch  PreReleaseLabel BuildLabel
-----  -----  -----  --------------- ----------
6      1      0

كيف يمكنني تحديد إصدار PowerShell المثبت على جهاز الكمبيوتر ، وبالفعل إذا تم تثبيته على الإطلاق؟


إن أسهل طريقة لنسيان هذه الصفحة وعدم العودة إليها هي تعلم Get-Variable :

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

ليست هناك حاجة لتذكر كل متغير. مجرد Get-Variable غير كاف (و "يجب أن يكون هناك شيء حول الإصدار").


استخدم الأمر Get-Host . السطر الثاني من النتيجة هو الإصدار.


استعمال:

$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 المثبت .


توسيع الإجابة مع عامل اختيار محدد:

Get-Host | select {$_.Version}

جرب؛) ((Get-Host).Version).Major


سيعرض الأمر cmdlet أدناه إصدار PowerShell.

$PSVersionTable.PSVersion.Major

عادة ما تحصل عليه باستخدام الرقم الرئيسي الذي يمكنك الحصول عليه على النحو التالي:

$PSVersionTable.PSVersion.Major

كنت بحاجة للتحقق من إصدار PS ثم قم بتشغيل التعليمات البرمجية المناسبة. بعض خوادمنا تعمل على v5 ، والبعض الآخر v4. هذا يعني أن بعض الوظائف ، مثل الضغط ، قد تكون أو لا تكون متوفرة.

هذا هو الحل الخاص بي:

if ($PSVersionTable.PSVersion.Major -eq 5) {
    #Execute code available in 5, like Compress
    Write-Host "You are running version 5"
}
else {
    #Use a different process
    Write-Host "This is version $PSVersionTable.PSVersion.Major"
}

لتحديد ما إذا تم تثبيت PowerShell ، يمكنك التحقق من التسجيل لوجود

HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell\1\Install

و

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3

وإذا كانت القيمة موجودة ، فستكون القيمة 1 (للتثبيت) ، كما هو مفصل في تدوينة المدونة تحقق مما إذا كانت PowerShell مثبتة وإصدارًا .

لتحديد إصدار PowerShell المثبت ، يمكنك التحقق من مفاتيح التسجيل

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

و

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

لتحديد إصدار PowerShell الذي تم تثبيته من برنامج نصي .ps1 ، يمكنك استخدام الخط الواحد التالي ، كما هو مفصل على PowerShell.com في إصدار PowerShell الذي أقوم بتشغيله .

$isV2 = test-path variable:\psversiontable

يمنح نفس الموقع أيضًا وظيفة لإعادة الإصدار:

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

للتحقق من تثبيت 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. يجب أن تعطيك قيمة المتغير $host .


يمكنك التحقق من تثبيت إصدار Windows PowerShell بإكمال التحقق التالي:

  1. انقر فوق ابدأ ، ثم انقر فوق كافة البرامج ، وانقر فوق البرامج الملحقة ، ثم انقر فوق Windows PowerShell ، ثم انقر فوق Windows PowerShell.
  2. في وحدة تحكم Windows PowerShell ، اكتب الأمر التالي في موجه الأوامر واضغط على ENTER:

    الحصول على المضيف | اختيار كائن الاصدار

سترى الإخراج الذي يشبه هذا:

Version
-------
3.0

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


الطريقة المستقبلة المستحسنة من Microsoft للتحقق من تثبيت PowerShell وتحديد الإصدار المثبت هو النظر في اثنين من مفاتيح التسجيل المحددة. لقد استنسخت التفاصيل هنا في حالة انقطاع الرابط.

وفقا للصفحة المرتبطة:

استناداً إلى أي مفتاح (مفاتيح) تسجيل أخرى أو إصدار PowerShell.exe أو موقع PowerShell.exe لا يضمن العمل على المدى الطويل.

للتحقق من تثبيت أي إصدار من PowerShell ، تحقق من وجود القيمة التالية في السجل:

  • موقع المفتاح: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1
  • اسم القيمة: التثبيت
  • نوع القيمة: REG_DWORD
  • بيانات القيمة: 0x00000001 (1

للتحقق من تثبيت الإصدار 1.0 أو 2.0 من PowerShell ، تحقق من وجود القيمة التالية في التسجيل:

  • موقع المفتاح: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine
  • اسم القيمة: PowerShellVersion
  • نوع القيمة: REG_SZ
  • بيانات القيمة: <1.0 | 2.0>

سأستخدم إما Get-Host أو $ PSVersionTable . كما يشير آندي شنايدر ، لا تعمل $PSVersionTable في الإصدار 1 ؛ تم تقديمه في الإصدار 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

استخدم $PSVersionTable.PSVersion لتحديد إصدار المحرك. إذا كان المتغير غير موجود ، فمن الآمن افتراض أن المحرك هو الإصدار 1.0 .

لاحظ أن $Host.Version و (Get-Host).Version ليست موثوقة - فهي تعكس نسخة المضيف فقط ، وليس المحرك. تستضيف PowerGUI و PowerShellPLUS وما إلى ذلك جميع التطبيقات ، وستقوم بتعيين إصدار المضيف لتعكس إصدار منتجهم - وهو صحيح تمامًا ، ولكن ليس ما تبحث عنه.

PS C:\> $PSVersionTable.PSVersion

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






powershell