PowerShell Çekirdek Sürüm Bilgilerine Başka Bir Bakış


PowerShell Core dünyamıza yayılmaya başladıkça ve platformlar arası çalışmayı ve komut dosyası yazmayı düşünmeye başladıkça, ne tür bir platformda çalıştığınızı bilmek faydalı olacaktır. Yerleşik $PSVersionTable, başlamak için bariz bir yerdir. PowerShell Core'da kullanabileceğiniz bazı yeni yerleşik değişkenler de vardır.

Ancak bu değişkenler Windows PowerShell'de değildir. Bu yüzden karışıma başka bir araç eklemeye karar verdim; hangi olası uzaktan iletişim seçeneklerinin mevcut olduğu da dahil olmak üzere sürüm bilgilerinin anlık görüntüsünü sağlayacak basit bir işlev. Bu, Windows platformları için WinRM ve potansiyel olarak SSH olmalıdır. İşlev özellikle karmaşık değil.

Function Get-PSVersion {
<#
.Synopsis
Get a short view of PowerShell version information

.Description
Use this command to get a quick snapshot of PowerShell version information. The
Remoting property should indicate what remoting capabilities are potentially
available.

.Example
PS C:\> Get-PSVersion

Version      : 5.1.16299.98
Edition      : Desktop
Platform     : Windows
Remoting     : {WinRM}
Computername : Win10Desk

Running on a Windows 10 desktop.

.Example
PS C:\> Get-PSVersion


Version      : 6.0.1
Edition      : Core
Platform     : Win32NT
Remoting     : {WinRM, SSH}
Computername : SRV1

Running PowerShell Core on a Windows platform with SSH installed.

.Example
PS /mnt/c/scripts> get-psversion


Version      : 6.0.1
Edition      : Core
Platform     : Unix
Remoting     : {SSH}
Computername : Bovine320

PowerShell Core running in a Linux environment.

.Link
$PSVersionTable


#>
[cmdletbinding()]
Param()

$ver = $PSVersionTable.PSVersion
$edition = $PSVersionTable.PSEdition

if ($PSVersionTable.platform) {
    $platform = $PSVersionTable.platform
}
else {
    $platform = "Windows"
}

$remoting = @()
if (Test-Path 'WSMan:') {
    $remoting+="WinRM"
}
if (Get-Command ssh -ErrorAction SilentlyContinue) {
    $remoting+="SSH"
}

#use the hostname command because non-windows systems won't have
#$env:computername.
[pscustomobject]@{
    Version = $ver
    Edition = $edition
    Platform = $platform
    Remoting = $Remoting
    Computername = $(hostname)
}

}

İşte çeşitli platformlarda nasıl göründüğü.

Bunu PSScriptTools modülümde paketleyebilirim.

Bu platformlar arası dünyayı benimsemeye başladınız mı? Hangi zorluklarla karşılaştınız ve bunları nasıl aştınız? Hikayelerinizi duymayı çok isterim.

İlgili makaleler