Posted in: Vývoj počítačů, Windows 10, Windows 11, Windows 8 a 8.1

Základy zabezpečení domácí sítě

Předvánoční čas bohužel je nejnáročnější na kybernetickou bezpečnost domácností. Shánění dárků, charity, posílání přání a balíků vede k tomu, že jsme méně opatrní vůči emailům vydávajícím se za přepravce, nebo známé eshopy. Pojďme se podívat na to, jak si nastavit domácí síť tak, abychom minimalizovaly dopady.

Nastavení routeru

Router (lidově většinou nějaká Wifina) je základem každé domácí sítě. S tímto zařízením stojí a padá celá domácí síť. Pojďme se podívat na to, co bychom potřebovali na daném zařízení nastavit, nebo zkontrolovat.

  1. Aktualizace – musíme mít vždy nejnovější verze firmware a bezpečnostních aktualizací
  2. Vypnutí vzdálené správy – nepovolit vzdálené nastavení routeru
  3. Bezpečné přihlašování – silné heslo a definovaná 2 konkrétní MAC adresy (2 zařízení), které smí do nastavení přistoupit
  4. Silné zabezpečení Wi-Fi – používat nejnovější standardy zabezpečení Wi-Fi sítě (co jde, aby to všechna naše zařízení uměla)
  5. Silné heslo k Wi-Fi síti
  6. Samostatná síť pro hosty – naše přítele a členy rodiny, kteří v naší domácnosti nežijí, nepouštíme do vlastní sítě
  7. Omezení zařízení, která se mohou připojit k Wi-Fi – ideální je zadat MAC adresy zařízení, která se mohou správnými údaji přihlásit
  8. Blokování portů – doporučuji nechat dostupné jako cílové porty jen: 443, 587, 993, 995, všechny ostatní porty zakázat v celé síti
  9. Směrem do internetu doporučuji nevystavovat nic
  10. Veškeré DNS servery nastavit na hodnotu: 1.1.1.2 (cloudflare secure DNS) a 185.228.169.9 (Clean browsing secure dns)

Nastavení počítače

I když bude domácí Wi-Fi dobře nastavená, cesta nekončí. I počítač se musí dále zkontrolovat a případně nastavit.

  1. DNS v OS musíme nastavit stejně, jako jsme to udělali u routeru, tedy na 1.1.1.2 a 185.228.169.9. Pro IPv6 si najděte odpovídající konfiguraci, nebo IPv6 úplně zakažte.
  2. Mějte kvalitní bezpečnostní SW, Bitdefender (BitDefender pro domácnost (it-market.cz)), Eset (Eset Antivirus | Antivirové programy ESET NOD32 | Alza.cz) nebo jiný kvalitní placený bezpečnostní SW
  3. Nastavit DNS pomocí DOH ve Windows 11: Jak nastavit DNS-over-HTTPS ve Windows 11? (instaluj.cz) adresa DNS serveru: https://security.cloudflare-dns.com/dns-query
  4. Nastavit si DNS pomocí DOH ve webový prohlížeči: DNS přes HTTPS – Spajk.cz na adresu: https://security.cloudflare-dns.com/dns-query
  5. Instalovat každý měsíc všechny aktualizace Windows
  6. Instalovat každý měsíc všechny aktualizace všech programů

Nastavení telefonů

Stejně jako v případě počítače je potřeba nastavit i všechny telefony. Největší problém notebooků a telefonů je to, že danou domácí síť opouští.

  1. Instalovat všechny dostupné aktualizace telefonu i veškerých aplikací
  2. Nainstalovat si kvalitní placený bezpečnostním SW
  3. Nastavením bezpečných DNS pro Wi-Fi i mobilní data

Práce s emailem a sociálními sítěmi

