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

Zařazení všech počítačů do skupiny v Active Directory

Dnešní příspěvek je opět trocha PowerShellu a jednoduché řešní na zdánlivě triviální problém. Jde o to, jak dostat všechny počítače do určité skupiny (vlastně by se mohlo jedna po drobné úpravě i o uživatele) bez ohledu na to, ve které OU jsou. To může být potřeba například ve chvíli, kdy synchronizujeme jen určitou skupinu mezi AD a AAD pomocí Azure AD Conect.

$skupina = Read-Host -promt "Zadej distinguished name skupiny"
ADD-ADGroupMember -identity "$skupina" -members (Get-ADComputer -Filter * | select SAMAccountName)
Posted in: Windows 10, Windows 11, Windows 8 a 8.1

Komprese Windows

Systém Windows obshauje málo známou, ale dobře dokumentovanou funkci compact, která dokáže komprimovat operační systém, vybrané soubory či adresáře. Nejde o tutéž kompresy, který je dosutpná ve vlastnotech diskové jednotky (Komprimovat jednotku a ušetřit místo na disku), která využívá vestavěné komprese NTFS.

Komprese OS ušetří zhruba 3,7 GB místa z 15 GB, které OS zabírá. Výkonové dopady jsou přítomné, ale na slušných SSD a procesorech střední třídy jsou zanedbatelné. Význam má tento nástroj především u zařízení, která mají malé interní uložiště (128 GB a méně), ale může se hodit u mnohem větších disků.

V případě funkce copmact jsou data na disku uloženy v komprimované podobě a při jejich načítání do paměti (myslím operační paměť, lidově RAM) dochází k jejich dekompresy. Pokud byla data změněna, dochází opět k jejich kompresy při zápisu na disk. Chování je obdobné jako v případě komprese datových stránek databází u MS SQL serveru.

Komprese operačního systému

Dotaz na stav komprese:

compact /CompactOS:query

Aktivace komprese:

compact /CompactOS:always

Deaktivace komprese:

compact /CompactOS:never

Komprese SW a dalších adresářů

Příkaz copmpact je možné uplatnit na libovolný adresář či soubor, jen na adresář systému Windows má specifické parametry, viz výše. Rovněž bych dle následujícího nekomprimoval složku profilu uživatele, zde bych kompresy využil pouze na jednotlivé knihovny (Dokumenty, Obrázky, Hudba, Videa). Využití následujících parametrů může vést k pádu OS v případě aplikování na adresář operačního systému.

Pro kompresy obsahu aktuálního adresáře a všech podadresářů se využije příkaz:

compact /c /s

Pokud chceme komprimovact celý disk (ne systémový) využijeme příkaz:

compact /c /i /s:\

Parametr /i zabraňuje chybám přerušit proces komprese. Pokud chceme komprimovat jen vybraný typ souborů (např. bmp), využijte následující příklad:

compact /c /s:\tmp *.bmp

Všechny příkazy uvedené výše, vyjímaje komprese systémového adresáře, lze obohatit o parametr EXE, který tanový použitý algoritmus komprese, címž určí její účinnost, ale také výkonový dopad při přistoupení k danému souburu. Následující kód je příkladem komprese jedné dll ze sady Office pomocí všech podporovaných lgoritmů. Kód je psaný v syntaxi PowerShellu (opravdu lze nástroj compact takto z PowerShellu verze 5.1 a novější volat).

#původní velikost: 39,448,384 bytes
#parametr c značí, že komprese se týká pouze jednoho souboru

#výchozí algoritmus komprese - nejnižší výkonové dopady
compact /exe:xpress4K /c /f "C:\Program Files\Microsoft Office\Office16\Uc.dll"
#výsledná velikost: 18 288 640 bytes
#kompresní poměr: 2,2:1

compact /exe:xpress8K /c /f "C:\Program Files\Microsoft Office\Office16\Uc.dll"
#výsledná velikost: 16 617 472 bytes
#kompresní poměr: 2,4:1

