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

Valikeksamid MCSA tiitlites

Hiljuti kuulutas Microsoft välja, et kahe MCSA tiitli eksamite komplekti on tekkinud valikuvariandid.  Meenuvad vanad head ajad enne aastat 2005.

MCSA: Windows Server 2012 jaoks on kolmanda eksami (70-412) asemel võimalik teha ka teisi eksameid:

MCSA: SQL Server 2012 jaoks on kolmanda eksami (70-463) asemel võimalik teha:

Nii et kui keegi tahab saavutada mõlemat ülaltoodud tiitlit, siis nüüdsest saab 6 eksami asemel hakkama ka vaid 4 eksamiga.  Või siis saavad MCSA-d näidata oma pühendumust lisateemadele.

Kuna kõik MCSE taseme tiitlid eeldavad mõne MCSA taseme sooritamist, siis mõjutavad valikud ka vastavaid MCSE tiitlite eksamivalikuid.

Powershell Remoting ja TrustedHosts

Powershelliga teises masinas toimetamine on süsteemiülema jaoks väga mugav.  Ent ilma erilise vaevata töötab see vaid domeeni keskkonnas.  Niipea, kui masin(ad) ei kuulu domeeni või kuuluvad domeenidesse, mis teineteist ei usalda, ei ole see enam nii lihtne.

Põhjus peitub selles, et kaugühenduse loomisel kontrollitakse nii kasutajat (et see tohib üldse kaugsessiooni luua) kui ka masinat (ühenduse looja kontrollib, et sihtmasin on ikka õige).  Ja kui masinad saavad autentimiseks oma domeenikontosid kasutada, ongi asi korras.

Kui aga domeenikontod ei sobi, siis saab asja siiski tööle.  Selleks tuleb ühendust loovas masinas kuidagi korraldada sihtmasina usaldusväärsus.  Üks võimalus oleks kasutada serte, aga see muudaks asja enamasti veelgi keerulisemaks.  Natuke lihtsam oleks sihtmasina lisamine usaldusväärsete masinate nimekirja.  Sinna nimekirja lisamine tähendab sisuliselt seda, et sihtmasina identiteeti enam ei kontrollita.

Nimetatud tegevust saab teostada ainult süsteemiülema õigustes kasutaja.  Ning teha saab seda näiteks järgnevalt:

#Requires -RunAsAdministrator
#Requires -Version 2

$NewList = "uusmasin, 192.168.2.3"

# salvestame praeguse listi
$OldHosts = (Get-Item WSMan:\localhost\Client\TrustedHosts).Value

# salvestame listi
Set-Item WSMan:\localhost\Client\TrustedHosts -Value $NewList -Concatenate

Viimases reas lisatud käsurea parameeter korraldab selle, et uus väärtus lisatakse olemasolevale, mitte ei kirjutata üle. Tänud Kaidole, kes sellele parameetrile peale sattus 🙂

Nüüd tasuks sihtmasinas üle vaadata, kas ja kes kaugsessioonide kaudu üldse sisse saavad.  Vaikimisi saavad kaugsessioone kasutada vaid süsteemiülemad.  Alates Windows 8/Server 2012 keskkonnast on ligipääs lubatud veel lokaalse grupi Remote Management Users liikmetele.  Varasemate OS-versioonide puhul sellist gruppi pole ning seetõttu tuleks ligipääsuõigusi täiendada.  Lihtsaim viis oleks vastava dialoogiakna avamine:

#Requires -RunAsAdministrator
#Requires -Version 2
Set-PSSessionConfiguration Microsoft.PowerShell –ShowSecurityDescriptorUI

#Requires -Version 3
Set-PSSessionConfiguration microsoft.powershell.workflow –ShowSecurityDescriptorUI