Další část bezpečnosti jsou naše uživatelské návyky. Pojďme se podívat na to, co a jak bychom měli dělat k tomu, abychom minimalizovali riziko problému.

  1. E-shop ani dopravce nás nebude kontaktovat prostřednictvím sociální sítě
  2. U všech emailů validujeme skutečného odesílatele – v Outlooku stačí najet myší na odesílatele a neklikat, po chvíli se otevře skutečná adresa odesílatele
  3. Doporučuji instalovat analyzátor hlaviček: Find the right app | Microsoft AppSource
  4. Veškeré odkazy NEOTEVÍRAT a nejdříve analyzovat – stačí zkopírovat do VirusTotal – Home, nechat analyzovat a v záložce Detail ověřit, že adresa vede do firmy, kam opravdu chceme
  5. Neznámé emaily neotevírat!

Mobilní zařízení

Mobilní zařízení opouští naší domácí síť, jde o telefony, notebooky apod. Pojďme se podívat na to, co dělat, abychom minimalizovali riziko.

  1. NEPŘIPOJOVAT SE k veřejným sítím – Když už musíme, zajistit, že po síti budeme otevírat jen jízdní řády, mapy nebo jiný zdroj obecných informací a vše ostatní nebude provádět datové přenosy ani na pozadí
  2. I mobilní data využívat obezřetně – jde o bezpečnější variantu, nežli využívání veřejné Wi-Fi, ale i tak je vhodné minimalizovat potenciálně citlivý provoz
  3. Otevírat jen důvěryhodné weby, které dobře známe
  4. Minimalizovat datový provoz
  5. NEOTEVÍRAT odkazy ze SMS, chat a dalších informačních kanálů
  6. Zásilky sledovat výhradně pomocí čísla zásilky a oficiálního webu nebo oficiální aplikace
  7. NEOTEVÍRAT přílohy a odkazy v emailech
  8. Využívat pro přístup k internetu VPN od poskytovatele našeho bezpečnostního SW

E-shopy

Před objednáním, nebo zadáním přihlašovacích údajů, je potřeba si ověřit:

  1. Že jsme skutečně na eshopu, kde chceme být (kontrola URL adresy pomocí Whois nebo virustotal a https certifikátu).
  2. Že se eshop se nenachází na seznamu rizikových od ČOI: Rizikové e-shopy – COI
  3. Ověřit si obchodníka v rejstříku dle IČO: ARES – Ekonomické subjekty (mfcr.cz)
  4. Platit zásilky na dobírku, máte jistotu, že nepřijdete o peníze, když by se jednalo o podvod
  5. Neuvádět informace o platební kartě ani číslo účtu
Posted in: Vývoj počítačů

Validace emailů v karanténě a jejich uvolnění

Dnes malinko netradičně bych se rád podělil o nějaké body, kterými se řídím, když jako správce Exchange online uvolňuji emaily z karantény. Celkově libovolné pravidlo může obsahovat chybu, takže nám v karanténě může skončit něco neprávem, ale častěji má stroj pravdu. Myslím si, že následující postup bude platiti ne jen pro administrátory Exchange online, ale i pro administrátory Exchange on-premises i dalších emailových serverů.

Pravidla jsou souhrnem mých zkušeností, kdy se snažím eliminovat chyby dané vlastními pravidly a zároveň postupovat co nejvíce bezpečně, tedy nevěřit tomu, že by měl být email uvolněn. Raději zahodím validní fakturu, nebo příkaz generálního ředitele, nežli pustit jediný Phish nebo malware.

  1. Validujeme předmět a odesílatele, zda jde o validní správu, nebo je již zde zřejmý spam, či podvod
  2. Důvodem karantény není Phish – výjimky pro adresy v bodech 3a, 3b a 3c
  3. Ověříme, zda Composite authentication obsahuje hodnotu: pass
    1. Výjimkou je: SMTP mail from address: zasilka@uschovna.cz
    1. Výjimkou je: Sender address: noreply@zasilkovna.cz
  4. Otevřeme hlavičku emailu
  5. V hlavičce najdeme: smtp.mailfrom a ověříme, že souhlasí s doménou v adrese odesilatele
  6. Zobrazíme náhled zprávy
  7. Překlikneme na kartu: Prostý text
  8. Všechny odkazy prověříme službou virustotal.com, případně ručním podáním do sandboxu vlastního antivirového řešení
  9. Pokud má email přílohy, validujeme jejich formát (koncovku) – nesmí být spustitelná, nebo ve formátu pro makra
  10. Pokud email obsahuje přílohy a splnil bod 9, stáhneme zprávu a necháme ji proskenovat antivirovým řešením a nahrajeme ke skenu do virustotal.com
  11. Pokud je soubor bezpečný, otevřeme jej ve Windows Sendbox a následně proskenujeme všechny odkazy, které obsahuje službou virustotal
  12. Pokud email splnil všechny body 1 až 11 (v případě validace bezpečnostním SW je bez nálezu), může být uvolněn příjemci
  13. Pokud je důvodem karantény transportní pravidlo, můžeme pokud známe přesný důvod, zvážit jeho editaci
