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 server

Migrace FSMO rolí mezi servery

K „neřízené“ migraci FSMO rolí dochází naprosto přirozeně samo, ve chvíli, kdy je nedostupný (výpadek sítě, vypnutí a pod.) server, který má nějakou FSMO roli, dočasně tuto roli převezme jiný server. Po obnovení provozu serveru, který má danou roli si je přebere zpět, ale až po úplném dokončení synchronizace.

Dnešní příspěvek je určitým českým popisem stavu, kdy je nutné FSMO roli přesunou ručně a rozhodně nenahrazuje originální dokumentaci. Sám jsem se dostal do stavu, kterému se v licenční tématice říká Permanent hardware failure, kdy jsem musel vynutit „trvalé“ převzetí všech FSMO rolí jiným serverem. Bohužel, server který selhal provozoval 4 z 5 těchto rolí. Právě o tom, jak takovéto převzetí udělat, buď v výpadku, nebo plánovat před vyřazením z provozu je tento článek. K převzetí všech FSMO rolí slouží PowerShellový příkaz:

Move-ADDirectoryServerOperationMasterRole -Identity S3 -OperationMasterRole RIDMaster,InfrastructureMaster,DomainNamingMaster,PDCEmulator,schemaMaster -Force

Tento příkaz je potřeba spustit na serveru, který má role převzít. Parameter Identity slouží k určení cílového serveru (je povinný), ale i tak doporučuji spouštět přímo na daném serveru. Pokud chci převádět jen některé role, stačí uvést jejich výčet v parametru OperationMasterRole.

Pokud server vyřazuje z provozu plánovaně, odebírám roli DC pomocí DCpromo, respektive příkazem:

Uninstall-ADDSDomainController

V takovém případě zůstávají role automaticky „rozebrány“ dalšími kontrolery, ale je dobré se o tom ujisti.

Posted in: Windows 10, Windows 11, Windows server

Odebrání serverů ze Server management konzole

Tento článek se týká Windows Serverů (verze 2012 a novější) instalované s GUI a klientských systémů Windows s instalovaným RSAT.

Konzole sama obsahuje možnost přidat servery a vytvořit skupiny serverů, do nichž je možné servery přidávat. Bohužel zde chybí možnost z této praktické konzole servery odebrat, což se ve spoustě případů může hodit. Postup odebrání je tedy následovný:

  1. příkaz: cd %userprofile%\AppData\Roaming\Microsoft\Windows\ServerManager
  2. Otevřít (k editaci, třeba Notapadem): ServerList.xml
  3. Smazat XML záznam pro server, který chceme odstranit
  4. Uložit
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 server

Stažení databáze hesel Have i been pwned

Správci systémů někdy potřebují databáze uniklých přihlašovacích údajů k tomu, aby zjistili, zda někdo z jejich uživatelů nepoužívá kompromitované přístupové údaje. Krom různých fór útočníků a pentesterů je jedním z dobrých zdrojů služba Have i been pwned. Dříve se přímo ze stránek této služby nechala stáhnout databáze s uniklými hesly ve formátu NTLM pro kontrolu těchto údajů v AD. Jedním z nástrojů, které umí tyto údaje kontrolovat je DSInternals. Nově web Have i been pwned má aplikaci pro stahování databáze hesel a o tom je tento příspěvek.

Stažená

Pro stažení a samotnou práci s aplikací je potřeba mít .NET6, jak jej instalovat jsem již psal. Pro instalaci downloaderu pak může sloužit např. příkaz:

dotnet tool install haveibeenpwned-downloader --tool-path "C:\Program Files\NET6\Tools"

Stažení databáze hesel ve formátu NTLM

Vlastní stažení databáze do složky aplikace je pak v PowerShellu velice jednoduché, jak ukazuje příklad níže.

#Přepneme se do adresáře aplikace
cd C:\Program Files\NET6\Tools
#Stáhneme hesla
.\haveibeenpwned-downloader.exe -n pwnedpasswords_ntlm
Posted in: Windows server

Nastavení DHCP pro PXE Boot Windows Deployment Services na BIOS i UEFI

Dnes to bude o tom, jak nastavit DHCP na Windows serveru tak, aby poskytlo v DHCP možnosti 67 validně pro BIOS i UEFI. Ve výchozím stavu se v návodech na konfiguraci WDS dočtete, že DHCP možnosti 67 má být uvedeno „boot\x64\wdsnbp.com“, což je možnost pro BIOS a legacy boot. Jak ale nastavit podmíněně možnost 67? Odpovědí je použít DHCP politiky, ale nejdříve musíme detekovat, zda má zařízení UEFI, nebo BIOS.

Detekce UEFI a BIOS

Řešením je rozšířit Vendor Classes z výchozích Windows 98 option, Windows 2000 option a Microsoft option o detekci architektury. Nejsnazší to bude pomocí PowerShellu:

Add-DhcpServerv4Class -Name "PXEClient (UEFI x64)" -Type Vendor -Data "PXEClient:Arch:00007"
Add-DhcpServerv4Class -Name "PXEClient (UEFI x86)" -Type Vendor -Data "PXEClient:Arch:00006"
Add-DhcpServerv4Class -Name "PXEClient (BIOS x86 & x64)" -Type Vendor -Data "PXEClient:Arch:00000"

Alternativně můžeme využít postup zachycený na snímcích níže.

Do dat v ASCII zapíšete postupně hodnoty z PowerShellových příkazů výše (co příkaz, to jedna hodnota Vendo Classes). Tím jsme dosáhli toho, že DHCP ví, zda o IP žádá BIOS nebo UEFI.

Konfigurace DHCP možnosti 67

Nyní již k tvorbě politiky, která nastaví spouštěcí soubor PXE boot. Nejprve všechno v PowerShellu (V příkazech je nutné nastavit ScopeId dle IP rozsahu, který obsluhuje naše DHCP):

Add-DhcpServerv4Policy -Name "PXEClient (UEFI x64)" -ScopeId 10.10.10.0 -Condition OR -VendorClass EQ,"PXEClient (UEFI x64)*"
Add-DhcpServerv4Policy -Name "PXEClient (UEFI x86)" -ScopeId 10.10.10.0 -Condition OR -VendorClass EQ,"PXEClient (UEFI x86)*"
Add-DhcpServerv4Policy -Name "PXEClient (BIOS x86 & x64)" -ScopeId 10.10.10.0 -Condition OR -VendorClass EQ,"PXEClient (BIOS x86 & x64)*"

Set-DhcpServerv4OptionValue -ScopeId 10.10.10.0 -PolicyName "PXEClient (UEFI x64)" -OptionId 067 -Value "boot\x64\wdsmgfw.efi"
Set-DhcpServerv4OptionValue -ScopeId 10.10.10.0 -PolicyName "PXEClient (UEFI x86)" -OptionId 067 -Value "boot\x86\wdsmgfw.efi"
Set-DhcpServerv4OptionValue -ScopeId 10.10.10.0 -PolicyName "PXEClient (BIOS x86 & x64)" -OptionId 067 -Value "boot\x64\wdsnbp.com"

Tentokát nebudu přidávat textový popis a snímky obrazovky, místo toho jsem našel pěkné video i s vysvětlením a angličtině, takže vkládám níže.

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"
Posted in: Windows 10, Windows 11, Windows 8 a 8.1, Windows server, Základy PowerShellu

Nástroje pro skriptování v PowerShellu

PowerShell, stejně jako další textové Shelly má 2 tváře, příkazové rozhraní a skriptování. Pro příkazové rozhraní slouží konzola PowerShell (na Windows PowerShell.exe), nebo Windows Terminal. Příkazové prostředí slouží k manuálnímu provádění příkazů, nebo spouštění skriptů. Skriptovací rozhraní je malinko složitější, takže si jej rozebereme dále trochu podrobněji.

Nativní nástroj na Windows – PowerShell ISE

Všechny verze Windows s grafickým rozhraním (tedy všechny krom Windows server Core a Windows server Nano) obsahují nástroje PowerShell ISE, který slouží k editaci a tvorbě skriptů a dalších PowerShell souborů. PowerShell ISE je primárně určeno pro Windows PowerShell (tedy PowerShell verze 1.0 až 5.1), pro PowerShell verze 6 a novější je sice možné ISE využít, ale doporučeno je využití VS Code, kde je nápověda a doplňování příkazů nastavená primárně na nejnovější podporovanou verzi PowerShellu. Z nástrojů ostatních vývojářů je snad nejpokročilejším PowerShell studio, ale osobně i tak dávám přednost jednoduchému ISE.

Krom interaktivní možnosti vyhledávání příkazů, jejichž parametry je možné vyplnit pomocí formuláře, umožňuje využívat a vytvářet tzv. snipety.

zadání příkazů z vyhledání a vyplnění formuláře po pravé straně

Snipety

Snipety jsou šablony většího kusu syntaxe, jako jsou třídy, DSC, funkce, cykly či podmínky. Seznam dostupných snipetů se vyvolá stiskem CTRL + J v místě, kam chceme daný snipet vložit.

Ukázka seznamu snipetů obsaženém v CTRL + J

Pojďme si nyní ukázat, jak využít snipet pro tvorbu tzv. andvanced function. Nejprve pomocí CTRL + J vyvoláme nabídku snipetů a v ní najdeme Advanced Function. Po kliknutí na tuto nabídku se nám vloží kód.

Jak je vidět na obrázku výše, vloží se nám šablona kódu, kterou začneme doplňovat, a výsledek může být např.:

<#
.Synopsis
   kontrola systémovýh souborů.
.DESCRIPTION
   kontrola systémových souborů nativními nástroji scf a dism
.EXAMPLE
   Check-SystemFiels -scannow
   provede příkaz sfc /scannow
.EXAMPLE
   Check-SystemFiels -scanfile -Path c:\windows\system32\kernel32.dll
   Provede kontrolu integrity a pokusí se o opravu souboru kernel32.dll
#>
function Check-SystemFiles
{
    Param
    (
        # nápověda
        [Parameter(ValueFromPipelineByPropertyName=$true,
                   Position=0)]
        [string] $path,

        # scannow
        [switch] $scannow,

        #verifikace
        [switch] $verifyonly,

        #kontrola souboru
        [switch] $scanfile,

        #offline kontrola
        [switch] $offline,

        #kontrola souboru
        [switch] $verifyfile,

        #offline boot adresář
        [string] $offbootdir,

        #offline winadresář
        [string] $offwindir,

        #oprava MS Store komponent
        [switch] $store
    )

    Begin
    {
        if((whoami /priv /fo csv | convertfrom-csv | select "Privilege Name")."Privilege Name" -contains "SeImpersonatePrivilege")
        {}
        else
        {
            Write-Error "Tento úkon smí vykonávat pouze správce"
            Start-Process "$PSHOME\powershell.exe" -Verb Runas -ArgumentList "-command 'import-module AdminTools'"
        }
        if($scanfile -and ($path -eq ''))
        {
            Write-Error 'Není uvedená cesta k ověřovanému souboru'
            Pause
        }elseif($verifyfile -and ($path -eq ''))
        {
            Write-Error 'Není uvedená cesta k ověřovanému souboru'
            Pause
        }elseif($offline -and (($path -eq '') -or ($offbootdir -eq '') -or ($offwindir -eq '')))
        {
            Write-Error 'Není uvedená cesta k některému z offline adresářů'
            Pause  
        }
    }
    Process
    {
        if($scannow)
        {
            $prikaz = 'sfc /scannow'
            Invoke-Expression -Command $prikaz
        }
        elseif ($verifyonly)
        {
           $prikaz = 'sfc /verifyonly' 
           Invoke-Expression -Command $prikaz
        }
        elseif ($scanfile)
        {
            $prikaz = 'sfc /scanfile=' + $path
            Invoke-Expression -Command $prikaz
        }
        elseif($verifyfile)
        {
            $prikaz = 'sfc /VERIFYFILE=' + $path
            Invoke-Expression -Command $prikaz
        }
        elseif($offline)
        {
            $prikaz = 'sfc /scanfile=' + $path + '/OFFBOOTDIR=' + $offbootdir + '/OFFWINDIR=' + $offwindir
            Invoke-Expression -Command $prikaz
        }elseif($store)
        {
            $prikaz = 'DISM /Online /cleanup-image /ScanHealth'
            Invoke-Expression -Command $prikaz
            $prikaz = 'dism /online /cleanup-image /restorehealth'
            Invoke-Expression -Command $prikaz
        }
    }
    End
    {
    }
}

Na kódu výše je vidět, že některé části šablony jsem nevyužil a tudíž jsem je smazal. Výhodou využití snipetu je, že člověk při psaní nezapomene na žádnou část včetně nápovědy, která je opravdu důležitá.

Tvorba vlastního snipetu

PowerShell ISE není omezeno pouze na výchozí sadu snipetů, ale každý člověk si může vytvořit vlastní snipety. Jde o dokumenty ve formátu ps1xml. K vytvoření slouží příkaz New-IseSnippet a vlastní šablona (tělo snpetu) se vkládá jako text. Dále uvádím 2 příklady, kterými jsem si rozšířil své ISE, první generuje blok nápovědy k funkci (protože si často píši tělo funkce ručně bez snipetu)

New-IseSnippet -Title Comment-BasedHelp -Description "A template for comment-based help." -Text "<#
.SYNOPSIS
.DESCRIPTION
.PARAMETER  <Parameter-Name>
.INPUTS
.OUTPUTS
.EXAMPLE
.LINK
.NOTE
#>" -Force

Možnost Force říká, že má dojít k přepisu již existujícího snipetu se stejným jménem, tímto parametrem se dosahuje aktualizací (oprav) vlastních snipetů. Druhý příklad prak tvoří šablonu pro vložená povinného parametru funkce či skriptu.

$M = @'
Param
(
  [parameter(Mandatory=$true,ValueFromPipelineByPropertyName=$true,Position=<pozice>)]
  [<type>]
  $<ParameterName>
)
'@
New-ISESnippet -Text $M -Title MandatoryParameter -Description "Adds a mandatory function parameter." -Force

Import Snipetů

