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.