compact /exe:xpress16K /c /f "C:\Program Files\Microsoft Office\Office16\Uc.dll"
#výsledná velikost: 15 704 064 bytes
#kompresní poměr: 2,5:1

compact /exe:lzx /c /f "C:\Program Files\Microsoft Office\Office16\Uc.dll"
#výsledná velikost: 12 001 280 bytes
#kompresní poměr: 3,3:1

Pro zrušení komprese souboru, sožky, nebo jednotky se využívá paramter u.

Virtualizace

Na rozdíl od NTFS komprese na uložišti s virtuálními disky nemám přímou osobní zkušenost, ale i tak bych doporučil kompresy provádět uvnitř virtuálního počítače a případně nástroje virtualzačního SW. Nativní NTFS komprese není podporována pro soubory virtuálních pevných disků, virtuální stroje pak není možné v Hyper-V spoštět.

Neoficiální GUI

Microsoft tento nástroj integroval do Windows jako commandline tools, ale stejně jako k mnohým dalším komunita, nebo někdy i sám Microsoft, dodělá neoficiální GUI. Na Githubu můžete najít GUI právě k nástroji compact.

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

Úklid po aktualizacích

Asi obecně známý je nástroj cleanmgr.exe, který slouží k úklidu po aktualizacích, úklidu dočasných souborů, cache apod. Trochu hlubší úklid je možné provést pomocí nástroje DISM (automaticky jej spouští aktualizační proces u servisních aktualizací, ale i zde je lepší uživatelské zpuštění). Úklid pomocí DISM je vhodný rovněž po větších aktualizacích komponent doručených pomocí MS Store. Úklid nástrojem DISM má 2 fáze (stejně jako u cleanmgr.exe), analýzu a následný úklid.

Analýza se spouští příkazem:

DISM.exe /Online /Cleanup-Image /AnalyzeComponentStore

Vlastní úklid pak příkazem:

DISM.exe /Online /Cleanup-Image /StartComponentCleanup

Nezmínil jsem jednu důležitou věc, nástroj DISM vyžaduje na všechny operace (včetně úklidu) práva administrátora, ale to již zkušený uživatel ví a ten nezkušený se to dozví z chybového hlášení 😉

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

Plánovaná kontrola disku

Dnešní PowerShell skript vyžaduje práva administrátora a spouští kontrolu zvoleného svazku nástrojem chkdsk.exe.

d1 = get-date -format G
$vstup = Read-Host "Zadej datum a čas spuštění ve formatu: ddMMyyyyHHmm"
$disk = Read-Host "Zadej písmeno svazku ke kontrole (napr. C:)"
If(($disk.Substring($text.Length)) -ne  ":"){
$disk = $disk + ":"
}
$d2 = [datetime]::ParseExact($vstup,'ddMMyyyyHHmm',$null)
[int] $cas = (New-TimeSpan -Start $d1 -End $d2).TotalSeconds
sleep $cas
Invoke-Command -ScriptBlock {
echo y | chkdsk $disk  /F
}
#pro případ skenu systémové jednotky
Restart-Computer -Force 
Posted in: Windows 10, Windows 11, Windows 8 a 8.1

Změna adresáře profilů uživatele pro všechny nové uživatele

Občas je zapotřebí změnit disk, kde bude uložena složka Users, která je obvykle v cestě: C:\Users.
Tuto možnost máme pro všechny uživatele, které vytvoříme po provedení této konfigurace. Pro změnu tohoto adresáře slouží registrový klíč ProfilesDirectory, který se nachází v:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

Všichni uživatelé založení po nastavení cesty a restartu systému budou mít své adresáře v novém umístění. Toto nastavení je možné kombinovat s přesměrováním knihoven na síťový disk v rámci GPO nastavení v doméně.

Posted in: Windows 10, Windows 11, Windows 8 a 8.1, Základy PowerShellu

Vytvoření ISO souboru ze složky pomocí PowerShellu