Kui sihtmasin on Windows Server 2012 või kui sihtvõrgus on selline OS kättesaadav, siis saab kaugsessiooni häälestust mõnevõrra lihtsustada.  Nimelt on Server 2012-s olemas komponent Windows PowerShell Web Access (PSWA).  Ja see on sisuliselt veebisait, mis vahendab Powershelli käsurida veebilehitsejasse.  Jääb muidugi veel probleem, et Server 2012 (PSWA) masinast tuleb edasi sihtmasinasse saada ikkagi WinRM sessiooni kaudu ning kogu ülaltoodud jutt võib olla oluline.

Kasulik on jälgida teiste inimeste blogisid.  Ben Armstrong näitab oma blogis, kuidas muuta Hyper-V kliendirakenduses ekraaniresolutsiooni. Siiani olen arvanud, et võimalik on ainult resolutsioon suhtega 4:3, ent tuleb välja, et  Windows 8/Server 2102 virtuaalmasina puhul saab ka muud.  Ent Windows 7/Server 2008 R2 keelduvad tunnistamast, et mõni muu resolutsiooni suhe peale 4:3 olemas on, kui nad virtuaalmasinana töötavad.  Seda sõltumata Hyper-V komponentide versioonist.

Server 2012 R2 ja Windows 8.1 puhul on asi aga veelgi parem.  Nimelt kasutab Virutal Machine Connection klient virtuaalmasinaga ühenduse saamiseks RDP protokolli, mistõttu saab seal valida suvalist resolutsiooni, võtta kaasa USB seadmeid ja teha kõike muud, mida RDP lubab.  Ja seda ka virtuaalmasinaga ühendumisel,  millel omal võrku polegi.

Õnnetuseks on (vähemalt esialgu) seda võimalik teha vaid juhul, kui virtuaalmasinas on samuti Windows 8.1 või Server 2012 R2.

Microsofti uued tooted ja sertifitseerimine

Alles see oli (möödunud aastal), kui tulid välja System Center 2012, Windows 8 ja Windows Server 2012.  Ja juba kuulutati välja Windows 8.1, Server 2012 R2 ja System Center 2012 R2.  Spetsialistid, kes tahavad tõestada oma oskusi, pole veel eelmiste toodete eksameidki ära jõudnud teha.  Et mis nüüd saab?

Õnneks pole asi väga hull.  Kuigi toodete versioonid vahetuvad, siis juba praegu olemasolevad eksamid kehtivad edasi ka uute toodete kohta.  Aja jooksul (alates jaanuarist 2014) tuleb eksamitesse uute toodete teemasid.  Samas, kui eksamid kohe ära teha, siis kehtivad need edasi ning uue sisu lisandumisel eksameid kordama ei pea.

Seega tasub eksamitele minna pigem kohe, kui ära oodata uute tooteversioonide ning eksamiküsimuste valmimine.  Pealegi ei teavita Microsoft tavaliselt eksamiküsimuste vahetumist või eksamil aluseks oleva toote versiooni muutumist.

Kes tahab ise uurida, võib lugeda Microsoft Learning tiimi blogi artiklit või siis juba eksamite kirjeldusi.

Windows Server 2012 on valmis

1. augustil anti teada, et Windows Server 2012 on nüüd valmis.  See tähendab, et arendamine on lõppenud ja nüüd jääb veel oodata, kuni ise saab alla laadima hakata.  Õnneks pole enam palju oodata: 4. septembril toimub avapauk.

Seoses valmissaamisega võiks veelkord meelde tuletada, et Server 2012 eksamid on ka juba saadaval.  Esialgu küll beta kujul, ent sellest hoolimata kõigile kättesaadavad.  Toon ära ka eksamite nimekirja:

MCSA: Windows Server 2012

MCSE: Server Infrastructure

MCSE: Desktop Infrastructure

Juba vähem kui aasta pärast (täpsemalt: 31.07.2013) aeguvad Server 2008 ja Server 2003 tiitlid/eksamid, nii et ega siin kaua aega ei ole …