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

Jak vytvořit kopii disku bez koše a stínových kopií?

Situaci, kdy máte starý disk, který je už plný nebo nefunguje, a potřebuje z něj všechna data zkopírovat na nový, už zažil asi každý. Většina uživatelů zvolí možnost vybrat vše a kopírovat pomocí průzkumníka souborů, ale nabídnu alternativní cestu příkazem robocopy.

Pokud budu chtít na nový disk zapsat vše, včetně obsahu koše, stínových kopií a systémových souborů se zachováním oprávnění, bude příkaz vypadat takto:

Robocopy.exe H:\ J:\ /MIR /COPYALL

Pokud budeme chtít vynechat koš a složku System volume information, tak využijeme příkazu:

Robocopy.exe H:\ J:\ /MIR /COPYALL /XJD /XD 'H:\$RECYCLE.BIN'

Výše uvedený příklad nebude zahrnovat spojovací body pro adresáře díky užití přepínače /XJD.

Je důležité si uvědomit, že se nejedná o klon diskového oddílu nebo disku, ale pouze o souborový duplikát diskového oddílu se zachováním ACL pro jednotlivé složky a soubory.

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

Kontrola konektivity pomocí PowerShellu

Všichni ověřujeme možnost přístupu někam po síti pomocí příkazu ping, kterému rozumí příkazová řádka i PowerShell včetně všech jeho parametrů. PowerShell ovšem ukrývá dvojici cmdletů, která nám dává lepší možnosti zjištění síťové dostupnosti služby či zařízení. Tím hlavním je Test-NetConnection, který je vylepšenou obdobou pingu, využívá WMI třídu Win32_PingStatus.

Nejjednodušší podobu udává příklad s obecným dotazem na bing.com:

Test-NetConnection bing.com                                                                                                                                                                                                                                                                                                                          ComputerName           : bing.com
RemoteAddress          : 204.79.197.200
InterfaceAlias         : Wi-Fi
SourceAddress          : 192.168.0.21
PingSucceeded          : True
PingReplyDetails (RTT) : 15 ms

Výhodou proti pingu je možnost doptat se na více počítačů najednou, jako v následujícím příkladu, kde jsou počítače rozděleny do skupin dostupných (true) a nedostupných (false)

$computers = "chi-dc01","chi-dc02","chi-dc04","chi-app01","chi-core01"
$computers | group {test-connection -count 1 -ComputerName $_ -quiet}

Další výhodou je možnost ptát se na konkrétní služby, tedy ne jen na to, zda je daný systém online, ale zda je na něm aktivní webserver (http protokol).

Test-NetConnection bing.com -CommonTCPPort HTTP


ComputerName     : bing.com
RemoteAddress    : 204.79.197.200
RemotePort       : 80
InterfaceAlias   : Wi-Fi
SourceAddress    : 192.168.0.21
TcpTestSucceeded : True

Podporované jsou následující protokoly:

  • SMB
  • HTTP
  • RDP

Druhým příkazem je Test-WSMan, který slouží k detekování možnosti vzdálené správy pomocí PowerShellu.

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

Správa automatického spouštění aplikací PowerShellem

Všichni čas od času řešíme, co se nám spouští spolu s přihlášením, no startem systému. Často jsou to chtěné funkcionality, jako třeba OneDrive, ale např. Teams již chtěné být nemusí a spousta dalších aplikací zrovna tak. Běžně se tyto problémy dají řešit pomocí Autoruns od Sysinternals, správcem úloh, nebo složitěji přes registry, služby a specifické složky. Ale jak to řešit na vzdáleném počítači? Když vynecháme RDP, AnyDesk a další, které připojí pracovní plochu jiného PC, zbyde nám PowerShell a editor registru (pokud je povolná vzdálená správa registru). A právě o možnostech PowerShellu to dnes bude.

