PowerShell: Jak získat informace o místním času & výhody PowerShellu
Dnes jsem potřeboval vyřešit ve skriptu, jak zjistit v systému aktuálně nastavenou časovou zónu. V PowerShellu ve Windows 10 je to snadné, ale co třeba Windows 7?
Windows 10, resp. novější PowerShell verze 5 a novější umí s pomocí commandletu
Get-TimeZone
získat informace o časové zóně, výstup může vypadat v českých systémech například takto:
Id : Central Europe Standard Time
DisplayName : (UTC+01:00) Praha, Bratislava, Budapešť, Bělehrad, Lublaň
StandardName : Střední Evropa (běžný čas)
DaylightName : Střední Evropa (letní čas)
BaseUtcOffset : 01:00:00
SupportsDaylightSavingTime : True
Drobný problém na této kráse je, že tento commandlet je součástí PowerShellu v systémech Windows 10 a Windows Server 2016. Co dělat, když potřebujete tuto informaci v systémech Windows 7 a Windows Server 2008?
Máte několik možností, například skrze registry, lze zjistit některé informace. Nebo s pomocí externí utilitky. No jo, ale to je celkem složité, nejde to jednodušeji? Ano, lze využít třídu .NET Framework TimeZoneInfo a z ní vyčíst potřebné informace
[TimeZoneInfo]::Local
Výhody PowerShellu
Na tomto příkladu se mi strašně líbí, jak se vše díky .NET Frameworku na němž je PowerShell založen strašně zjednodušuje. Díky tomu máte několik možností, jak získat informace, nebo provést nějakou akci a nejste nuceni používat jiné technologie, nebo dokonce externí nástroje.
PowerShell dokonce umí spouštět přímo kód napsaný v C# (C Sharp).
Proto také existuje pro PowerShell takové množství rozšíření, protože PowerShell je vlastně otevřené řešení, jedná se vlastně o skriptovací prostředí s podporou „pluginů“, podobně jako pro Total
Commander existují pluginy.