Následující skript, který v článku uveden je převzat z Githubu: https://raw.githubusercontent.com/wikijm/PowerShell-AdminScripts/master/Miscellaneous/New-IsoFile.ps1
Skript je otestován a je v pořádku, na druhou stranu má jednu nevýhodu, kterou je, že nepracuje, pokud je PowerShell v režimu Constrained Language Mode, protože přímo využívá .NET příkazy.

Zdrojový kód skriptu

function New-IsoFile
{
<# .Synopsis Creates a new .iso file .Description The New-IsoFile cmdlet creates a new .iso file containing content from chosen folders .Example New-IsoFile „c:\tools“,“c:Downloads\utils“ This command creates a .iso file in $env:temp folder (default location) that contains c:\tools and c:\downloads\utils folders. The folders themselves are included at the root of the .iso image. .Example New-IsoFile -FromClipboard -Verbose Before running this command, select and copy (Ctrl-C) files/folders in Explorer first. .Example dir c:\WinPE | New-IsoFile -Path c:\temp\WinPE.iso -BootFile „${env:ProgramFiles(x86)}\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg\efisys.bin“ -Media DVDPLUSR -Title „WinPE“ This command creates a bootable .iso file containing the content from c:\WinPE folder, but the folder itself isn’t included. Boot file etfsboot.com can be found in Windows ADK. Refer to IMAPI_MEDIA_PHYSICAL_TYPE enumeration for possible media types: http://msdn.microsoft.com/en-us/library/windows/desktop/aa366217(v=vs.85).aspx .Notes NAME: New-IsoFile AUTHOR: Chris Wu LASTEDIT: 03/23/2016 14:46:50 #>

[CmdletBinding(DefaultParameterSetName=’Source‘)]Param(
[parameter(Position=1,Mandatory=$true,ValueFromPipeline=$true, ParameterSetName=’Source‘)]$Source,
[parameter(Position=2)][string]$Path = „$env:temp\$((Get-Date).ToString(‚yyyyMMdd-HHmmss.ffff‘)).iso“,
[ValidateScript({Test-Path -LiteralPath $_ -PathType Leaf})][string]$BootFile = $null,
[ValidateSet(‚CDR‘,’CDRW‘,’DVDRAM‘,’DVDPLUSR‘,’DVDPLUSRW‘,’DVDPLUSR_DUALLAYER‘,’DVDDASHR‘,’DVDDASHRW‘,’DVDDASHR_DUALLAYER‘,’DISK‘,’DVDPLUSRW_DUALLAYER‘,’BDR‘,’BDRE‘)][string] $Media = ‚DVDPLUSRW_DUALLAYER‘,
[string]$Title = (Get-Date).ToString(„yyyyMMdd-HHmmss.ffff“),
[switch]$Force,
[parameter(ParameterSetName=’Clipboard‘)][switch]$FromClipboard
)

Begin {
($cp = new-object System.CodeDom.Compiler.CompilerParameters).CompilerOptions = ‚/unsafe‘
if (!(‚ISOFile‘ -as [type])) {
Add-Type -CompilerParameters $cp -TypeDefinition @‘
public class ISOFile
{
public unsafe static void Create(string Path, object Stream, int BlockSize, int TotalBlocks)
{
int bytes = 0;
byte[] buf = new byte[BlockSize];
var ptr = (System.IntPtr)(&bytes);
var o = System.IO.File.OpenWrite(Path);
var i = Stream as System.Runtime.InteropServices.ComTypes.IStream;

if (o != null) {
while (TotalBlocks– > 0) {
i.Read(buf, BlockSize, ptr); o.Write(buf, 0, bytes);
}
o.Flush(); o.Close();
}
}
}
‚@
}

if ($BootFile) {
if(‚BDR‘,’BDRE‘ -contains $Media) { Write-Warning „Bootable image doesn’t seem to work with media type $Media“ }
($Stream = New-Object -ComObject ADODB.Stream -Property @{Type=1}).Open() # adFileTypeBinary
$Stream.LoadFromFile((Get-Item -LiteralPath $BootFile).Fullname)
($Boot = New-Object -ComObject IMAPI2FS.BootOptions).AssignBootImage($Stream)
}

$MediaType = @(‚UNKNOWN‘,’CDROM‘,’CDR‘,’CDRW‘,’DVDROM‘,’DVDRAM‘,’DVDPLUSR‘,’DVDPLUSRW‘,’DVDPLUSR_DUALLAYER‘,’DVDDASHR‘,’DVDDASHRW‘,’DVDDASHR_DUALLAYER‘,’DISK‘,’DVDPLUSRW_DUALLAYER‘,’HDDVDROM‘,’HDDVDR‘,’HDDVDRAM‘,’BDROM‘,’BDR‘,’BDRE‘)

Write-Verbose -Message „Selected media type is $Media with value $($MediaType.IndexOf($Media))“
($Image = New-Object -com IMAPI2FS.MsftFileSystemImage -Property @{VolumeName=$Title}).ChooseImageDefaultsForMediaType($MediaType.IndexOf($Media))

if (!($Target = New-Item -Path $Path -ItemType File -Force:$Force -ErrorAction SilentlyContinue)) { Write-Error -Message „Cannot create file $Path. Use -Force parameter to overwrite if the target file already exists.“; break }
}

Process {
if($FromClipboard) {
if($PSVersionTable.PSVersion.Major -lt 5) { Write-Error -Message ‚The -FromClipboard parameter is only supported on PowerShell v5 or higher‘; break }
$Source = Get-Clipboard -Format FileDropList
}

foreach($item in $Source) {
if($item -isnot [System.IO.FileInfo] -and $item -isnot [System.IO.DirectoryInfo]) {
$item = Get-Item -LiteralPath $item
}

if($item) {
Write-Verbose -Message „Adding item to the target image: $($item.FullName)“
try { $Image.Root.AddTree($item.FullName, $true) } catch { Write-Error -Message ($_.Exception.Message.Trim() + ‚ Try a different media type.‘) }
}
}
}

End {
if ($Boot) { $Image.BootImageOptions=$Boot }
$Result = $Image.CreateResultImage()
[ISOFile]::Create($Target.FullName,$Result.ImageStream,$Result.BlockSize,$Result.TotalBlocks)
Write-Verbose -Message „Target image ($($Target.FullName)) has been created“
$Target
}
}

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