PowerShllem máme 2 možnosti řešení, tu komplexnější, kdy využijeme vzdáleného připojení pomocí Enter-PSSession -ComputerName <název počítače>, nebo budeme využívat parametr ComputerName. Níže budu popisovat řešení přímé připojení se k danému stroji pomocí Enter-PSSession.

Automaticky spouštěné položky vypíšeme následujícím příkazem:

Get-CimInstance Win32_StartupCommand | Select-Object Name, command, Location, User | Format-List

Bližší informace k příkazu Get-CimInstance jsou v dokumentaci. Příkaz Get-CimInstance podporuje parametr ComputerName. Pokud ve výstupu bude uvedeno jako Location: common startup location, jde o cestu: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

Většina položek ovšem povede do registrů. Pro práci s registry se nám budou hodit následující příkazy:

  • Get-ItemProperty -Path <doplň>
  • Remove-ItemProperty -Path <doplň> -Name <doplň>

Pokud naopak budeme chtít něco do autoranu přidat, např. Outlook, tak do registrového klíče doplníme záznam příkazem: New-ItemProperty -Path <doplň> -Name <doplň> -PropertyType <doplň> -Value <doplň>

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

Validace a oprava systémových souborů offline

Dostat se do situace, že počítač nestartuje a je potřeba systém opravit pomocí WinRE nebo instalačního média zase není nic vzácného. Opravu spouštěcích souborů už Microsoft předpřipravil jako jedno kliknutí, byť stále ji můžeme provést pomocí příkazové řádky, ale stavy jako je nestartující systém po BSOD z důvodu selhání NTFS.sys neřeší a určitě i v dalších scénářích nemusí postačovat.

Možnosti kontroly jako je chkdsk nebo diskpart nejsou nikomu cizí, ale jak zkontrolovat systémové soubory offline kopie Windows, nebo offline odebrat problémový ovladač, je předmětem tohoto článku. Pro kontrolu a opravu systémových souborů slouží 2 nástroje, SFC a DISM. SFC(system file chacker) je nástroj přímo určený na kontrolu systémových souborů, a pokud chci kontrolovat a opravit offline kopii systému, zapisuji příkaz takto:

sfc /scannow /offbootdir=c:\ /offwindir=c:\windows

Písmenu systémového disku offline kopie Windows, víše C, si zjistím pomocí nástroje diskpart příkazem list volume. Další systémové komponenty je potřeba kontrolovat pomocí DISM, kdy analýzu provedeme příkazem:

Dism /Image:C:\ /Cleanup-Image /scanhealth

Následnou opravu pak:

Dism /Image:C:\ /Cleanup-Image /RestoreHealth

Písmeno disku, víše C, opět pochází z výsledku diskpartu.

Pokud je příčinou pádu systému ovladač (a není to zrovna ntfs.sys, či jiný od MS, ty opraví příkazy výše), tak je možné jej offline odebrat, následně spustit systém a danému zařízení nainstalovat ovladač nový. K zobrazení přesného názvu ovladače využijeme příkaz:

Dism /Image:C:\ /Get-Drivers /format:table

Po nalezení odpovídajícího ovladače jej odebereme pomocí příkazu:

Dism /Image:C:\ /Remove-Driver /Driver:OEM1.inf

V příkladu výše pak OEM.inf je název problémového ovladače, který jsme si našli v tabulce z předešlého příkazu.

Poslední, co se nechá se systémem, krom modifikace registrů a souborů, dělat, je vrácení změn rolí a funkcí, případně aktualizací. Na odebrání posledních aktualizací MS opět nabízí GUI, ale to neřeší případ, že k pádu OS dojde při spouštění v rámci aktualizačního restartu. Stejně tak přidávání či odebírání komponent (jako např. Hyper-V). V těchto případech se pak pomocí DISM vrátí čekající změny příkazem:

DISM /image:C:\ /cleanup-image /revertpendingactions
Posted in: Windows 10, Windows 11, Windows 8 a 8.1, Windows server

