Pokud se Vám stává, že Váš server havaruje opakovaně z důvodu chyby paměťové stránky, nebo paměťové stránky kernel-modu doporučuji zkontrolovat následující registr:
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
Kde je klíč DisablePagingExecutive, který řeší, zda smí být paměťové stránky příslušející kernel-modu nebo ovladačům odloženy na disk v případě potřeby.
Pokud máte v klíči DisablePagingExecutive: 0, pak smí být data odložena nadisk.
pokud máte v klíči DisablePagingExecutive: 1, pak jsou data za všech okolností držena v paměti RAM.
Rubrika: Windows server
PowerShell script pro monitoring záloh a obnovu ze zálohy
Write-Host „Práce se zálohou serveru“;
Write-Host „“;
Write-Host „Menu:“ -ForegroundColor Green;
$volba;
Write-Host „1: Aktuální stav běžící zálohy“;
Write-Host „2: Výpis dostupných záloh“;
Write-Host „3: Výpis položek obsažených v záloze“;
Write-Host „4: Obnova souborů a složek do původního umístění“;
Write-Host „5: Obnova souborů a složek do vlastního umístění“;
Write-Host „6: Obnova celé jednotky“;
Write-Host „7: Obnova registru“;
Write-Host „8: Obnova systémového stavu“;
$volba = Read-Host -Prompt „Zadejte číslo své volby“;
function status()
{
Write-Host „Vypisuji stav běžící zálohy“ -ForegroundColor Green;
wbadmin get status
Write-Host „Stav záloh za poseldní týden“ -ForegroundColor Green;
Get-WBJob -Previous 7
}
function dostupne()
{
$cil = Read-Host -Prompt „Zadej cíl zálohy (např.: H:): „;
Write-Host „Vypisuji dostupné zálohy“ -ForegroundColor Green;
wbadmin get versions -backupTarget:$cil
}
function polozky()
{
$ID = Read-Host -Prompt „Zadej ID zálohy (např.: 01/27/2021-15:01): „;
Write-Host „Vypisuji položky zálohy“ -ForegroundColor Green;
wbadmin get items -version:$ID;
}
function souboryP()
{
Write-Host „Obnova soborů a složek“ -ForegroundColor Green;
$slozka = Read-Host -Prompt „Obnovuješ složku? (A/N): „;
$ID = Read-Host -Prompt „Zadej ID zálohy (např.: 01/27/2021-15:01): „;
$polozka = Read-Host -Prompt „Zadej položku k obnově (např.: E\Fotoalbum\MTZ)“;
if($slozka -eq „A“ -or $slozka -eq „a“)
{
wbadmin start recovery -version:$ID -itemType:File -items:$polozka -recursive;
}
else
{
wbadmin start recovery -version:$ID -itemType:File -items:$polozka;
}
}
function souboryS()
{
Write-Host „Obnova soborů a složek“ -ForegroundColor Green;
$slozka = Read-Host -Prompt „Obnovuješ složku? (A/N): „;
$ID = Read-Host -Prompt „Zadej ID zálohy (např.: 01/27/2021-15:01): „;
$polozka = Read-Host -Prompt „Zadej položku k obnově (např.: E\Fotoalbum\MTZ)“;
$cil = Read-Host -Prompt „Zadej cíl obnovy (např.: H\Foto\mtz)“
if($slozka -eq „A“ -or $slozka -eq „a“)
{
wbadmin start recovery -version:$ID -itemType:File -items:$polozka -recursive -recoverytarget:$cil;
}
else
{
wbadmin start recovery -version:$ID -itemType:File -items:$polozka -recoverytarget:$cil;
}
}
function jednotka()
{
Write-Host „Obnova jednotky“ -ForegroundColor Green;
$ID = Read-Host -Prompt „Zadej ID zálohy (např.: 01/27/2021-15:01): „;
$jednotka = Read-Host -Prompt „Zadej identifikátor jednotky (např.: \\?\Volume{cc566d14-44a0-11d9-9d93-806e6f6e6963}\“
wbadmin start recovery -version:$ID -itemType:Volume -items:$jednotka;
}
function registr()
{
Write-Host „Obnova registru přibyde v novější verzi“ -ForegroundColor red;
}
function system()
{
Write-Host „Obnova stavu systému“ -ForegroundColor Green;
$ID = Read-Host -Prompt „Zadej ID zálohy (např.: 01/27/2021-15:01): „;
wbadmin start systemstaterecovery -version:$ID;
}
switch($volba)
{
1{status}
2{dostupne}
3{polozky}
4{souboryP}
5{souboryS}
6{jednotka}
7{registr}
8{system}
default{Write-Host „Chybně zadaná volba, spusť skript znovu!“-ForegroundColor Red}
}
Jak povolit WinRM prostřednictvím zásad skupiny
Tato demonstrace používá systém Windows Server 2012R2 jako řadič domény a Windows 10 jako cílený klientský počítač. Ve scénáři je klientský počítač připojen k doméně s názvem asaputra.com a je umístěn pod cestu OU „WorkstationsW10“. Zásadou může být nový objekt zásad skupiny nebo použití stávajícího objektu zásad skupiny v konzole pro správu zásad skupiny v řadiči domény. V tomto příkladu je vytvořen nový objekt zásad skupiny s názvem „Globální správa“
Kliknutím pravým tlačítkem myši otevřete okno editoru objektu zásady a zvolte „Upravit“. První věc, kterou je třeba udělat, je říct cílovému počítači, aby povolil službu WinRM. Přejděte do Konfigurace počítače> Předvolby> Nastavení ovládacího panelu> Služby, potom klikněte pravým tlačítkem na prázdné místo a zvolte Nový> Servis
Klepnutím na tlačítko OK uložíte parametry, ale zatím nezavírejte editor zásad.
Další, stále na stejném objektu politiky, dalšívěc, kterou je třeba nakonfigurovat, je seznam IP adres, které mají povolen přístup ke vzdálené správě v cílovém počítači. Přejděte na Konfigurace počítače> Zásady> Šablony pro správu> Součásti systému Windows> Vzdálená správa systému Windows (WinRM)> Služby WinRM. Poté dvakrát klikněte na „Povolit vzdálenou správu serveru pomocí WinRM“ a změňte nastavení následovně:
Z hlediska bezpečnosti je nejlepší omezit rozsah adres IP co nejméně. Pro tento příklad je však v poli uvedena hvězdička (*), která umožňuje vzdálený přístup z libovolné adresy IP. Klepnutím na tlačítko OK uložte nastavení a znovu nezavírejte editor zásad.
Poslední věcí, kterou je třeba udělat, je vytvoření nového pravidlapro Firewall na cílovém klientském počítači. Přejděte do Konfigurace počítače> Zásady> Nastavení zabezpečení> Brána firewall systému Windows a pokročilé zabezpečení> Brána firewall systému Windows a pokročilé zabezpečení a potom klepněte pravým tlačítkem myši na Pravidla příchozí> Nové pravidlo
Vyberte Vzdálenou správu systému Windows z předdefinované sady pravidel, jak je uvedeno níže, klepněte na tlačítko Další
Zaškrtněte políčko pouze v profilu domény a soukromí, klikněte na tlačítko Další.Nastavte akci na Povolit připojení.
Klepnutím na tlačítko Dokončit uložte konfiguraci a nyní můžete okno editoru zásad zavřít.
Protože se jedná o počítačovou zásadu, je třeba ji použít na OU, kde je umístěn počítač. Stejně jako v tomto scénáři, jak to vypadá, když je zásada použita:
Po aktualizaci zásad skupiny se všechna tato 3 nakonfigurovaná nastavení projeví v klientském počítači. K ověření nám poslouží příkaz: Test-WsMan [Target Hostname / IP address]
například: Test-WsMan ucpc01
příklad 2: Test-WsMan 192.168.1.64
Pokud příkaz skončí chybou, je potřeba zkontrolovat, zda běží služba WinRM a zda je povolena na FireWall. Individuální řešením na daném PC pak může být příkaz: winrm qc -q
Změna pozadí plochy Windows pomocí zásad skupiny
V konzole Správa zásad skupiny rozbalte doménovou strukturu a doménu, klikneme pravým tlačítkem na objekty zásad skupiny a vyberte „Nový“
Zadáme název nového objektu politiky. V tomto příkladu je název zásady „Zásady tapety“
Nově vytvořená zásada bude uvedena v seznamu objektů Zásady skupiny. Klikneme na něj pravým tlačítkem a vybereme „Upravit“
Zobrazí se okno editoru. V levém podokně přejděte na Konfigurace uživatele> Šablony pro správu> Plocha> Plocha. V pravém podokně poklepeme na nastavení Tapety na plochu.
Změníme možnost na Povoleno a poté zadejte umístění tapety a styl tapety. V tomto příkladu určujeme místní cestu, protože obrazový soubor na pozadí tapety plochy je uložen na místní jednotce serveru Domain Controller a styl tapety, který jsme použili, je „Výplň“.
Po konfiguraci klikneme na OK a zavřete okno editoru.
V okně konzoly Správa zásad skupiny klikneme pravým tlačítkem na OU „Uzivatele“ a vybereme „Propojit existující GPO“
Vybereme zásady tapety a klikněte na OK.
Vše potvrdíme OK a nyní se s následující aktualizací zásad (restart déle jak 4 hodiny po spuštění, první přihlášení uživatele na daný PC v daném dni, čí příkaze gpupdate/force) nastaví uživatelům zařazným do OU „Uživatelé“ nová tapeta.
Kontrola spuštění PoweShellu v řežimu správce
Při správě serverů není nic vzácného, že PowerShell je potřeba spustit v privilegovaném módu. Určitě všichni správci znají fintu pravého tlačítka na skript a volby Run with PowerShell, ale jak ve sktirptu zkontrolovat, zda byl spuštěn s oprávněním správce? Zkuste následující větvení, které místo pouhých výpisů rolí obohaťte o svůj kód.
if((whoami /priv /fo csv | convertfrom-csv | select "Privilege Name")."Privilege Name" -contains "SeImpersonatePrivilege")
{"admin"}
else
{"user"}
Tento skript využívá toho, že účet správce má dva módy, jeden privilegovaný (obsahuje SID skupiuny Administrators) a jeden běžný (neobsahuje SID skupiny Administrators). Když i správce spustí aplikaci pouhým poklikáním, neběží v privilegovaném módu (až na vyjímky jako je Plánovač, Prohlížeč událostí apod.). Také PowerShell jde pustit v obou režimech a pokud výslovně správce nespustí PowerShell v řežimu správce, má stejná oprávnění jako běžný uživatel. Zobrazit jednotlivá oprávnění daného režimu PowerShellu jde příkazem:
whoami /priv
Více se pak dočtete v dokumentaci Microsoftru v sekci věnované uživatelským účtům.
Ruční řízení synchronizace Azure AD Connect
Dnes Vám ukáži primitivní skript, kterým je možné zjisti stav synchronizace a případně ručně spustit synchronizaci AD s Azure AD.
<#
Skript vypíše stav synchronizace Azure ADconnect,
provede pravidelnou nebo celou synchronizaci.
Skript musí běžet na PC, kde je instalován Azure ADconnect.
#>
$volba = 0
Write-Host "volba 1: Zjištěnís tavu synchronizace"
Write-Host "volba 2: Spustí synchrnizaci"
Write-Host "volba 3: Spustí úplnou (iniciální) synchronizaci"
switch($volba)
{
1{Get-ADSyncScheduler}
2{Start-ADSyncSyncCycle -PolicyType Delta}
3{Start-ADSyncSyncCycle -PolicyType Initial}
}
Výpis PC, která si rok neměnila heslo
Jak všichni správci AD ví, i počítače dodržují ze zdvořilosti politiku na změnu hesla. Reálně by to ovšem dělat nemusely, protože heslo počítače má 128 míst, takže jeho prolomení se tím značně komplikuje. Vyjímaje doménových řadičů si ovšem počítače mění heslo v souladu s default domain policy. Pokud si PC např. rok nezměnil heslo, patrně je vyřazený, nebo opravdu nebyl v dosahu AD. Následující skript vyhledá taková PC a dokáže je smazat, ale musíte si dát pozor na doménové řadiče.
$Date = ((Get-Date).AddDays(-365))
$DC2 = Read-host -promt "Zadejte druhý řád názvu domény: "
$DC1 = Read-host -promt "Zadejte první řád názvu domény: "
#Počítače s více jak ro neměněným heslem
Get-ADComputer -Filter 'PasswordLastSet -le $Date' -SearchBase "CN=Computers,DC= $DC2,DC=$DC1" -Properties PasswordLastSet | where Enabled -eq $true | FT Name,PasswordLastSet
#zakáže PC s rok neměněnýn heslem
$zakazat = 0
$zakazat = Read-Host -Prompt "Pro zakázání všech vypsaných účtů zvolte zadejte 1 jinak 0: "
if($zakazat -eq 1)
{
Disable-ADAccount -Identity (Get-ADComputer -Filter 'PasswordLastSet -le $Date' -Properties PasswordLastSet | where Enabled -eq $true)
Write-Host "Počítače byly zakázány"
}
else
{
Write-Host "Žádný úet nebyl zakázán"
}
Centrální zastavení / spuštění služby Windows Update
Všichni jsme se jako admini setkali se situací, kdy potřebujeme rychle zastavit aktulizace Windows v celé síti, ať z důvodu chybné aktualizace, či z jiného důvodu.
Dnes Vám ukáži, jak aktualizace vypnout pomocí PowerShellu, ale nezapomeňme, že je nutné Windows update po nezbytné době opět zapnout, protože podporované jsou jen plně aktualizované systémy 😉
<#
Skript zastaví službu Windows Update na všech PC v doméně.
Autor nenese žádnou odpovědnost za případné škody,
uživatel je povinen před spuštěním se seznámit se skriptem!
Požadavky:
- PowerShell verze 5 a novější
- Admin oprávnění pro všechna PC
- ExcutionPolicy set to bypass
Petrásek Jan
©2020
#>
Invoke-Command -ComputerName (Get-ADComputer -Filter * | select DNSHostName).DNSHostName -ScriptBlock {
net stop wuauserv;
sc.exe config wuauserv start=disabled
}
Nyní si uvedeme druhý skript, který aktualizace opět zapne:
<#
Skript zastaví službu Windows Update na všech PC v doméně.
Autor nenese žádnou odpovědnost za případné škody,
uživatel je povinen před spuštěním se seznámit se skriptem!
Požadavky:
- PowerShell verze 5 a novější
- Admin oprávnění pro všechna PC
- ExcutionPolicy set to bypass
Petrásek Jan
©2020
#>
Invoke-Command -ComputerName (Get-ADComputer -Filter * -SearchBase "CN=Computers,DC=arpida,DC=local" | select DNSHostName).DNSHostName -ScriptBlock {
net start wuauserv;
sc.exe config wuauserv start=auto
}
Vyhledávání zařízení v Azure AD dle uživatele bez Intune
Všichni správici firemních sítí známe situaci, kdy potřebujeme vyhledat zařízení, které jsme vyloučili ze sítě, abychom jeho účat zakázali. Pokud máme souběžně, ať synchronizované, či ne, lokální AD a Azure AD, je vhodné vyřadit soukromá zařízení uživatele, který opustil firmu, nebo takové zařízení, které bylo uživatli zcizeno, či jej uživatel ztratil nebo nahradil. Následující skript řeší problém, který není řešitelní v Azure AD online konzoli, protože zatím (začátek června 2020) nelze podle vlastníka zařízení filtrovat. V článku poskytnutý skrit do dokáže a dokáže rovněž rovnou soukromá zařízení uživatele zakázat všechna jedním příkazem.
Pokud by jste chtěli takto zakázat např. firemní notebook, budete muset vynechat filtrování, které ze všech zařízení eliminuje právě ta, která jsou součástí našeho lokálního AD.
<#
Skript vypíše jména všech nedoménových zařízení, která má zadaný uživatel registrovaná v Azure AD.
Volitelně dokáže zakázat všechna zařízení, která má daný uživatel registrované a nejsou doménová.
Autor nenese žádnou odpovědnost za případné škody, uživatel je povinen před spuštěním se seznámit se
skriptem!
Požadavky:
- PowerShell verze 5 a novější
- Admin oprávnění pro přístup k Azure AD
- ExcutionPolicy set to RemoteSigned
Petrásek Jan
©2020
#>
#kontrola přítomnosti modulu, jeho případná aktulizace či doinstalace
if((get-module -Name AzureAD) -eq $null)
{
Install-Module -Name AzureAD -force
import-module AzureAD
}else
{
if((get-module -Name AzureAD | select Version) -le 2.0.2.76)
{
Update-Module AzureAD
}
import-module AzureAD
}
#přihlášení k Azure AD a MSonline service
$Credential = Get-Credential
Connect-AzureAD -Credential
$Credential
Connect-MsolService -Credential
$Credential
#načtení vstupních inforamce
$domena = (Get-ADComputer -Filter * | select Name)
$PC = Read-Host -Prompt "Zadejte email uživatele: "
#nalezení zařízení registrovaných uživatelem
$zarizeni = Get-MsolDevice -RegisteredOwnerUpn $PC | select DisplayName
#vybrání pouze nedoménových zařízení
$zobraz
foreach($DisplayName in $zarizeni)
{
foreach($Name in $domena)
{
if($DisplayName -ne $Name)
{
if($DisplayName -ne $zobraz)
{
$zobraz = $DisplayName
}
}
}
}
#$zobraz | Format-Table - kontrolní zobrazení
#finální zobrazení informace o zařízeních
Get-MsolDevice -All | where DisplayName -like $zobraz.DisplayName | select DisplayName, DeviceObjectVersion, DeviceOsType, DeviceOsVersion, LastDirSyncTime
#možnost zařízení zakázat
$volba = 0
Write-Host 'Pro zakázání zařízení zadejte 1'
Write-Host 'Pro ponechání povoleného zařízení zadejte 0'
$volba = Read-Host -Prompt 'Chcete zařízení zakázat? (1/0): '
$zakaz = Get-MsolDevice -All | where DisplayName -like $zobraz.DisplayName | select DeviceId
if($volba -eq 1)
{
foreach($DeviceId in $zakaz)
{
Disable-MsolDevice -DeviceId $zakaz.DeviceId -Force
}
Write-Host 'Zařízení byla zakázána'
}
else
{
Write-Host 'Žádná změna na zařízeních nebyla provedena'
}
GLVK klíče Windows
Dané klíče lze použít v kombinaci s aktivací systému pomocí KMS
Windows server 2019
Operační systém | Klíč |
---|---|
Windows Server 2019 Datacenter | WMDGN-G9PQG-XVVXX-R3X43-63DFG |
Windows Server 2019 Standard | N69G4-B89J2-4G8F4-WWYCC-J464C |
Windows Server 2019 Essentials | WVDHN-86M7X-466P6-VHXV7-YY726 |
Windows server 2016
Operační systém | Klíč |
---|---|
Windows Server 2016 Datacenter | CB7KF-BWN84-R7R2Y-793K2-8XDDG |
Windows Server 2016 Standard | WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY |
Windows Server 2016 Essentials | JCKRF-N37P4-C2D82-9YXRT-4M63B |
Windows server 2012 R2
Operační systém | Klíč |
---|---|
Windows Server 2012 R2 Server Standard | D2N9P-3P6X9-2R39C-7RTCD-MDVJX |
Windows Server 2012 R2 Datacenter | W3GGN-FT8W3-Y4M27-J84CP-Q3VJ9 |
Windows Server 2012 R2 Essentials | KNC87-3J2TX-XB4WP-VCPJV-M4FWM |
Windows server 2012
Operační systém | Klíč |
---|---|
Windows Server 2012 | BN3D2-R7TKB-3YPBD-8DRP2-27GG4 |
Windows Server 2012 N | 8N2M2-HWPGY-7PGT9-HGDD8-GVGGY |
Windows Server 2012 Single Language | 2WN2H-YGCQR-KFX6K-CD6TF-84YXQ |
Windows Server 2012 Country Specific | 4K36P-JN4VD-GDC6V-KDT89-DYFKP |
Windows Server 2012 Server Standard | XC9B7-NBPP2-83J2H-RHMBY-92BT4 |
Windows Server 2012 MultiPoint Standard | HM7DN-YVMH3-46JC3-XYTG7-CYQJJ |
Windows Server 2012 MultiPoint Premium | XNH6W-2V9GX-RGJ4K-Y8X6F-QGJ2G |
Windows Server 2012 Datacenter | 48HP8-DN98B-MYWDG-T2DCC-8W83P |
Windows server 2008 R2
Operační systém | Klíč |
---|---|
Windows Server 2008 R2 Web | 6TPJF-RBVHG-WBW2R-86QPH-6RTM4 |
Windows Server 2008 R2 HPC edition | TT8MH-CG224-D3D7Q-498W2-9QCTX |
Windows Server 2008 R2 Standard | YC6KT-GKW9T-YTKYR-T4X34-R7VHC |
Windows Server 2008 R2 Enterprise | 489J6-VHDMP-X63PK-3K798-CPX3Y |
Windows Server 2008 R2 Datacenter | 74YFP-3QFB3-KQT8W-PMXWJ-7M648 |
Windows Server 2008 R2 for Itanium-based Systems | GT63C-RJFQ3-4GMB6-BRFB9-CB83V |
Windows server 2008
Operační systém | Klíč |
---|---|
Windows Web Server 2008 | WYR28-R7TFJ-3X2YQ-YCY4H-M249D |
Windows Server 2008 Standard | TM24T-X9RMF-VWXK6-X8JC9-BFGM2 |
Windows Server 2008 Standard without Hyper-V | W7VD6-7JFBR-RX26B-YKQ3Y-6FFFJ |
Windows Server 2008 Enterprise | YQGMW-MPWTJ-34KDK-48M3W-X4Q6V |
Windows Server 2008 Enterprise without Hyper-V | 39BXF-X8Q23-P2WWT-38T2F-G3FPG |
Windows Server 2008 HPC | RCTX3-KWVHP-BR6TB-RB6DM-6X7HP |
Windows Server 2008 Datacenter | 7M67G-PC374-GR742-YH8V4-TCBY3 |
Windows Server 2008 Datacenter without Hyper-V | 22XQ2-VRXRG-P8D42-K34TD-G3QQC |
Windows Server 2008 for Itanium-Based Systems | 4DWFP-JF3DJ-B7DTH-78FJB-PDRHK |
Windows 10
Operační systém | Klíč |
---|---|
Windows 10 Pro | W269N-WFGWX-YVC9B-4J6C9-T83GX |
Windows 10 Pro N | MH37W-N47XK-V7XM9-C7227-GCQG9 |
Windows 10 Pro for Workstations | NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J |
Windows 10 Pro for Workstations N | 9FNHH-K3HBT-3W4TD-6383H-6XYWF |
Windows 10 Pro Education | 6TP4R-GNPTD-KYYHQ-7B7DP-J447Y |
Windows 10 Pro Education N | YVWGF-BXNMC-HTQYQ-CPQ99-66QFC |
Windows 10 Education | NW6C2-QMPVW-D7KKK-3GKT6-VCFB2 |
Windows 10 Education N | 2WH4N-8QGBV-H22JP-CT43Q-MDWWJ |
Windows 10 Enterprise | NPPR9-FWDCX-D2C8J-H872K-2YT43 |
Windows 10 Enterprise N | DPH2V-TTNVB-4X9Q3-TJR4H-KHJW4 |
Windows 10 Enterprise G | YYVX9-NTFWV-6MDM3-9PT4T-4M68B |
Windows 10 Enterprise G N | 44RPN-FTY23-9VTTB-MP9BX-T84FV |
Windows 8.1
Operační systém | Klíč |
---|---|
Windows 8.1 Pro | GCRJD-8NW9H-F2CDX-CCM8D-9D6T9 |
Windows 8.1 Pro N | HMCNV-VVBFX-7HMBH-CTY9B-B4FXY |
Windows 8.1 Enterprise | MHF9N-XY6XB-WVXMC-BTDCT-MKKG7 |
Windows 8.1 Enterprise N | TT4HM-HN7YT-62K67-RGRQJ-JFFXW |
Windows 8
Operační systém | Klíč |
---|---|
Windows 8 Pro | NG4HW-VH26C-733KW-K6F98-J8CK4 |
Windows 8 Pro N | XCVCF-2NXM9-723PB-MHCB7-2RYQQ |
Windows 8 Enterprise | 32JNW-9KQ84-P47T8-D8GGY-CWCK7 |
Windows 8 Enterprise N | JMNMF-RHW7P-DMY6X-RF3DR-X2BQT |
Windows 7
Operační systém | Klíč |
---|---|
Windows 7 Professional | FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4 |
Windows 7 Professional N | MRPKT-YTG23-K7D7T-X2JMM-QY7MG |
Windows 7 Professional E | W82YF-2Q76Y-63HXB-FGJG9-GF7QX |
Windows 7 Enterprise | 33PXH-7Y6KF-2VJC9-XBBR8-HVTHH |
Windows 7 Enterprise N | YDRBP-3D83W-TY26F-D46B2-XCKRJ |
Windows 7 Enterprise E | C29WB-22CC8-VJ326-GHFJW-H9DH4 |