Záchranné médium

Stažení

Téměř všichni nějakým způsobem řešíme situaci, kdy Windows nestartují a je potřeba ze systému dostat data, systém opravit offline nebo vyresetovat heslo lokálního správce. Všechny tyto úkony se dají udělat pomocí instalačního média Windows, většinou v příkazové řádce, ale někdy i pseudograficky.

Nástroj, který zde nabízím v podobě ISO souboru stojí stejně jako instalační médium Windows nad WinPE a Wi RE, tudíž obsahuje všechny nástroje, které jsou k dispozici na instalačním médiu Windows 10 verze 20H2. Dokáže editovat registry, spravovat disky, provádět diagnostiku, obnovu ze zálohy, obnovu z bodu obnovení apod.

Přidanou hodnotou je grafická nadstavba, která je blízká Windows a obsažení dalších nástrojů. Mimo jiné je k dipozici PowerSehell Core, Master Management Console (MMC), ale také webový prohlížeč (Google Chrome a mozila Firefox), což umožňuje hledat online pomoc přémo z poškozeného zařízení. Jsou k dipozici nástroje pro virovou kontrolu poškozeného systému, je možné stáhnout a spustut aktuální verzei Kaspersky Virus Removal Tool, jsou zde nástroje na nalýzu obsahu disku, další nástroje pro diagnostiku disků a HW celkově, je zde Mini Partiton Tool 9 pro pokročilou spávu disků graficky, nebo třeba Recuva pro obnovu smazaných dat.