Oprava opakovaného vyžádání obnovovacího klíče Bitlocker

Dnes jen malá poznámka o problému, se kterým se setkávám a to je, když nástroj Bitlocker si vyžádá kód pro obnovení i po správně zadaném hesle. Nejčastěji je na vině aktualizace, BIOS bez pozastavené ochrany, ale někdy i ovladačů nebo pouze systému. Níže představím rychlé řešení, které lze aplikovat z běžícího systému, nebo z WinPE po odemčení jednotky, viz starší článek.

Začne řešením pro případ, že jednotka se odemyká automaticky pomocí TPM.

manage-bde -protectors -delete C: -Type TPM
manage-bde -protectors -add c: -tpm

Případ, kdy kombinujeme TPM a PIN je obdobný, příkazy níže:

manage-bde -protectors -delete C: -Type TPMAndPIN
manage-bde -protectors -add c: -TPMAndPIN

Byť to nemusí být nezbytné, doporučuji po této operaci znovu zálohovat klíč pro obnovu. Jak tomuto stavu předcházet? Na 100% to nelze, ale nejčastěji je na vině aktualizace BIOS, proto před jejím započetím doporučuji Bitlocker pozastavit a po jejím dokončení opět obnovit ochranu.

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

Řešení problému bootrec /fixboot access deny

Tento problém nastává v případě, že je potřeba opravit boot záznamy systému pro UEFI. Tento problém se týká oddílu EFI na disku využívající strukturu GPT. Podotýkám, že zde uvedený postup je až posledním řešením, často stačí příkaz chkdsk, ale pokud je potřeba provést bootre /fixboot a chybu nejde ignorovat, jde o opakovanou opravu bootu, jak jej můžete zkusit. V příkazové řádce WinRE prostředí postupujeme následovně:

  1. diskpart
  2. list vol
  3. sel vol <číslo jednotky UEFI>
  4. assign letter U
  5. exit
  6. cd /d U:\
  7. format U: /FS: FAT32
  8. bcdboot c:\windows /s U: /f UEFI
  9. cd /d u:\EFI\Microsoft\Boot\
  10. bootrec /fixboot

Často stačí skončit krokem 8, protože z adresáře systému Windows jsou do UEFI oddílu nahrány zcela nové Bootovací soubory. Když to nezabere, dokončíme všech 10 kroků.

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

Obnova Windows z Windows.old

Vrátit se k předešlé verzi systému po jeho upgrade je možné poměrně jednoduše v případě klientských Windows pomocí nastavení.

Alternativou k tomu grafickému postupu je pak příkaz:

DISM /Online /Initiate-OSUninstall /Quiet

Oba výše zmíněné postupy platí pro Windows 10 verze 2004 a novější i pro Windows 11, ale jak postupovat u Windows 8 a starších, nebo u serverových systémů?

Ruční obnova systému z Windows.old

Pro tento úkon je potřeba zařízení spustit z instalačního média systému Windows, nebo restartovat do WinRE prostředí. V případě instalačního média spustíme příkazovou řádku pomocí [Shift] + [F10], nebo pomocí volby opravit počítač, kde se nabídne prostředí WinRE. Text níže předpokládá, že i v tomto prostředí má systémový oddíl písmeno C, ověřit to můžeme nástrojem diskpart.

Začneme odstraněním adresářů nového systému (složku C:\users mažeme jen tehdy, když bylo upgradováno BEZ zachování uživatelských souborů). K mazání používáme následující sadu příkazů:

rmdir /s /q "c:\PerfLogs"
rmdir /s /q "c:\Program Files"
rmdir /s /q "c:\Program Files (x86)"
rmdir /s /q "c:\Windows"
rmdir /s /q "c:\ProgramData"
rmdir /s /q "c:\Users"

Nyní nastal čas na to, abychom přesunuli původní (v příkladu x64) systém na disk C.