Posted in: Základy PowerShellu

Podepisování kódu v PowerShellu

Dnes to bude trochu bezpečnostní téma i když jen tak na půl. Podepisování skriptů rozhodně souvisí s jejich validací a bezpečností. Pokud se někdo pokusí modifikovat podepsaný skript, podpis se stane neplatným a modifikovaný skript se nevykoná, což samo o sobě může působit bezpečně.

Problém je, že jde obcházet ExecutionPolicy, takže jde spustit i nepodepsaný skript a teoreticky i skript s nevalidním podpisem. Na druhou stranu se musí uznat, že je rozhodně bezpečnější skripty podepisovat a pro běh daný podpis vyžadovat, nežli se na to vykašlat, protože tím útočníkovi zvedáme cenu útoku.

Problémem je, kde vzít správný certifikát. Patřičný certifikát lze vystavit pomocí interní certifikační autority v podnikové síti, ale musí být správně nastaven a správně ošetřeno, komu a s jakou platností se certifikát vydává. V domácím prostředí to nelze důvěryhodně udělat.

Nyní již ke skriptu, který umí podepsat zvoleným certifikátem libovolný soubor.

Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert
$cert = Read-host -promt „Zadej Thumbprint podposového certifikátu“
$cesta = Read-Host -promt „Zadej cestu k souboru“
Set-AuthenticodeSignature -FilePath $cesta -Certificate (Get-ChildItem Cert:\CurrentUser\My -CodeSigningCert | where Thumbprint -eq  $cert) -TimestampServer http://timestamp.comodoca.com

Časový server doporučuji zaměnit za interní, ale i takto s veřejnou certifikační autoritou půjde podepsat certifikátem od autority interní.

Posted in: Windows server

Reset hesla pro obnovu AD (DSRM )

Zapomněli jste heslo pro admina k obnově AD a Váš systém běží? Nevadí, pomocí následujících příkazů v příkazové řádce spuštěné jako správce jej můžete resetovat.

ntdsutil
ntdsutil: set dsrm password
Reset DSRM Administrator Password: reset password on server null
Please type password for DS Restore Mode Administrator Account: 
Please confirm new password: 
Password has been set successfully.
Reset DSRM Administrator Password: q
ntdsutil: q

Protože výše je vypsáno vše, co je vidět v příkazové řádce, zvýraznil jsem tučně to, co skutečně jako správce zadáváte. Pokud provádíte operaci vzdáleně, bude jiné zadání v prvním řádku režimu Reset DSRM Administrator Password, viz dokumentace: How to reset the Directory Services Restore Mode administrator account password – Windows Server | Microsoft Learn

Posted in: Windows server

Report nastavení všech GPO

Nejeden admin si především při přebírání prostředí kladl otázku, jak exportovat všechna GPO nastavení do čitelné podoby, aby se nemusel probírat jednotlivými objekty. Moje doporučení je, opravdu vzít si GPO konzoli a probírat se všemi jednotlivými objekty pro jednotlivá OU samostatně, ale cesta, jak vytvořit report obsahující vše je.

Běžný HTML report, stejný jako vrací gprusult /h lze ze všech GPO objektů vytvořit následujícím PowerShell příkazem:

Get-GPOReport -All -ReportType HTML -Path "D:\pom\AllGPOs.html" 