Stejně jako v záchranných Linuxových distribucích jsou zde nástroje pro práci s lokálními uživatelskými účty poškozených Windows.

Rozhodně si myslím, že toto je nástroj vhodný pro širokou veřejnost (byť jeho spouštění chvilku trvá), ale i profesionální správce sítě pro něj může najít uplatnění.

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

Odemčení Office dokumentů

Tento článek pojednává o demčení dokumentů Office, které jsou heslem uzamčeny k úpravám. Na konci článku jsou zmíněny externí zdroje i prozcela uzamčené dokuemnty.
Využití poznatků z tohoto článku aplikujte výhradně na vlstní dokumenty, nikoliv na dokumenty od jiných autorů.

Odemykání souborů Excel

  1. Přejmenovat na zip
  2. Extrahovat do složky
  3. Otevřít složku xl
  4. Otevřít složku worksheets
  5. Vybrat xml uzamčeného listu a otevřít jej v Poznámkovém bloku, nebo Visual Studiu
  6. Vymazat tag: <sheetProtection /> (obsahuje další parametry jako je algoritmus a hash hesla i soli)
  7. Uložit
  8. Zavřít
  9. Přejít do kořenové složky souboru
  10. Vybrat vše a zvolit odeslat do komprimované složky
  11. Přejmenovat složku dle názvu souboru a koncovku zip změnit na koncovku xlsx

Odemknutí práce s listy jako objekty

  1. Provedeme kroky 1 – 3 z odemykání listů výše
  2. Otevřeme v Poznámkovém bloku soubor workbook.xml
  3. Odstraníme tag: <workbookProtection />
  4. Provedeme kroky 7 – 11 z postupu odemykání listů výše

Odemykání souborů Word

  1. Přejmenovat na zip
  2. Extrahovat do složky
  3. Otevřeme složku word
  4. V poznámkovém bloku otevřeme soubor settings.xml
  5. Odstraníme tag <w:documentProtection />
  6. Uložíme a uzavřeme soubor
  7. Přejít do kořenové složky souboru
  8. Vybrat vše a zvolit odeslat do komprimované složky
  9. Soubor pojmenujeme s koncovkou docx

Odemykání souborů PowerPoint

U readonly prezentací postupujeme stejně, jako v případě Wordu.

Odemykání celkově uzamčených souborů

Zde je již zapotřebí užít program, který zpraví útok na heslo souboru, jednou z variant je např. ElcomSoft Distributed Password Recovery v2.99.445 incl serial.rar – Disk Google nebo v kombinaci s nějakou databází hesel pak: GitHub – codewatchorg/OfficeCracker: Tool to bruteforce Word, Excel, and PowerPoint office document passwords, těmi listy hesel může být: Common Password List ( rockyou.txt ) | KaggleSecLists/10-million-password-list-top-100000.txt at master · danielmiessler/SecLists · GitHub, či některý z listů: Large Password Lists: Password Cracking Dictionary’s Download For Free (thehacktoday.com) a s podporou češtiny zde: zxcvbn-czech/data at master · lpavlicek/zxcvbn-czech · GitHub

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

Jednoduchá aktivace high performance módu

Již před několika lety jsem zmiňoval postup, jak skrze úpravu registru aktivovat napájecí režim vysokého výkonu na systémech Windows 8.1, Windows server 2012 a novějších a Windows 10. Tento mód se hodí pro databázové servery, Hyper-V servery a pracovní stanice, které řeší nejrůznější strojní či fyzikální simulace, kompresy a překódování multimédií, a další opravdu vysoce časově i výkonově náročné operace. Dalším kandidátem mohou být build servery ve vývoji velkých řešení.
Jak povolit možnost přednastavit napájení do tohoto režimu?
Stačí v příkazové řádce spuštěné jako správce zadat příkaz: powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61
Nyní se v ovládacích panelech v nastavení napájení objeví možnost zvolit High performance mód. Osobně varuji před jeho využíváním na noteboocích a zařízeních Surce vyjímaje Surface Studio.