move /y c:\Windows.old\Windows c:\
move /y "c:\Windows.old\Program Files" c:\
move /y "c:\Windows.old\Program Files (x86)" c:\
move /y c:\Windows.old\ProgramData c:\
move /y c:\Windows.old\Users c:\
move /y "c:\Windows.old\Documents and Settings" c:\
xcopy c:\Windows.old c: /s /e /h

V tuto chvíli máme sice na disku C vybalený zpět původní systém, ale nešlo by z něj nastartovat. Musíme ještě opravit Boot.

Oprava Boot pro UEFI

Pomocí následujících příkazů nalezneme oddíl UEFI a přidělíme mu písmeno:

diskpart
list vol

Nyní najdeme UEFI oddíl, jeho velikost je cca 100 MB a využívá formát FAT32. Jeho číslo budeme potřebovat dále.

sel vol <number of volume>
assign letter=U:
exit

Nyní již můžeme k vlastní konfiguraci Bootu pro UEFI.

cd /d U:\EFI\Microsoft\Boot\
bootrec /FixBoot
ren BCD BCD.old
bcdboot c:\Windows /s U: UEFI

Pokud nemáte systémový oddíl jako C, doplňte místo C do posledního příkazu písmeno vašeho systémového oddílu. Pokud příkaz „bootrec /FixBoot“ skončí chybou, chybu ignorujte a pokračujte v příkazech dále. Nyní můžeme restartovat systém.

Oprava Boot pro BIOS (MBR spouštění systému)

Oprava boot pro systémy, které využívají MBR (tedy BIOS) je jednoduší, stačí následující příkazy:

bootrec /fixmbr
bootrec /fixboot
bootrec /rebuildbcd

Máme hotovo, můžeme resetovat systém.

Oprava Boot pro Windows to Go

Pomocí následujících příkazů nalezneme oddíl UEFI a přidělíme mu písmeno:

diskpart
list vol

Nyní najdeme UEFI oddíl, jeho velikost je cca 100 MB a využívá formát FAT32. Jeho číslo budeme potřebovat dále.

sel vol <number of volume>
assign letter=U:
exit

Nyní již můžeme k vlastní konfiguraci Bootu pro UEFI.

cd /d U:\EFI\Microsoft\Boot\
bootrec /FixBoot
ren BCD BCD.old
bcdboot c:\Windows /s C: All

Pokud nemáte systémový oddíl jako C, doplňte místo C do posledního příkazu písmeno vašeho systémového oddílu. Pokud příkaz „bootrec /FixBoot“ skončí chybou, chybu ignorujte a pokračujte v příkazech dále. Nyní můžeme restartovat systém.

Dokončení

Může se stát, že systém se nespustí na přihlašovací obrazovku, ale do prostředí WinRE, v tom případě se i na serverových systémech objeví možnost Oprava spouštění systému (níže ilustrační obrázek z Windows 10).

Toto již většinou bez problémů projde a systém se automatizovaně doopraví a spustí. Po přihlášení se nejspíš zobrazí chyba, že koš systémové jednotky je poškozen a je potřeba jej vysypat, zde zadejte NE. Nyní doporučuji zkontrolovat NTFS a systémové soubory pomocí sady následujících příkazů:

sfc /scannow
dism /online /cleanup-image /scanhealth
dism /online /cleanup-image /restorehealth
echo y | chkdsk c: /f
shutdown /g /t 0 /f

Při restartu dojde ke kontrole systémové jednotky C, doporučuji nechat proběhnout! Po dokončení a přihlášení je možné hlášku poškození koše potvrdit ANO pokud se ještě zobrazí. Dle mé zkušenosti se při tomto postupu u serverových systémů ztratí veškerý obsah ze start menu, což je opravdu nepříjemné, ale dobrou zprávou je, že aplikace jsou v systému a fungují.

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

Odebrání zbytkového ovladače

