Seriál Windows PowerShell: PowerShell v5 – pokračování (část 57.)

V minulém dílejsme se podívali na některé z novinek PowerShellu v5. Dnes povídání dokončíme a ukážeme si jednu novinku z oblasti Windows obecně.

PSScriptAnalyzer

Ano, pokud jste pozorní, pamatujete si, že o této části jsem již psal. Od doby napsání článku došlo ovšem ke změně. PSScriptAnalyzer byl přesunut jako samostatný projekt na GitHub (https://github.com/PowerShell/PSScriptAnalyzer). Zde si jej můžete stáhnout a naimportovat jako modul. Zároveň s tím bude v dalších verzích PowerShellu tento modul vyjmut jako standardní součást.

Desired State Configuration

V DSC došlo k asi největšímu počtu změn. K nejzajímavějším bych řadil především:

  • Vytváření nových zdrojů (resources) pomocí tříd. Použití tříd (classes) v PowerShellu je také jednou z novinek v PowerShellu v5 a umožňuje více programátorsky laděným správcům využívat možnosti objektově orientovaného programování přímo v PowerShellu.
  • Nyní můžete v ISE využít rozšířenou podporu pro práci s DSC (např. zvýrazňování syntaxe, doplňování, …)
  • Nové zdroje WaitForAll, WaitForSome, WaitForAny umožňují lépe sledovat závislosti mezi jednotlivými kroky. V následujícím obrázku vidíte např. v DSC jazyce ukázané použití WaitForAll při přidávání počítače do domény
    image
  • Get-DscConfigurationStatus umožňuje zjišťovat aktuální stav dané konfigurace v jednotlivých nodech.
  • Compare-DscConfiguration umí porovnat konfiguraci oproti jinému stavu, což přináší výhody při tvorbě a sledování DSC skriptů.

To byl výčet toho nejzajímavějšího z DSC. Opět jedno z témat pro budoucí články je podrobnější vhled do DSC a využití všech novinek.

Cryptographic Message Syntax

CMS přináší možnost šifrování textu přímov PowerShellu. Pokud máte certifikát typu “Document Encryption”, můžete v PowerShellu použít CMS cmdlety pro šifrování např. krátkého textu.

image

Nano Server

Před pár dny představil Microsoft nový operační systém, který je navržen pro běh v cloudu. Jmenuje se Nano Server a jedná se o minimalistickou (nano) verzi Windows Serveru. Pokud Server Core byl krokem k OS bez GUI, jde Nano Server ještě dál. Pokud se podíváme na velikost WMI souboru, uvidíme překvapivou velikost (malost?).

image

Mělo by se jednat o OS, který bude mít rapidně menší množství updatů, rychlejší restarty a měl by být zaměřen převážně na dva scénáře: podpora cloudových aplikací a tvorba cloud infrastruktury. Nebudu zde ale zabíhat do marketingových čísel, informace si můžete najít sami. Co je zajímavé, je možnost administrace pomocí vzdáleného PowerShellu a WMI.

Nano Server můžete aktuálně stáhnout jako součást Windows 10 Server Technical Preview 2 (bohužel bylo potřeba opravdu stáhnout asi 4GB ISO, abych mohl získat 200MB) a dle návodu na stránkách Microsoftu si jej nainstalovat například na Hyper-V (viz aktuální strip Mistra Skriptíka).

Po spuštění a připojení se na server, se můžete podívat na aktuální verzi PowerShellu.

[10.100.10.100]: PS C:\> $PSVersionTable
Name Value
---- -----
PSRemotingProtocolVersion 2.3
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.34011
WSManStackVersion 3.0
PSVersion 5.0.10074.0
BuildVersion 10.0.10074.0 

PowerShell je již ve verzi 5. Jak jsem již psal výše, administrace probíhá přes WMI (resp. CIM cmdlety), proto neexistuje například cmdlet Ge-Service. Potřebné informace můžete ale samozřejmě získat CIM.

[10.100.10.100]: PS C:\> Get-CimInstance Win32_Service

ProcessId Name StartMode State Status ExitCode
--------- ---- --------- ----- ------ --------
1328 BFE Auto Running OK 0
0 BITS Manual Stopped OK 1077
0 ClusSvc Disabled Stopped OK 1077
1204 CryptSvc Auto Running OK 0
596 DcomLaunch Auto Running OK 0
0 defragsvc Manual Stopped OK 1077
596 DeviceInstall Manual Running OK 0
1104 Dhcp Auto Running OK 0
1452 DiagTrack Auto Running OK 0
1204 Dnscache Auto Running OK 0
1104 EventLog Auto Running OK 0
0 IKEEXT Manual Stopped OK 1077
0 KeyIso Manual Stopped OK 1077
708 LanmanServer Auto Running OK 0
1204 LanmanWorkstation Auto Running OK 0
1104 lmhosts Manual Running OK 0
1328 MpsSvc Auto Running OK 0
0 Netlogon Manual Stopped OK 1077
0 NetSetupSvc Manual Stopped OK 0
1172 nsi Auto Running OK 0
596 Power Auto Running OK 0
708 ProfSvc Auto Running OK 0
0 RemoteRegistry Manual Stopped OK 1077
644 RpcEptMapper Auto Running OK 0
644 RpcSs Auto Running OK 0
0 sacsvr Manual Stopped OK 1077
464 SamSs Auto Running OK 0
708 Schedule Auto Running OK 0
0 seclogon Manual Stopped OK 1077
0 SmbWitness Manual Stopped OK 1077
0 smphost Manual Stopped OK 1077
0 swprv Manual Stopped OK 1077
596 SystemEventsBroker Auto Running OK 0
0 TieringEngineService Manual Stopped OK 1077
0 TimeBroker Manual Stopped OK 1077
0 TrustedInstaller Manual Stopped OK 0
0 VaultSvc Manual Stopped OK 1077
0 vmicguestinterface Manual Stopped OK 1077
860 vmicheartbeat Manual Running OK 0
884 vmicshutdown Manual Running OK 0
1104 vmictimesync Manual Running OK 0
0 vmicvmsession Manual Stopped OK 1077
0 vmms Auto Stopped OK 87
0 VSS Manual Stopped OK 1077
1172 W32Time Auto Running OK 0
0 WerSvc Manual Stopped OK 0
1464 WinDefend Auto Running OK 0
1172 WinHttpAutoProxySvc Manual Running OK 0
708 winmgmt Auto Running OK 0
1204 WinRM Auto Running OK 0
0 wmiApSrv Manual Stopped OK 1077
0 wuauserv Manual Stopped OK 2147942450
0 wudfsvc Manual Stopped OK 1077

To samé platí pro Get-CimInstance Win32_Process.

Pokud se podíváme na počet core cmdletů, dostaneme číslo 184, což je o několik desítek cmdletů méně než v „normální“ verzi OS Windows. Seznam dostupných cmdletů naleznete v následující tabulce:

Add-Content

Get-ChildItem

Join-Path

Rename-ItemProperty

Add-History

Get-Command

Measure-Command

Resolve-Path

Add-Member

Get-Content

Measure-Object

Resume-Job

Clear-Content

Get-Credential

Move-Item

Select-Object

Clear-History

Get-Culture

Move-ItemProperty

Select-String

Clear-Item

Get-Date

New-Alias

Set-Alias

Clear-ItemProperty

Get-Event

New-Event

Set-AuthenticodeSignature

Clear-Variable

Get-EventSubscriber

New-Item

Set-Content

Compare-Object

Get-ExecutionPolicy

New-ItemProperty

Set-Date

Connect-PSSession

Get-FormatData

New-Module

Set-ExecutionPolicy

Connect-WSMan

Get-Help

New-ModuleManifest

Set-Item

ConvertFrom-Csv

Get-History

New-Object

Set-ItemProperty

ConvertFrom-StringData

Get-Host

New-PSDrive

Set-Location

Convert-Path

Get-Item

New-PSSession

Set-PSBreakpoint

ConvertTo-Csv

Get-ItemProperty

New-PSSessionConfigurationFile

Set-PSDebug

Copy-Item

Get-ItemPropertyValue

New-PSSessionOption

Set-PSSessionConfiguration

Copy-ItemProperty

Get-Job

New-PSTransportOption

Set-StrictMode

Debug-Job

Get-Location

New-TimeSpan

Set-Variable

Debug-Runspace

Get-Member

New-Variable

Set-WSManInstance

Disable-PSBreakpoint

Get-Module

New-WSManInstance

Set-WSManQuickConfig

Disable-PSRemoting

Get-Process

New-WSManSessionOption

Sort-Object

Disable-PSSessionConfiguration

Get-PSBreakpoint

Out-Default

Split-Path

Disable-RunspaceDebug

Get-PSCallStack

Out-File

Start-Job

Disable-WSManCredSSP

Get-PSDrive

Out-Host

Start-Sleep

Disconnect-PSSession

Get-PSHostProcessInfo

Out-Null

Stop-Job

Disconnect-WSMan

Get-PSProvider

Out-String

Suspend-Job

Enable-PSBreakpoint

Get-PSSession

Pop-Location

Tee-Object

Enable-PSRemoting

Get-PSSessionConfiguration

Push-Location

Test-ModuleManifest

Enable-PSSessionConfiguration

Get-Random

Read-Host

Test-Path

Enable-RunspaceDebug

Get-Runspace

Receive-Job

Test-PSSessionConfigurationFile

Enable-WSManCredSSP

Get-RunspaceDebug

Receive-PSSession

Test-WSMan

Enter-PSHostProcess

Get-UICulture

Register-ArgumentCompleter

Unblock-File

Enter-PSSession

Get-Unique

Register-EngineEvent

Unregister-Event

Exit-PSHostProcess

Get-Variable

Register-ObjectEvent

Unregister-PSSessionConfiguration

Exit-PSSession

Get-WSManCredSSP

Register-PSSessionConfiguration

Wait-Debugger

Export-Alias

Get-WSManInstance

Remove-Event

Wait-Event

Export-Csv

Group-Object

Remove-Item

Wait-Job

Export-FormatData

Import-Alias

Remove-ItemProperty

Wait-Process

Export-ModuleMember

Import-Csv

Remove-Job

Where-Object

ForEach-Object

Import-LocalizedData

Remove-Module

Write-Debug

Format-Custom

Import-Module

Remove-PSBreakpoint

Write-Error

Format-List

Invoke-Command

Remove-PSDrive

Write-Host

Format-Table

Invoke-Expression

Remove-PSSession

Write-Output

Format-Wide

Invoke-History

Remove-Variable

Write-Progress

Get-Alias

Invoke-Item

Remove-WSManInstance

Write-Verbose

Get-AuthenticodeSignature

Invoke-WSManAction

Rename-Item

Write-Warning

Nano Server je rozhodně jedno z témat, kterému se budeme někdy v budoucnu z pohledu PowerShellu věnovat. Jsem velmi zvědav na to, jak rychle se budou objevovat updaty a novinky pro tuto verzi OS.

David Moravec, MVP
Mainstream Technologies