Powershelli tulevikust

Eelmine kord rääkisime sellest, kuidas tuvastada keskkonda, milles skript jookseb.  Sealt jäi välja üks pisiasi: kuidas tuvastada Nano Server või Server Core keskkonda.

Server Core keskkonnaga on lihtne, seal on meil tavaline Powerhsell keskkond ja OS funktsioonidega kaasatulevad haldusmoodulid.  Vajadusel saab seda kontrollida:

Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Server\ServerLevels\' -Name ServerCore

if (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Server\ServerLevels\' -Name ServerCore) {
  "Server Core"
} elseif (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Server\ServerLevels\' -Name NanoServer) {
  "Nano Server"
}

Nano Server keskkonnaga on natuke raskem.  Nimelt on seal ruumi kokkuhoiuks OS funktsionaalsust vähendatud, sealhulgas .Net Framework on seal .Net Core, mitte täielik .Net Framework.  Ja kuna Powershell sõltub .Net keskkonnast, siis on ka Powershelli funktsionaalsus vähendatud.  Lisaks on puudu terve hunnik haldusmooduleid, mis tavaliselt olemas on.  Vähendatud funktsionaalsusega keskkond on tuntud kui Powershell Core edition:

$PSVersionTable.PSEdition

if ($PSVersionTable.PSEdition -like 'core') {
  Write-Verbose 'Powershell Core'
} else {
  Write-Verbose 'Full Powershell'
}

Skriptile võib lisada kontrolli, et vältida skripti käivitumist vales keskkonnas:

#Requires -Version 5.1
#Requires -PSEdition Core

Samuti on võimalik mooduli lisamisel/kasutamisel kontrollida, et see toetab keskkonda, kus teda kavatsetakse kasutada:

Find-Module -Tag PSEdition_Core

Get-Module -ListAvailable |
  Where-Object CompatiblePSEditions -Contains "Core"

Get-Module -ListAvailable | Where-Object {$_.CompatiblePSEditions}

Esialgu on moodulid ilma vajaliku infota manifestis, ent tulevikus peaksid moodulid seda infot sisaldama.  Samas on Powershell Gallery moodulid juba sildistatud.

Vaadates tulevikku on oodata järgmisi muudatusi:

  • Windows Powershell 5.1 on viimane omast klassist ja seda edasi ei arendata.
    • Kõik Windows Powershelliga seotud probleemid/ettepanekud tuleb raporteerida UserVoice saidis.  Vigade parandusi väidetavasti veel tehakse.
  • Powershell v6 on täielikult Powershell Core.  Seda ei panda Windowsiga kaasa, kuna seda arendatakse korraga mitmele platvormile: Windows, Linux, macOS.
  • kogu tulevane arendus saab toimuma Powershell Core peal.
    • kõik Powershell Core-ga seotud probeemid/ettepanekud tuleb esitada Github saidis.
  • Powershell Core ei sisalda enam jörgmiseid asju:
    • Powershell ISE liides.  Arendustiim pakub alternatiivina kasutada Visual Studio Code redaktorit, mille Powershelli plugin on suht tasemel.
    • Töövoogude (workflow) mootor.
  • Desired State Configuration saab samuti ümber kirjutatud .Net Core baasil.
  • Powershell 2.0 režiimist on kavas lahti saada.

Powershell 6 on juba saadaval kui release candidate ning plaanis on sellega valmis saada 10 jaanuaril 2018.

Powershell Core kasutamisel on vaja tuvastada ka OS, mille peal joostakse.  Kuna CimCmdlets moodul pole veel Powershell Core osa, kui OS ei ole Windows, siis tuleb OS tuvastada teist moodi:

$PSVersionTable.PSEdition
$PSVersionTable.OS

if (($PSVersionTable.PSEdition -like "core") -and $PSVersionTable.OS) {
  "Powershell core, OS: {0}" -f $PSVersionTable.OS
} else {
  "Windows Powershell"
}

Praegu veel ei ole, aga tulevikus peaks moodulite manifesti ilmuma ka toetatud OS-i näitamine.

Kokkuvõtteks võib öelda, et juba praegu tasub vähehaaval oma skripte/mooduleid üle vaadata ning lisada vajalikud kontrollid, et vales keskkonnas mitte tundmatuid veateateid saada.

Advertisements

Core Configurator 2.0

Server 2008 võimaldab paigaldust ilma suurema osa graafilise liidese koodita.  Seda kutsutakse Server Core’iks.  See, et kettaruumi kulub 4 korda vähem, on tore, ent see et kogu häälestus tuleb nüüd ise käsurealt ära teha, nii tore enam ei ole.  Siin tuleb appi Core Configurator.  Server 2008 jaoks tuleb kasutada varasemat versiooni, mis on sisuliselt hulk kasutajaliidesega (tekstirežiimis küsimused-vastused, mitte mingi menüüpõhine asi).

Server 2008 R2 jaoks on Core Configurator’il juba palju ilusam liides.  Hunnik Powershelli skripte näitavad, et nad saavad ilusti graafilise kasutajaliidese jooksutamisega hakkama.  Ja häälestaja elu on selle võrra kergem, et ei pea enam Server Core häälestamisel palju aega raiskama.