Cestu se ve výše uvedeném příkladu změňte dle libosti. Možná lepší je strojově čitelný formát XML, který by nám dokázal lépe filtrovat a prohledávat konfiguraci ve srovnání s HTML. XML report se pak vytvoří pomocí následujícího příkazu:

Get-GPOReport -All -ReportType Xml -Path "D:\pom\AllGPOs.xml" 

Pokud jde o strojově čitelný formát JSON, tak v něm už to tak přímočaré není, ale s trochou umu v PowerShellu jej jistě vytvoříte.

Posted in: Základy PowerShellu

Základní zabezpečení PowerShellu

Zabezpečení Powershellu začíná u zabezpečení operačního systému. Powershell je opravdu dvousečnou zbraní (nejlepším hackerským nástrojem i nejlepším přítelem obránců a správců), nicméně jsou určité postupy, které reálně snižují potenciální rizika spojená s přítomností PowerShellu. Nežli si dále povíme něco o zabezpečení PowerShellu jako takového, pojďme se podávat na základy. Doporučené body pro bezpečnou práci:

  1. Nepracuji pod účtem s admin oprávněním
  2. Nezpouštím pozornost z odemčeného PC
  3. Pravidleně instaluji bezpečnostní aktualizace
  4. Nespouštím skripty z internetu, které jsem celé nezkontroloval a nerozumím jim na 100%
  5. Moduly a další SW instaluji vždy z důvěryhodných zdrojů (oficiální stažení z webu vydavatele, ověření kontrolních součtů a vše pouze legálně)
  6. Všechny úlohy spouštím s minimálním nutným oprávněním
  7. Vždy mám na systému aktivní Firewall a zabezpečení
  8. Využívám komplexní hesla
  9. Dodržuji všechny bezpečnostní doporučení výrobce OS i jednotlivých aplikací
  10. Navštěvuji jen důvěryhodné weby a nic nedávám do výjimek bezpečnostních SW
  11. PowerShellu nedávám oprávnění administrátora, pokud není nezbytné
  12. S právy admina nespouštím skripty z internetu

Dalším doporučením je, aby práce vždy probíhala v aktuální verzi PowerShellu, verze 5.1 není problémem, pokud nechybí bezpečnostní aktualizace. Starší verze PowerShellu by měly být z PC odebrány, a pokud je potřebuje nějaký SW, mělo by být jejich spouštění logováno a omezeno na daný SW např. pomocí Applocker.

Execution Policy

V PowerShellu od verze 3 najdeme tzv. Execution Policy, což je nastavení, které říká, jaké skripty je povoleno spouštět. Jde o první obrannou linii PowerShellu. Ve výchozím stavu je na Windows Serveru hodnota RemoteSigned, na systémech Windows 10 je výchozí hodnotou Restricted. Co které nastavení znamená?

  • AllSigned Vyžaduje, aby všechny skripty a konfigurační soubory byly podepsány důvěryhodným vydavatelem, včetně skriptů napsaných v místním počítači.
  • Bypass Spustí jakýkoliv skript bez varování a výzev.
  • Default Nastaví na Windows serveru RemoteSigned a na Windows Restricted
  • RemoteSigned Všechny skripty a konfigurační soubory stažené z internetu musí být podepsány důvěryhodným vydavatelem.
  • Restricted Nenačte konfigurační soubory a nespustí skripty.
  • Undefined Pro obor nejsou nastaveny žádné zásady provádění. Odebere přiřazenou zásadu provádění z oboru, který není nastaven zásadami skupiny. Pokud je zásada provádění ve všech oborech Nedefinovaná, je účinná politika Restricted
  • Unrestricted Počínaje PowerShell 6.0 se jedná o výchozí zásadu provádění pro počítače, které nejsou Windows, a nelze ji změnit. Načte všechny konfigurační soubory a spustí všechny skripty. Pokud spustíte nepodepsaný skript, který byl stažen z internetu, budete před spuštěním vyzváni k povolení.

Jak zjistím aktuálně nastavenou politiku ve svém PowerShelu? Odpovědí je příkaz: 