Na odebrání ovladačů, které systém již nepotřebuje je spousta cest. Nejlepší je samozřejmě odebrat ovladač při odinstalaci zařízení ve Správci zařízení.

Někdy se může stát, že zařízení obsahuje mnoho ovladačů, které nikdy nevyužilo (např.: jednotný image pro mnoho typů počítačů s integrovanými ovladači). V takovém případě je možné nepotřebné ovladače odebrat pomocí cleanmager.exe (vyčištění disku), který spustíme jako správce, pak máme na výběr odebrání ovladačů.

Vše výše popsáno je zcela bezpečné a stabilní, takto provedená operace je bez rizika. Problém je v tom, že i některý SW implementuje ovladače (typicky bezpečnostní produkty) a může se stát, že i po odinstalaci takového produktu zůstanou v systému fragmenty, třeba i ovladače. V takovém případě doporučuji na webu vydavatele najít odinstalační nástroj a pokyny k jeho užití, pomocí jehož je možné tyto fragmenty odebrat. Systém sám obsahuje nástroje k nalezení a odebrání ovladačů. Doporučení je, tyto akce provádět v Safe modu systému.

Nalezení a odebrání ovladače z běžícího systému

Zde nám v první řadě pomůže nástroj DISM, který nám vypíše ovladače jež nejsou z dílen Microsoftu. Stačí následující příkaz.

dism /online /get-drivers /format:table

Výstup je vidět na obrázku níže.

Na výpisu výše je vidět, že v systému je takovým fragmentem ovladač Esetu edevmon, který je provozován stejnojmennou službou. Další postup si ukážeme právě na příkladu tohoto ovladače. V tomto bodě si potřebujeme bokem uložit original file name, bude potřeba později. K odebrání ovladače použijeme vestavěný nástroj pnputil pomocí následujícího příkazu (v PowerShellu):

#pnputil /delete-driver < Published Name>  /force
#příklad Esetu:
pnputil /delete-driver oem10.inf  /force

Pokud se příkaz zdaří, je ovladač odebrán ze systému. Zde bych doporučil restartovat systém, aby se projevila změna. Pokud vše proběhne v pořádku, ověříme si výpisem DISM (první bod), že systém neprováděl opravu spuštěním s poslední funkční konfigurací. Nyní můžeme odebrat vlastní binární soubor ovladače pomocí PowerShellu.

#Remove-Item -Path C:\Windows\System32\drivers \<original file name>.sys -Force
#Příklad s Esetem
Remove-Item -Path C:\Windows\System32\drivers edevmon.sys -Force

Pokud příkaz skončí chybou, znamená to, že systém soubor odstranil sám, pokud ne, odstranění provedl příkaz.

Offline odebrání ovladače

Zde jsou 2 důvody, potřebujeme upravit soubor install.wim, nebo po instalaci ovladače systém nenastartoval. V obou případech použijeme nástroj DISM, v prvním pomocí něj vybalíme instalační obraz do složky, v druhém budeme tento nástroj spouštět z příkazové řádky ve WinRE, či instalačním médiu.

Načtení seznamu ovladačů je obdobné jako u běžícího systému:

#Instalační obraz máme ve vybalený ve složce C:\test\offline
Dism /Image:C:\test\offline /Get-Drivers

Nyní můžeme odebírat ovladače

Dism /Image:C:\test\offline /Remove-Driver /Driver:OEM10.inf

Po úspěšném dokončení operace v případě úpravy instalačního obrazu vše uložíme příkazem:

Dism /Unmount-Image /MountDir:C:\test\offline /Commit

V případě opravy systému, kterou provádíme z prostředí WinRE nebo instalačního média počítač restartujeme do plnohodnotného systému.

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

Výpis oprávnění ke všem SMB share na serveru