Posted in: Windows 10, Windows 8 a 8.1

Reset hesla lokálního admina ve Windows 10 a Windows 8.1

Starý známý postup se záměnou Utilman.exe za cmd.exe již není několik verzí Windows 10 funkční, protože jej zastaví Defender díky rozhraní AMSI. Microsoft má v oficiální dokumentaci uvedeno, že pokud není využíván účet Microsoft, jehož heslo lze přenastavit z jiného zařízení, je správný postup obnova do továrního nastavení, případně reinstalace z instalačního média. Tento postup, pokud neuděláte chybu, dokáže zachovat data uživatele, ale nikoliv aplikace či nastavení systému. Nicméně i tak existuje podobná cesta založená na offline změně registru, kterou Defender nezastaví, pojďme se na to podívat.Základ je stejný jako v případě hacku přes Utilmana, Windows nastartujeme z instalačního média a pomocí kláves Shift+F10 spustíme z volby jazyka příkazovou řádku. Druhou možností, jak spustit příkazovou řádku je pomocí volby opravit tento počítač.
Do příkazové řádky napíšeme regedit a potvrdíme vše enterem.

Otevře se nám editor registru a přejde v něm do větve HKEY_LOCAL_MACHINE, následně klineme na možnost Soubor (File) a zvolíme Načíst podregistr (Load Hive)
V dialogu pro výběr souboru nalezneme systémový disk našeho PC a v něm složku System32, tedy např.: C:\Windows\System 32. Nyní v této složce nalezneme složku config a vybereme soubor SYSTÉM
 

Nyní si zadáme název, pod kterým bude dostupná, např.: 1234
Rozklikneme HKEY_LOCAL_MACHINE v ní pak naší 1234 a najdeme položku Setup.

Dvojklikem otevřeme hodnotu CmdLine a do položky Value Data napíšeme cmd.exe.

Potvrdíme tlačítkem OK a dvojklikem otevřeme hodnotu SetupType a do položky Value Date zapíšeme číslici 2

Potvrdíme OK a klikneme ve stromo položek na naší položku 1234, následně zvolíme Soubor (File) a možnost Uvolnit podregistr (Unload Hive)

Potvrdíme uvolnění registru a zavřeme regedit, následně zavřeme i příkazovou řádku a zvolíme možnost pokračovat do Windows, pokud uvidíme okno volby jazyka instalace systému Windows, také jej uzavřeme a tím restartujeme PC.
Při spouštění Windows se samovolně otevře příkazová řádka, nyní můžeme pomocí příkazů změnit hesla. Vyvolání MMC konzole je možné, ale její ovládání nikoliv, protože PC v tuto chvíli akceptuje pouze vstup z klávesnice.

Do příkazové řádky zadáme: net user
Nyní obdržíme výpis všech uživatelů. Do příkazové řádky zadáme: net user <názve účtu> *
tedy například: net user admin *

Nyní můžeme zadat nové heslo pro uživatele, nebo dialog potvrdit entrem a výzvu pro zopakování hesla také (pokud vše bez zadání potvrdíme jen enterem, bude nastavení hesla zrušeno a pro přihlášení nebude účet chráněn heslem). Teď již stačí do příkazové řádky zadat příkaz exit

Nyní se dostaneme do Windows a můžeme si případně nastavit heslo běžnou grafickou cestou. Doporučuji ještě provést kontrolu, zda systém po dané změně uklidil, to provedeme následovně: do vyhledávání napíšeme regedit a zvolíme možnost spustit jako správce. Nyní si přejdeme na cestu: HKEY_LOCAL_MACHINE\System\Setup

Nyní nastavíme hodnotu CmdLine na prázdno (smažeme obsah, pokud tam je) a hodnotu SetupType nastavíme na 0 (pokud tam zůstala naše 2).

Back to Top