Get-ExecutionPolicy -List

Jak nastavím Execution policy? Odpovědí je příkaz: 

Set-ExecutionPolicy

Execution policy jde nastavovat granuárně na různé úrovně. Pokud spustíme příkaz Set-ExecutionPolicy nastavujeme pravidla pouze pro daný proces PowerShellu. Pro nastavení pravidel například pro uživatele, počítač, nebo všechny uživatele složí přepínač: -Scope

Pro nastavení pravidel máme následující oblasti:

  • MachinePolicy Pomocí zásad skupiny aplikuje nastavení na všechny uživatele daného PC.
  • UserPolicy Nastavení platí lokálně pro daného uživatele.
  • Process Nastavení platí pouze pro dané okno PowerShellu.
  • CurrentUser Nastavení platí pouze pro daného uživatele (může s ním cestovat)
  • LocalMachine Mění výchozí nastavení pro všechny uživatele na daném PC.

Pokud nechcete, aby se v PowerShellu objevila výzva pro potvrzení nastavení použijte přepínač: -Force Pokud chci nastavit, že v aktuálně spuštěné instanci PowerShellu spustím podepsaný skript, využiji příklad níže.

Set-ExecutionPolicy AllSigned -Scope Process -Force

Obcházení Execution Policy

Obejít Execution Policy není nic těžkého a nejsou na to zapotřebí žádná oprávnění, člověk může být klidně uživatelem typu host. Níže si popíšeme 3 nejběžnější způsoby obcházení:

  1. Příkaz Set-ExecutionPolicy, kterým nastavím policy na požadovanou hodnotu (nelze provést uvnitř skriptu)
  2. V Průzkumníku kliknout na soubor skriptu pravým tlačítkem myši a zvolit „Run with PowerShell“
  3. Spustit si PowerShell ISE, skript v něm otevřít, celý označit pomocí CTRL+A a zvolit RUN SELECTION

Jak je vidět, tak Execution policy jsou pouze nástrojem, který má zabránit chybám z nepozornosti a nechtěnému spuštění kódu, nikoliv reálnou bezpečnostní technologií.

Constrained Language mode

Jak již bylo zmíněno PowerShell stojí na .NET Frameworku a z toho plyne, že umí volat .NET příkazy. Tato zkutečnost je podstatnou, protože dokáže zjednodušit některé úkony správy, ale zároveň je volání .NET příkazů alfou a omegou většiny škodlivých kódů v PowerShellu. Pro hackery je často samotný PowerShell skvělý pomocník, ale protože je určen pro jiné odvětví, je zároveň limitujícím faktorem útoku. Právě technologie Language mode, má za úkol omezit volání .NET příkazů, čímž eliminuje spouštění řady generických skriptů, které hackeři užívají.

Nastavení

Obrana proti školdivému kódu v PowerShellu je poměrně jednoduchá, stačí užívat Constrained Language mode, který značně omezí možnosti, které útočník má. Toto nastavení umožňuje zakázat volání .NET příkazů, a nastavit i další omezení omezení na vlastní PowerShell.

Zjištění jazykového režimu provedeme příkazem:

$ExecutionContext.SessionState.LanguageMode

Základní nastavení do omezeného režimu provedeme příkazem:

$ExecutionContext.SessionState.LanguageMode = "ConstrainedLanguage"

Pokud toto nastavení provádíme příkazy, pak není možné jej z omezeného režimu vrátit zpět na plný režim v rámci stejného okna PowerShellu. Stejně jako u Execution policy zde nejsou zapotřebí žádná správcovská práva. Krom omezeného jazykového režimu existují i další, pojďme se tedy podívat na úplný výčet.

  • Full Language – Režim jazyka FullLanguage umožňuje všechny jazykové prvky v relaci. FullLanguage je výchozí jazykový režim
  • Restricted Language – V jazykovém režimu RestrictedLanguage mohou uživatelé používat příkazy (rutiny, funkce, příkazy CIM a pracovní postupy), ale není dovoleno používat bloky skriptů. Jsou omezeny i proměnné a operátory. Bližší informace: Get-Help about_Language_Modes
  • No Language – V jazykovém režimu NoLanguage mohou uživatelé spouštět příkazy, ale nemohou používat žádné jazykové prvky.
  • Constrained Language – povoluje všechny prvky jazyka PowerShell, ale neumožňuje volání .NET a vybraných systémových rutin.