Dnes si ukážeme malý kus PowerShellu, který velice usnadní auditování oprávnění na sdílených složkách. Jako první si uvedeme příklad kódu, který vypíše všechny složky, kde je nějak nastaveno oprávnění pro úroveň Everyone:

$SMB = (Get-SMBShare).Name
foreach($n in $SMB)
{
    Get-SmbShareAccess -Name "$n" | where AccountName -EQ Everyone
    
} 

Kompletní výpis pak poskytne odlehčená verze kódu:

$SMB = (Get-SMBShare).Name
foreach($n in $SMB)
{
   Get-SmbShare -Name "$n"   
   Get-SmbShareAccess -Name "$n"   
} 

Bližší informace, jako je cesta a server vkládá do výpisu s oprávněními právě příkaz Get-SmbShare, který lze volat i samostatně k vypsání informací o všech sdílených složkách (bez parametrů) krom oprávnění.

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

LAPS (Local Administrator Password Solution)

Jde o nástroj Microsoftu na správu hesel lokálního administrátorského účtu v doménovém prostředí. Jde o samostatné řešení, která „má na svědomí“ skupina Čechů pracujících v Microsoftu. Nově aktulializací 04-2023 se potřebné binární soubory staly součástí systému Windows 10 a Windows 11, rovněž pak systémů Windows server 2016, 2019 a 2022. Aktualizací instalovaná komponenta ovšem neobsahuje GUI pro servisní techniky, proto i tak doporučuji stáhnout msi z webu Microsoftu. Na koncových stanicích (pokud se rozhodnete instalovat ručně) stačí provést msiexec /i <cesta k msi instalárotu laps>, nebo využít distribuce pomocí GPO.

Na pracovní stanici administrátora, který se má starat o koncové stanice prak provedeme instalaci pomocí GUI a zvolíme „Fat clietn UI“

Instalace na doménový řadič

Na doménovém řadiči instalaci provedeme pomocí GUI (případně si dohledáme parametry na webu MS) a zvolíme všechny management tools.

Po dokončení instalace je potřeba upravit schéma AD (tato operace se provádí na Schema master kontroleru) pomocí několika PowerShell příkazů. Heslo bude po změně schématu uloženo v objektu počítače a k tomuto atributu budeme nastavovat právo přístupu.

Import-module AdmPwd.PS
Update-AdmPwdADSchema

Nyní musíme přidat patřičná oprávnění skupině správců klientských stanic.

Set-AdmPwdReadPasswordPermission -Identity "PC" -AllowedPrincipals "SpraciPC"

Nyní nastal čas povolit účtům počítačů změnit sám sobě heslo:

Set-AdmPwdComputerSelfPermission -Identity "PC"

Z vlastní zkušenosti mohu říct, že po dokončení instalace a restartu doménového řadiče je ještě potřeba registrovat službu.

regsvr32.exe AdmPwd.dll

Tvorba politiky

Pokud máte central store, bude ještě potřeba překopírovat ADMX šablonu z %windir%\PolicyDefinitions\ do \\domain\SYSVOL\domain\Policies\PolicyDefinitions\ a rozhodně nezapomenout na jazykový balíček šablony.

Celé nastavení technologie je pak v: Computer Configuration > Policies > Administrative Templates > LAPS.

Zde si nastavíme vše potřebné, jako je komplexita hesla a jeho platnost:

Účet lokálního administrátora (pokud nenastavíme, jde o vestavěný účet Administrator [SID končí na 500])

Zakážeme platnost hesla, která je delší, nežli jsme nastavili v zásadách

A nesmíme zapomenou celou konfiguraci (tedy i vlastní správu hesla lokálního admina) zapnout.

Přístup k heslům

Přístup k heslům získají doménový správci a uživatelé ve skupině, které tato práva byla přidělena. Uživatelé s oprávněními pak mohou využít LAPS UI

Nebo pomíc PoiwerShellu:

Get-AdmPwdPassword -ComputerName "AZ-0183-3116-95"
Back to Top