Snipety je možné sdílet s kolegy, nebo mezi více zařízeními pomocí sdílené složky, nebe vyměnitelného média. Bohužl takto dostupné snipety není možné hned využívat, ale musí dojít k jejich importu, který se děje pomocí příkazu Import-IseSnippet viz příkaz níže:

Import-IseSnippet -Path \\Server01\Public\Snippets -Recurse

Alternativou je snipety importovat pomocí správy souborů. (takto nelze snipety importovat ze snipetových modulů). Ze zdíleného média zkopírujeme požadované snipety (soubory formátu ps1xml) do: %userprofile%\Documents\WindowsPowerShell\Snippets
Takto přidané snipety jsou k dispozici až po novém spuštění ISE.

Podrobnější informace o snipetech najdete v dokumentaci Na závěr prozradím, že snipety není možné využívat ve VS Code a PowerShell studio má vlastní sadu obdobných možností.

Posted in: Windows server

GLVK klíče Windows serveru

Dané klíče lze použít v kombinaci s aktivací systému pomocí KMS

Windows server 2019

Operační systémKlíč
Windows Server 2019 DatacenterWMDGN-G9PQG-XVVXX-R3X43-63DFG
Windows Server 2019 StandardN69G4-B89J2-4G8F4-WWYCC-J464C
Windows Server 2019 EssentialsWVDHN-86M7X-466P6-VHXV7-YY726

Windows server 2016

Operační systémKlíč
Windows Server 2016 DatacenterCB7KF-BWN84-R7R2Y-793K2-8XDDG
Windows Server 2016 StandardWC2BQ-8NRM3-FDDYY-2BFGV-KHKQY
Windows Server 2016 EssentialsJCKRF-N37P4-C2D82-9YXRT-4M63B

Windows server 2012 R2

Operační systémKlíč
Windows Server 2012 R2 Server StandardD2N9P-3P6X9-2R39C-7RTCD-MDVJX
Windows Server 2012 R2 DatacenterW3GGN-FT8W3-Y4M27-J84CP-Q3VJ9
Windows Server 2012 R2 EssentialsKNC87-3J2TX-XB4WP-VCPJV-M4FWM

Windows server 2012

Operační systémKlíč
Windows Server 2012BN3D2-R7TKB-3YPBD-8DRP2-27GG4
Windows Server 2012 N8N2M2-HWPGY-7PGT9-HGDD8-GVGGY
Windows Server 2012 Single Language2WN2H-YGCQR-KFX6K-CD6TF-84YXQ
Windows Server 2012 Country Specific4K36P-JN4VD-GDC6V-KDT89-DYFKP
Windows Server 2012 Server StandardXC9B7-NBPP2-83J2H-RHMBY-92BT4
Windows Server 2012 MultiPoint StandardHM7DN-YVMH3-46JC3-XYTG7-CYQJJ
Windows Server 2012 MultiPoint PremiumXNH6W-2V9GX-RGJ4K-Y8X6F-QGJ2G
Windows Server 2012 Datacenter48HP8-DN98B-MYWDG-T2DCC-8W83P

Windows server 2008 R2

Operační systémKlíč
Windows Server 2008 R2 Web6TPJF-RBVHG-WBW2R-86QPH-6RTM4
Windows Server 2008 R2 HPC editionTT8MH-CG224-D3D7Q-498W2-9QCTX
Windows Server 2008 R2 StandardYC6KT-GKW9T-YTKYR-T4X34-R7VHC
Windows Server 2008 R2 Enterprise489J6-VHDMP-X63PK-3K798-CPX3Y
Windows Server 2008 R2 Datacenter74YFP-3QFB3-KQT8W-PMXWJ-7M648
Windows Server 2008 R2 for Itanium-based SystemsGT63C-RJFQ3-4GMB6-BRFB9-CB83V

Windows server 2008

Operační systémKlíč
Windows Web Server 2008WYR28-R7TFJ-3X2YQ-YCY4H-M249D
Windows Server 2008 StandardTM24T-X9RMF-VWXK6-X8JC9-BFGM2
Windows Server 2008 Standard without Hyper-VW7VD6-7JFBR-RX26B-YKQ3Y-6FFFJ
Windows Server 2008 EnterpriseYQGMW-MPWTJ-34KDK-48M3W-X4Q6V
Windows Server 2008 Enterprise without Hyper-V39BXF-X8Q23-P2WWT-38T2F-G3FPG
Windows Server 2008 HPCRCTX3-KWVHP-BR6TB-RB6DM-6X7HP
Windows Server 2008 Datacenter7M67G-PC374-GR742-YH8V4-TCBY3
Windows Server 2008 Datacenter without Hyper-V22XQ2-VRXRG-P8D42-K34TD-G3QQC
Windows Server 2008 for Itanium-Based Systems4DWFP-JF3DJ-B7DTH-78FJB-PDRHK
Back to Top