Na rozdíl od Execution policy lze z pozice správce vynutit nastavení na úrovni počítače, jež pevně stavuje jazykový režim a uživatelé jej nemohou změnit. Toto pevné nastavení se provádí pomocí systémové proměnné __PSLockDownPolicy, což lze udělat příkazem .NET:

[Environment]::SetEnvironmentVariable('__PSLockdownPolicy', '4', 'Machine')

Další alternativou je využití systémového GIU:

Poslední možností, pro správce systémů tou nejlepší, je využití Group Policy, resp. Local Policy.

Blokované soubory z internetu

Soubory konfigurace, skriptů a nápovědy jsou ve výchozím stavu po stažení z internetu blokovány a PowerShell bude explicitně vyžadovat potvrzení, že má takový soubor opravdu spustit i když politiky spuštění povolují. Každý soubor, který je stažen z internetu má o této skutečnosti informující příznak v NTFS (alternativní datový proud Zone.Identifier, který má hodnotu „3“), proto PowerShell zná jeho původ. Tuto informaci neobsahují jen soubory pro PowerShell, ale také ostatní stažené soubory, jako jsou Office, PDF, MSI, EXE apod. Výjimku tvoří soubory stažené v rámci modulu příkazem Install-Module z PowerShell galerie nebo jiného důvěryhodného repozitáře, zde si je PowerShell v rámci procesu instalace odblokuje.

Pro odblokování souborů slouží příkaz Unblock-File, který má povinný parametr -Path, nicméně dokáže pracovat i s pozičním zadáním hodnoty parametru, tudíž bez uvedení jména parametru, jen zadáním jeho hodnoty.

Následující příkaz odblokuje všechny soubory umístěné v adresáři C:\Users\Public\Dokuments:

Get-ChildItem C:\Users\Public\Dokuments\*.* | Unblock-File

Výše zmíněný příkaz odblokuje všechny soubory, tedy i soubory Office, pdf či instalátory. Jeho užití tedy může leckdy ušetřit i klikání na Povolit úpravy v sadě Office na souborech stažených z Moodlu nebo SISu. Více o tomto příkazu v jeho dokumentaci.

Posted in: Základy PowerShellu

Exporty

PowerShell, respektive jeho moduly, umí opravdu rozličné množství exportů a výpisů, ale zde mi jde o export výstupu libovolného příkazu, nikoliv například certifikátu. Nejjednodušší možností je přesměrování konzole do souboru, což se provede příkazem out-file. Například seznam běžících procesů do souboru procesy.txt na ploše uložím takto:

get-process | Out-File $env:USERPROFILE\Desktop\procesy.txt

Lepší je využít export o nějakého dále zpracovatelného formátu, jako je CSV nebo XML.

Export do CSV

K exportu výstupu do CSV slouží příkaz Export-CSV, modifikací příkladu výše pro výstupní formát CSV je následující příkaz:

get-process | Export-Csv $env:USERPROFILE\Desktop\procesy.csv -Encoding UTF8 -Delimiter ";" -NoTypeInformation

Pojďme si to rozebrat. CSV jako výchozí oddělovač využívá čárku, ale v českém jazykovém prostředí se běžně využívá středník, aby se správně uložila desetinná čísla. Parametr Delimiter umí nastavit, právě znak, který je oddělovačem, pokud parametr nevyužijeme, bude SCV využívat čárku jako oddělovač. Dalším parametrem je Encoding, který udává, jaké kódování se užije, bez uvedení přebírá výchozí kódování OS, doporučuji využívat UFT-8, protože je dobře přenosné mezi aplikacemi i systémy. Posledním je důležitý parametr NoTypeInformation, který do výstupu nezapíše na první řádek informace o typu objektu (TypeName). Pokud tento parametr zapomeneme, na první řádek se zapíše typ objektu, v našem příkladu by to bylo: System.Diagnostics.Process Tento řádek pak ztěžuje zpracování souboru dále např. v Excelu, kdy musí být při importu odebrán. Kde naopak je dobré jej mít, je následné zpracování pomocí PowerShellu.

Export do XML

Zde je situace dost podobná jako v případě CSV. Náš příklad s procesy by vypadal následovně:

Get-Process | Export-Clixml -Path $env:USERPROFILE\Desktop\procesy.xml -Encoding Unicode

Export do JSON

Dnes velmi populární datový formát JSON má rovněž v PowerShellu podporu. Bohužel zde není přímý příkaz exportu, ale postup je takový, že výstup se zkonvertuje pomocí příkazu ConvertTo-Json do objektu, který je vnitřně JSON a ten se uloží do souboru pomocí Out-File. Náš příklad s procesy by tedy vypadal následovně:

Get-Process | ConvertTo-Json | Out-File -FilePath $env:USERPROFILE\Desktop\procesy.json

Konverze do HTLM

Jedním z dobrý „exportů“ větších tabulek a dlouhých výpisů může být HTML, které je dobře čitelné po zobrazení v prohlížeči a rovněž prezentovatelné další lidem. I zde využíváme, podobně jako u JSON, konverzi a následné uložení do souboru. Pokud bychom využili samotné ConvertTo-HTML, dostaneme výstup, který je vidět na následujícím obrázku.

Náš příklad by pro uložení v podobě tabulky webové stránky vypadal následovně:

Get-Process | ConvertTo-Html | Out-File $env:USERPROFILE\Desktop\procesy.html

Možností pro ConvertTo je ještě o něco více a využívají se běžně uvnitř samotného kódu skriptů, ale již ne jako export v rozšířeném formátu. O těchto možnostech zase někdy jindy.

Posted in: Základy PowerShellu

Runas v PowerShellu

Určitě jste se octli v situaci, kdy je potřeba spustit něco jako jiný uživatel. V GUI je to jednoduché, stačí kontextové menu, ale má to háček, na PC se načte v minimální podobě profil daného uživatele, jak na to bez toho? Řešením je PowerShell nebo cmd, kdy v CMD místo proměnné zadáte username přímo do příkazu runas.

$ucet = Read-Host -promt "Zadej login"
Runas /noprofile /user:$ucet "powershell.exe"

Z PowerShellu pak už pod daným uživatelem spustíte cokoliv. Když bych chtěl napsat runas korektně PowerShellově, tak by to vypadalo takto:

Start-Process powershell.exe -Credential (Get-Credential) 

Nevýhodou zápisu výše je, že se chová jako GUI, tedy dojde k naštení minimální potřebné části profilu uživatele.

Posted in: Windows 10, Windows 11, Windows 8 a 8.1

Úprava času pro zadání hesla do Windows

Jak jistě víte, doba, za kterou musíte stihnout zadat přihlašovací údaje do systému Windows je omezena, takže se vám opět ukáže přihlašovací obrazovka, i když jste velmi pomalými úhozy nepřestali psát a můžete začít znovu. Výchozí nastavení je vyladěno velmi dobře, proto většina lidí tento stav nikdy nezažije, pokud nepřeruší úkon přihlašování se.

Problém jsou lidé, kteří mají různé tělesné postižení, jež jim ztěžuje práci s počítačem a např. psaní na klávesnici je pro ně opravdu velmi náročnou a hodně pomalou činností. Pro tyto lidi je zde primárně Windows Hello, které jim umožní přihlásit se obličejem, otiskem prstu či krátkým pinem, ale co dělat, když z nějakého důvodu není technologie k dispozici?

Pomocí registrového klíče HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI
je možné nastavit v milisekundách dobu pro zadání hesla. Konkrétně pomocí hodnoty IdleTimeOut typu DWORD, kam se zadává čas v milisekundách, po který má být možné vyplňovat přihlašovací údaje.

Back to Top