<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.technet.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Just do I(nformation)T(echnology) : Windows Server</title><link>http://blogs.technet.com/mpriem/archive/tags/Windows+Server/default.aspx</link><description>Tags: Windows Server</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>401.1 Authentication failed bij browsen naar lokale IIS5 en IIS6 websites</title><link>http://blogs.technet.com/mpriem/archive/2009/04/17/401-1-authentication-failed-bij-browsen-naar-lokale-iis5-en-iis6-websites.aspx</link><pubDate>Fri, 17 Apr 2009 10:33:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3227532</guid><dc:creator>mpriem</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/mpriem/comments/3227532.aspx</comments><wfw:commentRss>http://blogs.technet.com/mpriem/commentrss.aspx?PostID=3227532</wfw:commentRss><description>&lt;P&gt;Sinds kort komen er steeds meer incidenten binnen van problemen bij het browsen naar websites op de lokale machine waar gebruik gemaakt wordt van windows integrated authenticatio. Dit komt door wijzigingen in het NTLM Authenticatie mechanisme binnen HTTPWebRequest. In voorgaande versies was het mogelijk om een reflection attack uit te voeren, waarbij het mogelijk was een systeem zijn eigen challenge via een tweede connectie voor te schotelen, waardoor de aanvaller een geauthenticeerde connectie overhoudt . Dit is verholpen door standaard niet meer toe te staan een challenge die door zichzelf is verstuurd is te authenticeren behalve als het om een challenge voor het loopback adres is (127.0.0.1). &lt;/P&gt;
&lt;P&gt;Als je nu dus browsed naar een pagina, gebruik makend van een hostheader, krijg je een mooie &lt;STRONG&gt;HTTP 401.1 - Unauthorized: Logon Failed&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;Er zijn twee manieren om dit te omzeilen.&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;Specifieer hostnames die gekoppeld zijn aan het loopback adres&lt;/STRONG&gt;: &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Start de registry editor en browse naar de volgende key: &lt;STRONG&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0&lt;/STRONG&gt; &lt;/LI&gt;
&lt;LI&gt;Maak een nieuw &lt;STRONG&gt;Multi-String Value&lt;/STRONG&gt; aan met de naam &lt;STRONG&gt;BackConnectionHostNames&lt;/STRONG&gt;. &lt;/LI&gt;
&lt;LI&gt;Specifieer alle hostnames die gekoppeld moeten worden aan het loopback adres. &lt;/LI&gt;
&lt;LI&gt;Stop de registry editor en herstart IISAdmin service. &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;STRONG&gt;Disable de loopback check &lt;/STRONG&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Start de registry editor en browse naar de volgende key: &lt;STRONG&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa&lt;/STRONG&gt; &lt;/LI&gt;
&lt;LI&gt;Maak een nieuw &lt;STRONG&gt;DWORD Value&lt;/STRONG&gt; aan met de naam &lt;STRONG&gt;DisableLoopbackCheck&lt;/STRONG&gt;. &lt;/LI&gt;
&lt;LI&gt;Geef het DWORD een waarde van 1. &lt;/LI&gt;
&lt;LI&gt;Stop de registry editor en herstart de machine. &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Het moge duidelijk zijn dat de eerste optie de voorkeur geniet. &lt;/P&gt;
&lt;P&gt;Voor meer informatie: &lt;/P&gt;
&lt;P&gt;&lt;A href="http://support.microsoft.com/kb/896861" mce_href="http://support.microsoft.com/kb/896861"&gt;http://support.microsoft.com/kb/896861&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/cc982052.aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc982052.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc982052.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Dit probleem komt vaak voor in Sharepoint omgevingen waar de indexer gebruikt wordt om de lokale machine te crawlen. Ook wanneer beheerders beheer doen op de lokale machine treedt dit op.&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3227532" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/mpriem/archive/tags/Windows+Server/default.aspx">Windows Server</category><category domain="http://blogs.technet.com/mpriem/archive/tags/MOSS/default.aspx">MOSS</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Sharepoint/default.aspx">Sharepoint</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Portal+Server+2003/default.aspx">Portal Server 2003</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Troubleshooting/default.aspx">Troubleshooting</category></item><item><title>Debugging voor dummies</title><link>http://blogs.technet.com/mpriem/archive/2009/03/19/debugging-voor-dummies.aspx</link><pubDate>Thu, 19 Mar 2009 15:10:59 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3215160</guid><dc:creator>mpriem</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/mpriem/comments/3215160.aspx</comments><wfw:commentRss>http://blogs.technet.com/mpriem/commentrss.aspx?PostID=3215160</wfw:commentRss><description>&lt;p&gt;Een groot gedeelte van de supportcalls bij premier support heeft te maken met crashes, memory leaks en andere van die voor velen ongrijpbare problemen. In veel gevallen is de oorzaak echter redelijk simpel te achterhalen, en zou je een support call en veel tijd en ergernis kunnen besparen. Het probleem is dat velen niet weten dat je geen die-hard debugger hoeft te zijn om een memory dump te analyseren (ok. Ok. Eerste stap daartoe &lt;span style="font-family:Wingdings"&gt;J&lt;/span&gt;.), of een memory leak te traceren. 
&lt;/p&gt;&lt;p&gt;Je hebt alleen de juiste tools nodig een klein duwtje in de goede richting. Die ga ik je vandaag geven &lt;span style="font-family:Wingdings"&gt;J&lt;/span&gt;
	&lt;/p&gt;&lt;h2&gt;Tools
&lt;/h2&gt;&lt;p&gt;Er zijn een aantal tools die in mijn optiek niet mogen ontbreken in de gereedschapskist van een admin. Dat zijn:
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Windows debugging tools: &lt;a href="http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx"&gt;http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx&lt;/a&gt;
		&lt;/li&gt;&lt;li&gt;DebugDiag 1.1: &lt;a href="http://www.microsoft.com/downloadS/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloadS/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&amp;amp;displaylang=en&lt;/a&gt;
		&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;De installatie spreekt voor zich, dus daar ga ik jullie niet mee vervelen, echter voor de debugger die we gaan gebruiken (WinDBG) is het aan te raden een symbolserver te configureren (&lt;a href="http://www.microsoft.com/whdc/DevTools/Debugging/debugstart.mspx"&gt;http://www.microsoft.com/whdc/DevTools/Debugging/debugstart.mspx&lt;/a&gt;) . In principe is dat voor deze eerste stapjes in de wereld van debugging nog niet nodig, maar ik zou het niet laten, daar het je toch net even wat meer inzicht geeft in wat er precies gebeurd onder de motorkap. Ik prefereer de Environmental Variable, aangezien deze door veel debugtools automatisch wordt opgepakt.
&lt;/p&gt;&lt;h2&gt;Introductie
&lt;/h2&gt;&lt;p&gt;In deze post ga ik drie type scenario's behandelen. Dat zijn: 
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Eerste analyse van een kerneldump, naar aanleiding van een crash/BSOD (Blue-Screen-Of-Death).
&lt;/li&gt;&lt;li&gt;Troubleshooten van usermode crashes.
&lt;/li&gt;&lt;li&gt;Troubleshooten van memorydumps.
&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Voordat we daaraan beginnen zal ik toch een klein stukje theorie moeten behandelen, om een en ander duidelijk te maken.&lt;br/&gt;Moderne CPU architecturen hebben verschillende modi waarin zij opereren. Deze noemen we ook wel Rings (er zijn nog tig andere benamingen). Deze modi stellen een ontwikkelaar in staat bepaalde functionaliteit van de CPU architectuur niet toe te staan voor de code die op dat moment wordt uitgevoerd. Denk hierbij aan toegang tot bepaalde CPU registers of onderdelen van het geheugen. Dit om de stabiliteit en veiligheid van het systeem te waarborgen. In Windows NT besturingssystemen (Alles behalve 3.*, 9* en ME) maken we gebruik van 2 van deze modi, namelijk de modus waarin alles is toegestaan, welke wij 'Kernelmode' noemen (Ring 0) en een modus waarin toegang tot hardwareresources beperkt worden, welke wij 'Usermode' noemen (Ring 3; in x86 en x64 architecturen zijn het er 3 (Ring 1,2,3), maar Windows gebruikt alleen de meest beperkte). De structuur van Windows zorgt ervoor dat eigenlijk alleen code die hoort bij het operating system in Kernelmode mag draaien. Er zijn wat uitzonderingen, waarvan drivers de meest belangrijke zijn.&lt;br/&gt;Code wat in Kernelmode draait heeft dus onbeperkt toegang tot systeemresources, en kan dus ook geheugen structuren veranderen van andere processen, wat kan leiden tot datacorruptie, dataloss en een instabiel systeem. Windows beschermt zich hiertegen door in dergelijke gevallen op de noodknop te drukken en het systeem te stoppen of bugchecken met een BSOD. Wij noemen dit een crash, maar het is eigenlijk Windows die je redt van nog grotere problemen. Windows zal dan op basis van de instellingen wel of niet een dump maken van het kernelgeheugen. Dit heb je niet voor usermode processen.&lt;br/&gt;Code wat in Usermode draait heeft dus beperkte toegang tot systeemresources. Zo heeft het alleen toegang tot geheugenbereik dat het proces toegewezen heeft gekregen en dient het toegang tot hardware aan te vragen bij het operating system. Qua performance lever je hierdoor wel wat in, maar bijkomend voordeel is dat het ene proces niet zo makkelijk een ander proces om zeep kan helpen, laat staan een BSOD kan veroorzaken, en je een verhoogde mate van veiligheid hebt, doordat geheugenstructuren van het ene proces niet uit te lezen zijn door het andere proces.
&lt;/p&gt;&lt;p&gt;Waarom is deze informatie nu belangrijk? 
&lt;/p&gt;&lt;p&gt;Voor deze post om twee redenen: &lt;br/&gt;Enerzijds is het belangrijk om te weten dat een BSOD dus in bijna alle gevallen veroorzaakt wordt door OF een bug in het operating system, OF een driver. &lt;br/&gt;&lt;strong&gt;9 van de 10 keer zal het gaan om een driver.&lt;br/&gt;&lt;/strong&gt;Anderzijds is het belangrijk om te begrijpen dat het analyseren van een usermode crash anders is dan het analyseren van een kernelmode crash. Bij een kernmode crash heb je vaak de beschikking over een volledige dump van het geheugen. Bij usermode crashes, moet je memorydumps zelf generen en verzamelen.
&lt;/p&gt;&lt;h2&gt;Blue Screen of Death – BSOD
&lt;/h2&gt;&lt;p&gt;Wanneer een systeem geplaagd wordt door BSODs is de eerste plaats waar je gaat kijken de memorydump. Ik ben van mening dat elk systeem geconfigureerd moet zijn om een volledige dump te maken, daar in de volledige dump de meeste informatie staat. Je kan met een MiniDump soms ook wel af, maar meestal zal een support engineer vragen om de volledige dump. Ik neem aan dat je jouw systeem niet nogmaals wilt laten crashen met alle gevolgen van dien voor de data en uiteindelijk de business. Opties voor het maken van een memorydump kan je vinden op &lt;a href="http://support.microsoft.com/kb/254649/en-us"&gt;http://support.microsoft.com/kb/254649/en-us&lt;/a&gt;
	&lt;/p&gt;&lt;p&gt;Verder adviseer ik mijn klanten altijd, dat als er een memorydump heeft plaatsgevonden, deze veilig te stellen. Een volgende dump overschrijft deze namelijk. Meerdere dumps is handig daar de oorzaak van de crash niet altijd meteen duidelijk is. Helaas is dit vaak het geval. Het kan namelijk zijn dat de veroorzaker van de crash allang uit het geheugen is verdwenen, voordat het systeem struikelt over het probleem dat deze code veroorzaakt heeft. Door meerdere dumps te analyseren kan je soms correlaties trekken, en zo tot een conclusie komen.
&lt;/p&gt;&lt;p&gt;Goed… We hebben een crash gehad en we hebben een memory dump. What's next??
&lt;/p&gt;&lt;p&gt;We starten WinDBG en openen de memory dump. Deze dump is standaard te vinden op %SystemRoot%\Memory.dmp. Je kan uiteraard de memory dump naar een andere machine kopiëren en hem daar analyseren:
&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/031909_1210_Debuggingvo1.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Nu je de memorydump geopend hebt, zal WinDBG de dump snel analyseren. Dit levert al vaak meteen waardevolle informatie op, zoals je kan zien op de analyse van 1 van mijn recente dumps:
&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/031909_1210_Debuggingvo2.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Consolas"&gt;Probably caused by : rismcx64.sys … &lt;/span&gt;Schijnbaar geeft WinDBG rismcx64.sys de schuld. Een korte blik in mijn drivers, gaf aan dat het om een smartcard driver ging uit 2006. Even een bezoekje aan de Windows Update en de vendor website en voila.. Nieuwe drivers. Sindsdien heb ik die crash nooit meer gehad.
&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/031909_1210_Debuggingvo3.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Nu kan je WinDBG een verbose output laten zien van deze analyse, waar je vaak ook wel wat aan hebt. Dit doe je door &lt;span style="font-family:Consolas"&gt;!analyze –v&lt;/span&gt; uit te voeren. De output laat dan bijvoorbeeld ook de stacktrace zien, die je een idee kan geven, van wat het systeem op dat moment aan het doen was:
&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/031909_1210_Debuggingvo4.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Je leest een stacktrace altijd van onder naar boven. In mijn dump was windows duidelijk bezig met het afhandelen van een IO request richting mijn smartcard device, te zien aan termen als IopXxxControlFile, NTDeviceIoControlFile en andere IO routines. Verder zie je verwijzingen naar Wdf modules wat staat voor Windows Driver Foundation. Deze informatie kan ik zien doordat ik WinDBG geconfigureerd heb om de public symbols van de Microsoft SymbolServer te halen. Zonder symbols ziet de output er anders uit.
&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/031909_1210_Debuggingvo5.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Een hele hoop van de functienamen zijn weggevallen. Hierdoor is het lastig in 1 oogopslag te bepalen of de modules behoren tot het besturingssysteem of niet. Ik kijk altijd even naar de stacktrace. Je kan bijvoorbeeld zien of er nog andere 3rd party modules zijn die rond die tijd acties aan het uitvoeren zijn geweest. Deze kan je dan vervolgens eveneens aan een grondig onderzoek onderwerpen.
&lt;/p&gt;&lt;p&gt;Zo zie je… In een aantal simpele stappen kan je al snel wat zaken uitzoeken en proberen voordat je een case aanmeldt om een BSOD te laten onderzoeken.
&lt;/p&gt;&lt;h2&gt;User mode crash
&lt;/h2&gt;&lt;p&gt;Voor usermode crashes heb je standaard geen memory dumps. Echter je kan een debugger attachen aan een proces en een memory dump laten generen op het moment dat deze klapt. In de debugging tools kan dat op verschillende manieren, maar ik gebruik eigenlijk altijd DebugDiag, wat een schil rondom de debuggers uit de debugging tools is.
&lt;/p&gt;&lt;p&gt;In mijn geval crashed een application pool regelmatig. Ik start dus debugdiag en kies voor de 'Crash' optie (een Hang is niet hetzelfde als een crash):&lt;br/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/031909_1210_Debuggingvo6.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Vervolgens kan ik twee kanten op. Ik kan kiezen voor een proces, en selecteer gewoon het juiste w3wp.exe proces, of ik kies voor Application Pool. Dit is uiteraard eenvoudiger dus doe ik dat:
&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/031909_1210_Debuggingvo7.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Vervolgens kies ik de application pool, en krijg ik de mogelijkheid om advanced opties mee te geven, zoals op welke Exceptions debugdiag moet reageren. Ik selecteer gewoon de standaard opties, daar dat in de meeste gevallen voldoende is.
&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/031909_1210_Debuggingvo8.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Uiteindelijk kies ik Next &amp;gt; Next &amp;gt; Activate Rule.
&lt;/p&gt;&lt;p&gt;Als dan vervolgens het proces klapt, maakt DebugDiag een memory dump, welke geanalyseerd kan worden. Na een paar keer mijn webapplicatie te hebben geprobeerd te starten, had ik 3 memory dumps:
&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/031909_1210_Debuggingvo9.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Ik kan dan vervolgens kiezen om de data te laten analyseren door &lt;strong&gt;Analyze Data&lt;/strong&gt; te selecteren. Na een tijdje door de dumps te hebben gewroet, laat DebugDiag een rapport zien met de bevindingen. In de meeste gevallen kan je dat rapport gebruiken om verder onderzoek te plegen. In mijn geval wist ik wat het probleem was, daar ik zelf een kapotte ISAPI filter had gebakken om demo's van DebugDiag te geven. Het rapport laat daarom ook netjes zien dat mijn UpCaseStackOverflow.dll filter het probleem heeft veroorzaakt.
&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/031909_1210_Debuggingvo10.png" alt=""/&gt;
	&lt;/p&gt;&lt;h2&gt;Memory Leaks
&lt;/h2&gt;&lt;p&gt;Memory Leaks worden vaak gezien als zeer lastige problemen om te analyseren, maar met de juiste tools valt dat best mee. Ook hier gebruik ik meestal DebugDiag voor. Je start DebugDiag en kiest voor &lt;strong&gt;Memory and Handle Leak&lt;/strong&gt;. Vervolgens kies je het proces waaraan je de debugger wilt koppelen. Het valt hier op dat we nu niet de keuze hebben om een Application pool te kiezen. Als je nu meerdere application pools hebt, en deze ook nog eens onder hetzelfde application pool account draait, lijkt het lastig deze processen te onderscheiden. Gelukkig is er een redelijk makkelijke manier om erachter te komen om welke application pool het gaat. Je scrolled helemaal naar rechts in het DebugDiag window en controlleert de commandline kolom. Dit bevat de naam van de application pool:
&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/031909_1210_Debuggingvo11.png" alt=""/&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/031909_1210_Debuggingvo12.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Je dient vervolgens aan te geven wanneer er precies een Memory dump gemaakt moet worden. Dit kan na een bepaalde tijd, maar vaak is het handiger een maximum aantal MB's aan te geven. Dit doe je door te kiezen voor &lt;strong&gt;Configure&lt;/strong&gt; in de &lt;strong&gt;Userdump generation &lt;/strong&gt;sectie:
&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/031909_1210_Debuggingvo13.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Ik kies hier meestal voor Virtual Bytes, omdat Private Bytes daar een subset van is. Virtual Bytes is namelijk het aantal bytes dat het proces gealloceerd heeft binnen het Virtual Address Space van het proces. Private Bytes is het geheugen dat gealloceerd is dat exclusief te benaderen is door het proces. Wanneer een proces namelijk een module laadt met shareable data (code afhankelijk dus), die al geladen is door een ander proces, wordt deze niet nogmaals in het geheugen geladen, maar gedeeld door processen. Dit geheugen wordt gemapped naar het proces. De virtual bytes geven vervolgens aan dat het proces het aantal bytes voor die module gealloceerd heeft, maar fysiek is er geen extra geheugen gebruikt. Deze shareable bytes zie je dus ook niet terug in de Private Bytes. 
&lt;/p&gt;&lt;p&gt;Om te bepalen wanneer een memory dump te maken, zal je monitoring moeten inregelen. Dit kan door System Monitor (perfmon) te gebruiken en de Private Bytes en Virtual Bytes van het systeem en processen te monitoren.
&lt;/p&gt;&lt;p&gt;Als laatste selecteer ik weer &lt;strong&gt;Next &amp;gt; Next &amp;gt; Activate Rule&lt;/strong&gt; en kan het wachten beginnen.&lt;br/&gt;Zodra er weer een memorydump is gemaakt, kies je wederom voor &lt;strong&gt;Analyze Data&lt;/strong&gt; en Voila… een rapport.
&lt;/p&gt;&lt;p&gt;Net als bij de Usermode Crash, was het in mijn geval wederom een zelf geschreven ISAPI filter, met ditmaal een memory leak. Het rapport laat ook netjes zien dat er een module UpCaseLeak.dll is in mijn w3wp.exe proces die aardig wat geheugen heeft gealloceerd. In dit geval heeft DebugDiag te kort gelopen om echt een harde analyse te doen, maar je snapt waar dit heengaat.
&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/031909_1210_Debuggingvo14.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;
 &lt;/p&gt;&lt;p&gt;Zo zie je… Debugging is niet alleen voor code junkies, maar iedereen kan een aantal basis stappen zetten, die in veel gevallen al tot de oorzaak van het probleem kunnen leiden!
&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3215160" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/mpriem/archive/tags/101/default.aspx">101</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Windows+Server/default.aspx">Windows Server</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Bug/default.aspx">Bug</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Troubleshooting/default.aspx">Troubleshooting</category></item><item><title>Subject Alternative Names met Microsoft Certificate Authority</title><link>http://blogs.technet.com/mpriem/archive/2008/12/10/subject-alternative-names-met-microsoft-certificate-authority.aspx</link><pubDate>Wed, 10 Dec 2008 22:35:57 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3166446</guid><dc:creator>mpriem</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/mpriem/comments/3166446.aspx</comments><wfw:commentRss>http://blogs.technet.com/mpriem/commentrss.aspx?PostID=3166446</wfw:commentRss><description>&lt;p&gt;De Certificate Authority rol in Server 2008 (ook in 2003) geeft standaard geen certificaten uit met subject alternative names (SAN), welke vaak nodig zijn in de nieuwere producten van Microsoft zoals Exchange 2007, System Centre Configuration Manager 2007 en Office Communications Server 2007.
&lt;/p&gt;&lt;p&gt;Hier is een oplossing voor. Om SAN te enablen in Server 2008 gebruik je de volgende commando's:
&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Consolas"&gt;certutil –setreg policy\SubjectAltName enabled&lt;/span&gt;&lt;span style="font-family:Wingdings 3"&gt;8&lt;/span&gt;&lt;span style="font-family:Consolas"&gt;&lt;br/&gt;certutil –setreg policy\SubjectAltName2 enabled&lt;/span&gt;&lt;span style="font-family:Wingdings 3"&gt;8&lt;/span&gt;&lt;span style="font-family:Consolas"&gt;&lt;br/&gt;net stop certsvc&lt;/span&gt;&lt;span style="font-family:Wingdings 3"&gt;8&lt;/span&gt;&lt;span style="font-family:Consolas"&gt;&lt;br/&gt;net start certsvc&lt;/span&gt;&lt;span style="font-family:Wingdings 3"&gt;8&lt;/span&gt;&lt;span style="font-family:Consolas"&gt;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;In Server 2003 is het:
&lt;/p&gt;&lt;p style="margin-left: 36pt"&gt;&lt;span style="font-family:Consolas"&gt;certutil -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2&lt;/span&gt;&lt;span style="font-family:Wingdings 3"&gt;8&lt;/span&gt;&lt;span style="font-family:Consolas"&gt;&lt;br/&gt;net stop certsvc&lt;/span&gt;&lt;span style="font-family:Wingdings 3"&gt;8&lt;/span&gt;&lt;span style="font-family:Consolas"&gt;&lt;br/&gt;net start certsvc&lt;/span&gt;&lt;span style="font-family:Wingdings 3"&gt;8&lt;/span&gt;&lt;span style="font-family:Consolas"&gt;
		&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/121008_1935_SubjectAlte1.png" alt=""/&gt;
	&lt;/p&gt;&lt;p&gt;Hierna zal je zien dat de SANs aanwezig zijn op je certificaten.
&lt;/p&gt;&lt;p&gt;&lt;img src="http://blogs.technet.com/blogfiles/mpriem/121008_1935_SubjectAlte2.png" alt=""/&gt;&lt;/p&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3166446" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/mpriem/archive/tags/Windows+Server/default.aspx">Windows Server</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Security/default.aspx">Security</category></item><item><title>Virtualisatie support voor Sharepoint Server en SQL server producten</title><link>http://blogs.technet.com/mpriem/archive/2008/11/08/virtualisatie-support-voor-sharepoint-server-en-sql-server-producten.aspx</link><pubDate>Sat, 08 Nov 2008 16:11:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3149599</guid><dc:creator>mpriem</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/mpriem/comments/3149599.aspx</comments><wfw:commentRss>http://blogs.technet.com/mpriem/commentrss.aspx?PostID=3149599</wfw:commentRss><description>&lt;P&gt;Gisteren ben ik terug gekomen van een 60+ uur durende critsit bij een klant in Oostenrijk, waar zij MOSS in single-server configuratie op VMWare Server (dus de gratis versie… In productie &lt;SPAN style="FONT-FAMILY: Wingdings"&gt;J&lt;/SPAN&gt; ) draaien op 40+ locaties. &lt;BR&gt;&lt;BR&gt;Gedurende deze critsit kwam ik, zoals vele malen eerder, in de discussie terecht over het support van Microsoft op VMWare producten. Dit is de aanleiding dat ik het nu luid en duidelijk probeer neer te zetten in deze post. &lt;/P&gt;
&lt;P&gt;Microsoft heeft beperkte support op niet-microsoft hardware virtualisatie producten voor onze Windows Server besturingssystemen. Dit houdt in dat wij &lt;SPAN style="TEXT-DECORATION: underline"&gt;&lt;STRONG&gt;FULL&lt;/STRONG&gt;&lt;/SPAN&gt; support leveren op onze eigen producten en alle producten die onder het &lt;A href="http://go.microsoft.com/fwlink/?LinkId=125649&amp;amp;clcid=0x409" mce_href="http://go.microsoft.com/fwlink/?LinkId=125649&amp;amp;clcid=0x409"&gt;Server Virtualization Validation Program (SVVP)&lt;/A&gt; (&lt;A&gt;http://go.microsoft.com/fwlink/?LinkId=125649&amp;amp;clcid=0x409&lt;/A&gt;). &lt;/P&gt;
&lt;P&gt;Op dit moment zijn dat: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Cisco WAAS Virtual Blades 4.1.1 &lt;/LI&gt;
&lt;LI&gt;Citrix XenServer 5 Embedded Edition &lt;/LI&gt;
&lt;LI&gt;SUSE Linux Enterprise Server 10 SP2 &lt;/LI&gt;
&lt;LI&gt;VMware ESX 3.5 Update 2 &lt;/LI&gt;
&lt;LI&gt;XenServer 5 &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Naast het FULL support leveren wij &lt;SPAN style="TEXT-DECORATION: underline"&gt;&lt;STRONG&gt;BEST EFFORT &lt;/STRONG&gt;&lt;/SPAN&gt;support voor &lt;SPAN style="TEXT-DECORATION: underline"&gt;&lt;STRONG&gt;PREMIER &lt;/STRONG&gt;&lt;/SPAN&gt;klanten voor producten die niet onder het SVVP vallen. Let wel, dit is dus best effort, en alleen voor klanten met een premier contract, en alleen voor Windows Server besturingssystemen. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://support.microsoft.com/kb/897615" mce_href="http://support.microsoft.com/kb/897615"&gt;http://support.microsoft.com/kb/897615&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Voor onze Server applicaties gelden aparte regels. Elk product team kan zelf bepalen wat deze regels inhouden. &lt;/P&gt;
&lt;P&gt;Voor Sharepoint en voor SQL server zijn deze&amp;nbsp;als volgt&amp;nbsp;&lt;BR&gt;&lt;BR&gt;&lt;A href="http://support.microsoft.com/kb/909840" mce_href="http://support.microsoft.com/kb/909840"&gt;http://support.microsoft.com/kb/909840&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://support.microsoft.com/KB/956893" mce_href="http://support.microsoft.com/KB/956893"&gt;http://support.microsoft.com/KB/956893&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Uiteindelijk bleek het probleem dus ook mede veroorzaakt te worden doordat SQL gevirtualiseerd was en de VM problemen had met de hardware klok en 461 identieke items aanmaakte in de database wanneer er een workflow gestart werd.&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3149599" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/mpriem/archive/tags/Windows+Server/default.aspx">Windows Server</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Sharepoint/default.aspx">Sharepoint</category><category domain="http://blogs.technet.com/mpriem/archive/tags/WSS/default.aspx">WSS</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Portal+Server+2003/default.aspx">Portal Server 2003</category><category domain="http://blogs.technet.com/mpriem/archive/tags/SQL/default.aspx">SQL</category></item><item><title>Windows Update in Server Core</title><link>http://blogs.technet.com/mpriem/archive/2008/09/09/windows-update-in-server-core.aspx</link><pubDate>Tue, 09 Sep 2008 17:48:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3127291</guid><dc:creator>mpriem</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/mpriem/comments/3127291.aspx</comments><wfw:commentRss>http://blogs.technet.com/mpriem/commentrss.aspx?PostID=3127291</wfw:commentRss><description>&lt;P&gt;Als je met server core aan de gang bent gegaan, zal je vast en zeker te maken hebben gehad met de vraag:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;"Hoe hou ik mijn server core installatie up to date??"&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Nou ik ook, en het heeft me aardig bezig gehouden...&lt;/P&gt;
&lt;P&gt;Nu heb ik thuis niet de beschikking over een fancy SMS of SCCM infrastructuur en ook geen WSUS server. Windows Update&amp;nbsp;of manual updaten zijn dus mijn&amp;nbsp;enige opties. Nu ben ik&amp;nbsp;als IT-er vaak liever lui dan moe en moet alles zoveel mogelijk automatisch, maar&amp;nbsp;Windows&amp;nbsp;Update&amp;nbsp;automatisch laten downloaden en installeren hoort daar niet bij.&amp;nbsp;Mijn Server Core draait naast common infra als ADDS, DNS, TS en DHCP ook Hyper-V, waardoor ik niet wil dat dit systeem zomaar ineens gaat rebooten.&lt;/P&gt;
&lt;P&gt;Dit levert een probleem op met Windows Update dacht ik een tijdje. Je kan namelijk Windows Update alleen uitschakelen of inschakelen in volledige automatische modus.&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;cscript %systemroot%\system32\scregedit.wsf /AU 1 / cscript %systemroot%\system32\scregedit.wsf /AU 4&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;BALEN!!!&lt;/P&gt;
&lt;P&gt;Maar.... Ergens diep verstopt op het grote boze internet vond ik een script welke de Windows Update Agent API benadert en via commandline je de mogelijkheid geeft de beschikbare updates te downloaden en te installeren :). Dit werkt ook als je je systeem via GPO in een WSUS infra hebt gehangen.&lt;/P&gt;
&lt;P&gt;Download het van deze post...Of haal het&amp;nbsp;orgineel &lt;A href="http://msdn.microsoft.com/en-us/library/aa387102(VS.85).aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/aa387102(VS.85).aspx"&gt;hier&lt;/A&gt;... Veel plezier!!&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3127291" width="1" height="1"&gt;</description><enclosure url="http://blogs.technet.com/mpriem/attachment/3127291.ashx" length="2629" type="application/octet-stream" /><category domain="http://blogs.technet.com/mpriem/archive/tags/Windows+Server/default.aspx">Windows Server</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Windows+Server+2008/default.aspx">Windows Server 2008</category></item><item><title>Windows 2003 SP2 Scalable Networking pack problemen</title><link>http://blogs.technet.com/mpriem/archive/2008/01/04/windows-2003-sp2-scalable-networking-pack-problemen.aspx</link><pubDate>Fri, 04 Jan 2008 18:40:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3127275</guid><dc:creator>mpriem</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/mpriem/comments/3127275.aspx</comments><wfw:commentRss>http://blogs.technet.com/mpriem/commentrss.aspx?PostID=3127275</wfw:commentRss><description>&lt;P&gt;Ik ben nu al verscheidende malen onverklaarbare connectiviteitsproblemen met Exchange aan het troubleshooten geweest en keer op keer had dit te maken met features die geactiveerd zijn door het Scalable Networking pack van SP2. Deze update bevat uitbreidingen van de TCP/IP stack die nieuwe functionaliteit uit de NDIS 6 specificaties mogelijk maakt zoals:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Receive Side Scaling (Multi-processor ondersteuning. In pre NDIS 6 drivers, werkt telkens slechts 1 CPU de interupts van de&amp;nbsp;NIC af.)&lt;/LI&gt;
&lt;LI&gt;TCP Chimney offloading (offloaden van taken als headerparsing, timing calculaties en segmentatie van data)&lt;/LI&gt;
&lt;LI&gt;NetDMA (Directe toegang tot het geheugen voor NIC)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;IMG class=mce_plugin_wordpress_more title=More... height=10 alt=More... src="http://www.spurius.nl/wp-includes/js/tinymce/themes/advanced/images/spacer.gif" width="100%" name=mce_plugin_wordpress_more moretext=""&gt;&lt;/P&gt;
&lt;P&gt;Klinkt allemaal geweldig, maar in de praktijk zijn er veel probleem mee zoals je &lt;A title="Issues SNP" href="http://support.microsoft.com/kb/936594" target=_blank mce_href="http://support.microsoft.com/kb/936594"&gt;hier&lt;/A&gt; en &lt;A title="Issues SNP" href="http://msexchangeteam.com/archive/2007/07/18/446400.aspx" target=_blank mce_href="http://msexchangeteam.com/archive/2007/07/18/446400.aspx"&gt;hier&lt;/A&gt; kan lezen.&amp;nbsp;Voornamelijk het probleem waardoor gebruikers niet meer kunnen inloggen en event is er 1 die ik geregeld gezien heb:&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;Event Type: Error&lt;BR&gt;Event Source: MSExchangeIS&lt;BR&gt;Event Category: General&lt;BR&gt;Event ID: 9646&lt;BR&gt;Date: ...&lt;BR&gt;Time: ...&lt;BR&gt;User: N/A&lt;BR&gt;Computer: ...&lt;BR&gt;Description:&lt;BR&gt;Mapi session "/o=.../ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=..."exceeded the maximum of 64 objects of type "session".&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;Daarnaast heb ik problemen gezien met applicaties die via MAPI verbinding proberen te maken met de NSPI port op Exchange servers en waarvan de connecties gewoon verbroken worden. Voorbeelden zijn Blackberry Enterprise Server en Symantec Enterprise Vault.&lt;BR&gt;Op Blackberry ontstaan bijvoorbeeld Calendar Sync problemen&amp;nbsp;doordat het process &lt;EM&gt;CalHelper.exe &lt;/EM&gt;via CDO geen MAPI sessies meer kon opzetten. Een voorbeeld logknipsel is:&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;[40574] (01/31 19:02:31.501):{0x2090} CDO helper 068cf200 started, PID 5360&lt;BR&gt;[30001] (01/31 19:02:31.830):{0x2090} CDOCalendar::Initialize - Code = 800406f9, WCode = 04f9, Code meaning = IDispatch error #1273,&lt;BR&gt;[30002] (01/31 19:02:31.830):{0x2090} Server = server, Mailbox = /o=.../ou=.../cn=Recipients/cn=... Description = The information store could not be opened. [MAPI 1.0 - [MAPI_E_LOGON_FAILED(80040111)]]&lt;BR&gt;[30180] (01/31 19:02:31.830):{0x2090} {...} CDOCalendar::Initialize - Error in call m_spCalendarFolder = m_spCDOSession-&amp;gt;GetDefaultFolder&lt;BR&gt;[40000] (01/31 19:02:31.830):{0x2090} CDO initializing failure in CDO helper 068cf200 (1)&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;Ook Enterprise Vault geeft soms problemen met het aanmaken van Archiving Tasks op Exchange 2007 servers. De melding in de event logs zijn:&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;Event Type: Error&lt;BR&gt;Event Source: Enterprise Vault&lt;BR&gt;Event Category: Archive Task&lt;BR&gt;Event ID: 3305&lt;BR&gt;Date: ...&lt;BR&gt;Time: ...&lt;BR&gt;User: N/A&lt;BR&gt;Computer: ...&lt;BR&gt;Description:&lt;BR&gt;The Task 'Mailbox Archiving Task for Server' failed to log on to Exchange server 'Server' using mailbox 'smtp:email@domein.com. Please ensure that the server is running and that the Vault account has sufficient permissions on the server.&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;De problemen lijken telkens op Authenticatie problemen, maar in werkelijkheid zie je TCP connecties bijna onmiddelijk gebroken te worden, wanneer de systemen proberen contact te maken.&lt;/P&gt;
&lt;P&gt;Probeer dus eerst TCPChimney Offloading uit te schakelen via &lt;CODE&gt;Netsh int ip set chimney DISABLED&lt;/CODE&gt;. Ondanks wat de artikelen zeggen, adviseer ik toch een reboot. Als de problemen weer optreden probeer dan RSS en NetDMA uit te zetten via het register:&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]&lt;BR&gt;"EnableTCPA"=dword:00000000&lt;BR&gt;"EnableRSS"=dword:00000000&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;Success!&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3127275" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/mpriem/archive/tags/Exchange+2007/default.aspx">Exchange 2007</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Windows+Server/default.aspx">Windows Server</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Exchange+2003/default.aspx">Exchange 2003</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Networking/default.aspx">Networking</category></item><item><title>NLB voor zowel de Client Access Server als de Hub Transport</title><link>http://blogs.technet.com/mpriem/archive/2008/01/02/nlb-voor-zowel-de-client-access-server-als-de-hub-transport.aspx</link><pubDate>Wed, 02 Jan 2008 18:39:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3127274</guid><dc:creator>mpriem</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/mpriem/comments/3127274.aspx</comments><wfw:commentRss>http://blogs.technet.com/mpriem/commentrss.aspx?PostID=3127274</wfw:commentRss><description>&lt;P&gt;NLB binnen Windows 2003 is een veelgebruikte manier om services redudant te maken en/of te load balancen. Het is standaard beschikbaar in elke versie van Windows 2003 server; dit in tegenstelling to Cluster Services welke in de standard en web editions van Windows 2003 server niet beschikbaar is.&lt;/P&gt;
&lt;P&gt;In Exchange 2007 kan je een aantal diensten aanbieden via NLB. Owa, web services, imap4 en pop3 kan je&amp;nbsp;prima achter een NLB cluster zetten. De hub/edge transport role, mailbox server role en Unified messaging role kan je niet gebruiken i.c.m. NLB, of toch wel? Via een klein trucje kan je toch een hub transport server achter NLB zetten als je de Receive Connectoren voor communicatie met andere hub transports maar niet via NLB aanbiedt. Dit omdat de hub transports onderling mutual TLS authentication gebruiken, en NLB problemen veroorzaakt met het uitwisselen en valideren van de certificaten. Ook heeft de hub transport role zelf geen notie van een cluster en zal daardoor een set exchange servers nooit als een cluster benaderen. NLB is in de meeste gevallen ook helemaal niet nodig omdat Hub transports in dezelfde site (wat btw ook een vereiste is voor een NLB cluster. Een NLB cluster over subnets heen bestaat (nog) niet) zelf al load balancen en fault tolerant zijn. Echter wanneer je andere systemen hebt die verbinding maken via SMTP met een hub transport server (bv: fax of sms diensten), kan het handig zijn om een stukje load balancing en fault tolerance in de infrastructuur aan te brengen.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Dit artikel zal een beschrijving geven hoe je dit voor elkaar krijgt:&lt;BR&gt;&lt;IMG class=mce_plugin_wordpress_more title=More... height=10 alt=More... src="http://www.spurius.nl/wp-includes/js/tinymce/themes/advanced/images/spacer.gif" width="100%" name=mce_plugin_wordpress_more moretext=""&gt;&lt;/P&gt;
&lt;P&gt;Voordat we met het configureren beginnen is het handig even kort stil te staan bij hoe NLB ongeveer werkt. NLB werkt door middel van een filterdriver die geladen wordt, waarmee het netwerk connecties getoetst kunnen worden aan de rules die opgesteld kunnen worden wanneer je NLB configureert. Deze rules bepalen of UDP of TCP verkeer voor een bepaalde port wel of niet tot NLB 'enabled' verkeer behoort. NLB werkt in Unicast of Multicast mode, wat wil zeggen dat de netwerkkaarten die gebruikt worden OF 1 (unicast) MAC address krijgt of meerdere (multicast) MAC addressen kan gebruiken. Wanneer NLB in unicast wordt opgezet, wordt het MAC address van de netwerk kaart vervangen door een MAC address dat iedere node in het cluster zal gebruiken. In multicast wordt het gezamenlijke MAC address toegevoegd aan de netwerkkaarten. Doordat meerdere hosts gebruik maken van hetzelfde MAC address kan deze netwerk kaart niet meer gebruiken voor interhost communicatie (dit omdat source en dest MAC hetzelfde zijn. Zelfs in Multicast mode kan het zijn dat je tegen dit probleem aanloopt). Het is daarom ten sterkste aan te raden een extra netwerk kaart te gebruiken voor NLB.&lt;BR&gt;Wanneer je nu het NLB cluster aanmaakt dan configureer je een clusterIP en een clusterDNS (de laatste moet je wel zelf nog toevoegen in DNS). Verder kan je aangeven welke hosts in het cluster zijn opgenomen, welk verkeer je wilt filteren, of je het wilt load balancen of je alleen fault tolerant wilt zijn en of je server affinity wilt gebruiken. Dit laatste laat connecties (binnen een bepaald tijdframe) van&amp;nbsp;ip addressen of complete subnets altijd door dezelfde host afhandelen. Dit is&amp;nbsp;bijvoorbeeld&amp;nbsp;handig voor als je met applicaties werkt via een SSL tunnel. Zonder affinity zou het aantal SSL sessies explosief stijgen. Wanneer je port 80 achter NLB hebt zitten en je gebruikt je browser om &lt;A href="http://nlb.domein.com/" mce_href="http://nlb.domein.com/"&gt;http://nlb.domein.com&lt;/A&gt; te benaderen, zullen de netwerk packets gerouteerd worden tot aan de laatste router of multi-layer switch. Hierna zullen de frames op de Datalink laag (LEVEL 2 in het OSI model) op basis van het MAC address afgeleverd worden bij de uiteindelijke host. Echter het MAC address wordt gebruikt op alle hosts. Een switch kan hier niet mee omgaan. Achter elke switch port moet een uniek MAC address zitten. Een switch bouwt zijn ARP table op door de frames te bekijken van de verbonden hosts en via ARP requests, en neemt de source MAC addressen op in de table. Als de switch een frame krijgt en het destination MAC address niet kan vinden in zijn table, zal hij het frame over alle poorten broadcasten. NLB maakt hier sneaky gebruik van. Op alle uitgaande&amp;nbsp;frames van de NLB NIC wordt het MAC address aangepast. Alle NLB cluster MACs zijn hetzelfde &lt;A title="NLB MAC format" href="https://msmvps.com/blogs/clusterhelp/archive/2006/06/24/network-load-balancing-and-mac-addresses.aspx" target=_blank mce_href="https://msmvps.com/blogs/clusterhelp/archive/2006/06/24/network-load-balancing-and-mac-addresses.aspx"&gt;opgebouwd&lt;/A&gt;, waarbij de tweede 8 bits (in HEX) altijd BF is. Echter voor de uitgaande frames wordt deze tweede set 8 bits aangepast aan de priority dat een node in het cluster heeft (01, 02, 03, 04 etc etc). Dit maakt dat de ARP tabel alleen de aangepaste MAC addressen bevat. Als er dus een frame komt dat bestemt is voor het cluster, dan zal hij deze broadcasten over alle porten.. Via het gezamenlijk algoritme dat de NLB nodes onderhouden, antwoordt de node die op dat moment 'aan de beurt is'. Door dit principe staat NLB erom bekend switches te kunnen flooden. Hier zijn&lt;A title="flooding switches" href="http://msmvps.com/blogs/clusterhelp/archive/2005/08/07/61965.aspx" target=_blank mce_href="http://msmvps.com/blogs/clusterhelp/archive/2005/08/07/61965.aspx"&gt; tweaks&lt;/A&gt; voor.&lt;/P&gt;
&lt;P&gt;Zo, dat is NLB in een nutshell :)&lt;/P&gt;
&lt;P&gt;Volg de volgende stappen om NLB te activeren voor je Exchange services:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Installeer een tweede netwerk kaart in je systemen.&lt;/LI&gt;
&lt;LI&gt;Zorg dat de primaire netwerk kaart als eerste in de binding order komt en verwijder de 'File and printer sharing' en 'Client for MS networks' bindings van de tweede netwerk kaart.&lt;/LI&gt;
&lt;LI&gt;Start NLBMGR op vanuit een command shell.&lt;/LI&gt;
&lt;LI&gt;Maak een cluster aan in UNICAST mode (in VMWARE moet je multicast gebruiken, anders werkt het niet) en voeg, wanneer je een host toevoegt, de tweede netwerkkaart toe.&lt;/LI&gt;
&lt;LI&gt;Maak vervolgens rules aan&amp;nbsp;voor TCP porten 80, 443, 110, 143 en 25. Port 80 en 25 hebben geen host affinity nodig. Port 110, 143 en 443 stel je in met single affinity. (wanneer je pop3 of imap unsecure gaat aanbieden, kan je 110 en 143 ook zonder affinity instellen). Zet de rule in&amp;nbsp;'Multiple Hosts' mode, wat ervoor zorgt dat alle hosts meedoen in het cluster.&lt;BR&gt;&lt;A title="NLB port settings" href="http://www.spurius.nl/wp-content/uploads/2008/01/nlb.jpg" mce_href="http://www.spurius.nl/wp-content/uploads/2008/01/nlb.jpg"&gt;&lt;IMG alt="NLB port settings" src="http://www.spurius.nl/wp-content/uploads/2008/01/nlb.thumbnail.jpg" mce_src="http://www.spurius.nl/wp-content/uploads/2008/01/nlb.thumbnail.jpg"&gt;&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;Maak nu een nieuwe receive connector aan op elke NLB node en laat deze &lt;STRONG&gt;alleen &lt;/STRONG&gt;luisteren op het cluster ip adres. Zorg ervoor dat de default connectors luisteren op het primaire ip adres. Pas ook de FQDN response aan van alle receive connectors in het cluster. Om een nieuwe connector te maken:&lt;BR&gt;&lt;STRONG&gt;Voorbeeld:&lt;/STRONG&gt; &lt;CODE&gt;New-ReceiveConnector -Server:'Node1' -Name:'NLB Connector' -Type:'Costum' -Bindings:'&lt;EM&gt;192.168.1.100:25'&lt;/EM&gt; -fqdn:'Cluster.fqdn.domein.com' -RemoteIpRanges:&lt;EM&gt;192.168.1.10 -&lt;/EM&gt;PermissionGroups:'AnonymousUsers' -AuthMechanism:'None'&lt;/CODE&gt; 
&lt;P&gt;Dit maakt op Node1 een connector aan met de naam 'NLB Connector' die luistert op clusteripadres 192.168.1.100 port 25, en antwoordt met cluster.fqdn.domein.com in de SMTP banner (&lt;FONT face="Courier New"&gt;220 cluster.fqdn.domein.com&amp;nbsp;Microsoft ESMTP MAIL service ready at (datum)&lt;/FONT&gt;). Het accepteert anonymous verbindingen van 192.168.1.10. Om ook nog echt te kunnen relayen moet je echter nog het ms-Exch-SMTP-Accept-Any-Recipient recht toekennen aan 'ANONYMOUS LOGON' wat het security principle is voor anonieme verbindingen. Dit recht stelt je in staat om email te verzenden aan iedere ontvanger en niet alleen aan accepted domains.&lt;BR&gt;&lt;STRONG&gt;Voorbeeld: &lt;/STRONG&gt;&lt;CODE&gt;Get-ReceiveConnector 'Node1\NLB Connector' | add-adpermission -User 'NT AUTHORITY\ANONYMOUS LOGON' -ExtendedRights ms-Exch-SMTP-Accept-Any-Recipient&lt;/CODE&gt;&lt;BR&gt;&lt;STRONG&gt;&lt;BR&gt;VERGEET AUB NIET DE BINDING VAN DE ANDERE RECEIVE CONNECTORS TE VERANDEREN NAAR HET PRIMAIRE IP ADDRESS&lt;/STRONG&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Probeer nu OWA te benaderen op https://cluster.fqdn.domein.com/owa en de nieuwe SMTP connector via &lt;CODE&gt;telnet clusterip 25&lt;/CODE&gt;. Als het goed is moet nu alles werken (door de banner te veranderen op de verschillende receive connectoren kan je zien dat het werkt).&lt;/P&gt;
&lt;P&gt;Ik zeg... aan de slag!! ;)&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3127274" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/mpriem/archive/tags/Exchange+2007/default.aspx">Exchange 2007</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Windows+Server/default.aspx">Windows Server</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Networking/default.aspx">Networking</category></item><item><title>Powershell 2.0 CTP released</title><link>http://blogs.technet.com/mpriem/archive/2007/11/06/powershell-2-0-ctp-released.aspx</link><pubDate>Tue, 06 Nov 2007 18:21:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3127250</guid><dc:creator>mpriem</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/mpriem/comments/3127250.aspx</comments><wfw:commentRss>http://blogs.technet.com/mpriem/commentrss.aspx?PostID=3127250</wfw:commentRss><description>&lt;P&gt;Microsoft heeft een preview versie van Powershell 2.0 gereleased. Naast een lange lijst bugfixes, heeft deze versie ook redelijk wat nieuws onder de zon.&lt;BR&gt;&lt;IMG class=mce_plugin_wordpress_more title=More... height=10 alt=More... src="http://www.spurius.nl/wp-includes/js/tinymce/themes/advanced/images/spacer.gif" width="100%" name=mce_plugin_wordpress_more moretext=""&gt;&lt;BR&gt;Zo zijn er 24 nieuwe cmdlets bij waarbij ik bijvoorbeeld 'Out-GridView' een geweldige vind. Dit geeft een array van soortgelijke objecten weer als een WinForm met een Datagrid control, waarna je de output kunt sorteren, groeperen en meer. Ik pik dit voorbeeld eruit omdat ik zelf ook een soortgelijk script bebruik, welke ooit geschreven is door Mark Van Orsouw (&lt;A href="http://thepowershellguy.com/blogs/posh/" mce_href="http://thepowershellguy.com/blogs/posh/"&gt;the Powershell Guy&lt;/A&gt;).. Een andere toevoeging 'Powershell Remoting' is, wat je in staat stelt een remote shell te benaderen en daar zaken uit te voeren; dit alles in een tabbed interface. Het grappige hieraan is dat 'Powershell Remoting' ook een project is op &lt;A href="http://www.codeplex.com/powershellremoting" mce_href="http://www.codeplex.com/powershellremoting"&gt;codeplex&lt;/A&gt;, wat ik al lange tijd volg en verdomt veel lijkt op waarmee Microsoft nu op de proppen komt. Ik durf de voorzichtige gok wel aan, dat Microsoft deze heren hebben ingelijft heeft om het powershell team bij te staan. De meest geweldige toevoeging vind ik toch wel dat je nu gemakkelijk een nieuwe cmdlet kan schrijven in powershell script. Eerst moest je het programmeren en compileren in .NET.&lt;BR&gt;Verder bevat deze build een aantal nieuwe API's die het ontwikkelaars makkelijker moet maken de Powershell engine in hun software te gebruiken. Meer hierover kan je vinden in de SDK, welke op dezelfde &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=60deac2b-975b-41e6-9fa0-c2fd6aa6bc89&amp;amp;DisplayLang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=60deac2b-975b-41e6-9fa0-c2fd6aa6bc89&amp;amp;DisplayLang=en"&gt;downloadpagina&lt;/A&gt; als de CTP zelf te vinden is.&lt;/P&gt;
&lt;P&gt;Let wel... Deze build is geen beta.. Het is een Community Technology Preview. Het kan dus nog alle kanten op. Ik heb wel voor de build de &lt;A title="Release Notes" href="http://www.spurius.nl/wp-content/uploads/2007/11/releasenotes.rtf" mce_href="http://www.spurius.nl/wp-content/uploads/2007/11/releasenotes.rtf"&gt;Release Notes&lt;/A&gt; beschikbaar&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3127250" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/mpriem/archive/tags/Windows+Server/default.aspx">Windows Server</category><category domain="http://blogs.technet.com/mpriem/archive/tags/command+line/default.aspx">command line</category><category domain="http://blogs.technet.com/mpriem/archive/tags/cmd/default.aspx">cmd</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Powershell/default.aspx">Powershell</category></item><item><title>SMTP Reply &amp; Status codes</title><link>http://blogs.technet.com/mpriem/archive/2007/05/30/smtp-reply-status-codes.aspx</link><pubDate>Wed, 30 May 2007 12:46:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3127140</guid><dc:creator>mpriem</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.technet.com/mpriem/comments/3127140.aspx</comments><wfw:commentRss>http://blogs.technet.com/mpriem/commentrss.aspx?PostID=3127140</wfw:commentRss><description>&lt;P&gt;Tijdens het troubleshooten van mailservers zijn SMTP reply codes en SMTP status codes vaak waardevolle bronnen van informatie. Je moet echter wel begrijpen wat deze codes inhouden. Vandaar dat ik hier een overzicht post met de meest voorkomende codes.&lt;BR&gt;&lt;IMG class=mce_plugin_wordpress_more title=More... height=10 alt=More... src="http://www.spurius.nl/wp-includes/js/tinymce/themes/advanced/images/spacer.gif" width="100%" name=mce_plugin_wordpress_more moretext="" mce_src="http://www.spurius.nl/wp-includes/js/tinymce/themes/advanced/images/spacer.gif"&gt;&lt;BR&gt;Veelal zie ik SMTP reply codes en SMTP status codes door elkaar gebruikt worden alsof ze hetzelfde zijn. Dit is echter niet zo. De status codes zijn gespecificeerd in verschillende RFC's en door de jaren heen zijn er verschillende uitbreidingen geweest. Ik zal niet ingaan op RFC nummers, maar het zit als volgt. Een SMTP server heeft een aantal standaard reply codes om aan te geven wat de return waarde is bij een bepaald commando wat meegeven wordt tijdens de SMTP sessie. Zo is 250 een code wat aangeeft dat het commando met een positief resultaat is uitgevoerd. Deze codes zijn redelijk beperkt en door de jaren heen zijn er extra RFC's geschreven voor wat uitgebreidere status meldingen. Deze zijn echter niet als SMTP reply code geimplementeert in het SMTP protocol, maar worden als 'message' of 'comment' teruggegeven in combinatie met een SMTP reply code.&lt;/P&gt;
&lt;P&gt;Een voorbeeld is:&lt;/P&gt;
&lt;P&gt;&lt;CODE&gt;550 5.7.1 Client does not have permissions to send as this sender&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;550 is de SMTP reply code en 5.7.1 is de status code van het systeem&lt;/P&gt;
&lt;P&gt;Hieronder zal ik een tweetal overzichten posten:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Let wel... De response varieert van systeem tot systeem. Let vooral op de code en de daarbij horende uitleg. Het doel van een bepaalde code is vastgelegd in RFCs, en zal daardoor (bijna) altijd gelijk zijn&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;SMTP reply codes:&lt;/STRONG&gt;&lt;/P&gt;
&lt;TABLE class="" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class=""&gt;&lt;STRONG&gt;Code&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD class=""&gt;&lt;STRONG&gt;Mogelijk response&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD class=""&gt;&lt;STRONG&gt;Uitleg&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;200&lt;/TD&gt;
&lt;TD class=""&gt;(nonstandard success response, see rfc876)&lt;/TD&gt;
&lt;TD class=""&gt;Generieke succesvolle response&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;211&lt;/TD&gt;
&lt;TD class=""&gt;System status, or system help reply&lt;/TD&gt;
&lt;TD class=""&gt;Status of reactie op HELP&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;214&lt;/TD&gt;
&lt;TD class=""&gt;Help message&lt;/TD&gt;
&lt;TD class=""&gt;Comment of help bericht&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;220&lt;/TD&gt;
&lt;TD class=""&gt;&lt;DOMAIN&gt;Service ready&lt;/TD&gt;
&lt;TD class=""&gt;Service ready bericht, Je kan nu starten met invoeren van commando's&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;221&lt;/TD&gt;
&lt;TD class=""&gt;&lt;DOMAIN&gt;Service closing transmission channel&lt;/TD&gt;
&lt;TD class=""&gt;Exit bericht na succesvolle transmissie&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;250&lt;/TD&gt;
&lt;TD class=""&gt;Requested mail action okay, completed&lt;/TD&gt;
&lt;TD class=""&gt;Actie met success uitgevoerd&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;251&lt;/TD&gt;
&lt;TD class=""&gt;User not local; will forward to &lt;FORWARD-PATH&gt;&lt;/TD&gt;
&lt;TD class=""&gt;Bericht wordt relayed&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;354&lt;/TD&gt;
&lt;TD class=""&gt;Start mail input; end with &lt;CRLF&gt;.&lt;CRLF&gt;&lt;/TD&gt;
&lt;TD class=""&gt;Je kan nu de content van het bericht invoeren&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;421 &lt;/TD&gt;
&lt;TD class=""&gt;&lt;DOMAIN&gt;Service not available, closing transmission channel&lt;/TD&gt;
&lt;TD class=""&gt;Exit bericht na permissie probleem of andersoortig configuratie probleem&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;450 &lt;/TD&gt;
&lt;TD class=""&gt;Requested mail action not taken: mailbox unavailable&lt;/TD&gt;
&lt;TD class=""&gt;Mailbox is niet beschikbaar melding&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;451 &lt;/TD&gt;
&lt;TD class=""&gt;Requested action aborted: local error in processing&lt;/TD&gt;
&lt;TD class=""&gt;Interne fout&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;452 &lt;/TD&gt;
&lt;TD class=""&gt;Requested action not taken: insufficient system storage&lt;/TD&gt;
&lt;TD class=""&gt;Storage of Memory probleem (voornamelijk het laatste)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;500 &lt;/TD&gt;
&lt;TD class=""&gt;Syntax error, command unrecognised &lt;/TD&gt;
&lt;TD class=""&gt;Commando bestaat niet&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;501 &lt;/TD&gt;
&lt;TD class=""&gt;Syntax error in parameters or arguments&lt;/TD&gt;
&lt;TD class=""&gt;Syntax van commando klopt niet&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;502 &lt;/TD&gt;
&lt;TD class=""&gt;Command not implemented&lt;/TD&gt;
&lt;TD class=""&gt;Commando wordt niet ondersteunt&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;503 &lt;/TD&gt;
&lt;TD class=""&gt;Bad sequence of commands&lt;/TD&gt;
&lt;TD class=""&gt;Command kan op deze plaats niet uitgevoerd worden&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;504 &lt;/TD&gt;
&lt;TD class=""&gt;Command parameter not implemented&lt;/TD&gt;
&lt;TD class=""&gt;Parameter wordt niet ondersteunt&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;521 &lt;/TD&gt;
&lt;TD class=""&gt;&lt;DOMAIN&gt;does not accept mail (see rfc1846)&lt;/TD&gt;
&lt;TD class=""&gt;Het domein wordt hier niet gehost en relaying is niet toegestaan&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;530 &lt;/TD&gt;
&lt;TD class=""&gt;Access denied&lt;/TD&gt;
&lt;TD class=""&gt;Permissie kwestie&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;550 &lt;/TD&gt;
&lt;TD class=""&gt;Requested action not taken&lt;/TD&gt;
&lt;TD class=""&gt;Actie wordt niet uitgevoerd&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;551 &lt;/TD&gt;
&lt;TD class=""&gt;User not local; please try &lt;FORWARD-PATH&gt;&lt;/TD&gt;
&lt;TD class=""&gt;Mailbox bestaat niet, zend opnieuw met dit adres&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;552 &lt;/TD&gt;
&lt;TD class=""&gt;Requested mail action aborted: exceeded storage allocation&lt;/TD&gt;
&lt;TD class=""&gt;Storage of Memory probleem (voornamelijk het laatste)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;553 &lt;/TD&gt;
&lt;TD class=""&gt;Requested action not taken: mailbox name not allowed&lt;/TD&gt;
&lt;TD class=""&gt;De zender mag niet zenden naar deze gebruiker&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;554 &lt;/TD&gt;
&lt;TD class=""&gt;Transaction failed&lt;/TD&gt;
&lt;TD class=""&gt;Fout in de transactie&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;STRONG&gt;SMTP status codes:&lt;/STRONG&gt;&lt;/P&gt;
&lt;TABLE class="" border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;&lt;STRONG&gt;Code&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD class=""&gt;&lt;STRONG&gt;Mogelijk response&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD class=""&gt;&lt;STRONG&gt;Uitleg&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;4.2.2&lt;/TD&gt;
&lt;TD class=""&gt;The recipient has exceeded their mailbox limit&lt;/TD&gt;
&lt;TD class=""&gt;Mailbox is vol&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;4.3.1&lt;/TD&gt;
&lt;TD class=""&gt;Not enough disk space on the delivery server&lt;/TD&gt;
&lt;TD class=""&gt;Het mailsysteem heeft geen ruimte meer (veelal geheugen probleem)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;4.3.2&lt;/TD&gt;
&lt;TD class=""&gt;Please try again later&lt;/TD&gt;
&lt;TD class=""&gt;Veelal administratieve acties of antispam response&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;4.4.1&lt;/TD&gt;
&lt;TD class=""&gt;The host is not responding&lt;/TD&gt;
&lt;TD class=""&gt;De server reageert niet om onduidelijke redenen.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;4.4.2&lt;/TD&gt;
&lt;TD class=""&gt;Bad connection&lt;/TD&gt;
&lt;TD class=""&gt;De verbinding weerhoudt het systeem ervan een volledige smtp sessie te voltooiten&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;4.4.6&lt;/TD&gt;
&lt;TD class=""&gt;Too many hops. Most likely the message is looping&lt;/TD&gt;
&lt;TD class=""&gt;Een mailloop is gedetecteerd op basis van recieved headers of het maximaal aantal hops is overschreden (15 E2K en 30 E2K3)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;4.4.7&lt;/TD&gt;
&lt;TD class=""&gt;Problem with a timeout&lt;/TD&gt;
&lt;TD class=""&gt;maximale verzendtijd overschreden&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;4.4.9&lt;/TD&gt;
&lt;TD class=""&gt;temporary routing error or bad routing configuration&lt;/TD&gt;
&lt;TD class=""&gt;Routes zijn niet juist geconfigureerd&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;4.5.0&lt;/TD&gt;
&lt;TD class=""&gt;Requested mail action not taken: mailbox unavailable&lt;/TD&gt;
&lt;TD class=""&gt;Mailbox is (tijdelijk) niet beschikbaar&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;4.5.1&lt;/TD&gt;
&lt;TD class=""&gt;Requested action aborted: local error in processing&lt;/TD&gt;
&lt;TD class=""&gt;Commando syntax klop wordt niet juist uitgevoerd&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;4.5.2&lt;/TD&gt;
&lt;TD class=""&gt;Requested action not taken: insufficient system storage&lt;/TD&gt;
&lt;TD class=""&gt;Het mailsysteem heeft geen ruimte (veelal geheugen probleem)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;4.6.5&lt;/TD&gt;
&lt;TD class=""&gt;Multi-language situation. Your server does not have the correct language code page installed&lt;/TD&gt;
&lt;TD class=""&gt;MIME conversie fout m.b.t. taal&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.0.0&lt;/TD&gt;
&lt;TD class=""&gt;Other undefined Status&lt;/TD&gt;
&lt;TD class=""&gt;Alles wat niet in de andere generieke status codes past&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.1.0&lt;/TD&gt;
&lt;TD class=""&gt;Other address status&lt;/TD&gt;
&lt;TD class=""&gt;Een generieke fout betreffende het emailadres&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.1.1&lt;/TD&gt;
&lt;TD class=""&gt;Bad destination mailbox address&lt;/TD&gt;
&lt;TD class=""&gt;De mailbox (deel links van de @) klopt niet of bestaat niet.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.1.2&lt;/TD&gt;
&lt;TD class=""&gt;Bad destination system address&lt;/TD&gt;
&lt;TD class=""&gt;Het domein (deel rechts van de @) klopt niet of het systeem verantwoordelijk voor het domein werkt (tijdelijk) niet&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.1.3&lt;/TD&gt;
&lt;TD class=""&gt;Bad destination mailbox address syntax&lt;/TD&gt;
&lt;TD class=""&gt;De syntax van het emailadres klopt niet&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.1.4&lt;/TD&gt;
&lt;TD class=""&gt;Destination mailbox address ambiguous&lt;/TD&gt;
&lt;TD class=""&gt;Address matched meerdere mailboxen. Systemen als Exchange kunnen hier niet mee om gaan, anderen weer wel&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.1.5&lt;/TD&gt;
&lt;TD class=""&gt;Destination address valid&lt;/TD&gt;
&lt;TD class=""&gt;Het emailadres is valide en geaccepteerd&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.1.6&lt;/TD&gt;
&lt;TD class=""&gt;Destination mailbox has moved;No forwarding address&lt;/TD&gt;
&lt;TD class=""&gt;De mailbox bestaat niet (meer) en er is geen forwarding address&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.1.7&lt;/TD&gt;
&lt;TD class=""&gt;Bad sender's mailbox address syntax&lt;/TD&gt;
&lt;TD class=""&gt;Het return adres klopt syntactisch niet&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.1.8&lt;/TD&gt;
&lt;TD class=""&gt;Bad sender's system address&lt;/TD&gt;
&lt;TD class=""&gt;Het domein van de verzender klopt niet&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.2.0&lt;/TD&gt;
&lt;TD class=""&gt;Other or undefined mailbox status&lt;/TD&gt;
&lt;TD class=""&gt;Een generieke fout betreffende de mailbox&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.2.1&lt;/TD&gt;
&lt;TD class=""&gt;Mailbox disabled;not accepting messages&lt;/TD&gt;
&lt;TD class=""&gt;De mailbox is disabled&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.2.3&lt;/TD&gt;
&lt;TD class=""&gt;Message length exceeds administrative limit&lt;/TD&gt;
&lt;TD class=""&gt;De mailbox specifieke maximum berichtgrootte is overschreden&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.2.4&lt;/TD&gt;
&lt;TD class=""&gt;Mailing list expansion problem&lt;/TD&gt;
&lt;TD class=""&gt;Een adreslijst kan niet uitgepakt worden&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.3.0&lt;/TD&gt;
&lt;TD class=""&gt;Other or undefined mail system status&lt;/TD&gt;
&lt;TD class=""&gt;Een generieke fout betreffende het mailsysteem&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.3.2&lt;/TD&gt;
&lt;TD class=""&gt;System not accepting network messages&lt;/TD&gt;
&lt;TD class=""&gt;Het mailsysteem accepteert geen berichten&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.3.3&lt;/TD&gt;
&lt;TD class=""&gt;System not capable of selected features&lt;/TD&gt;
&lt;TD class=""&gt;Geselecteerde verbs worden niet ondersteund&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.3.4&lt;/TD&gt;
&lt;TD class=""&gt;Message too big for system&lt;/TD&gt;
&lt;TD class=""&gt;De maximale berichtgrootte (of quota) van het systeem is overschreden.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.3.5&lt;/TD&gt;
&lt;TD class=""&gt;System incorrectly configured&lt;/TD&gt;
&lt;TD class=""&gt;Het systeem houdt zich niet aan de smtp syntax of het systeem is verkeerd geconfigureerd&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.4.0&lt;/TD&gt;
&lt;TD class=""&gt;Other or undefined network or routing status&lt;/TD&gt;
&lt;TD class=""&gt;Een generieke netwerk fout&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.4.1&lt;/TD&gt;
&lt;TD class=""&gt;No answer from host&lt;/TD&gt;
&lt;TD class=""&gt;Het mailsysteem reageert niet&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.4.3&lt;/TD&gt;
&lt;TD class=""&gt;Directory server failure&lt;/TD&gt;
&lt;TD class=""&gt;Kan geen verbinding maken met een directory server (DNS of AD)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.4.4&lt;/TD&gt;
&lt;TD class=""&gt;Unable to route&lt;/TD&gt;
&lt;TD class=""&gt;Kan geen route vinden&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.4.5&lt;/TD&gt;
&lt;TD class=""&gt;Mail system congestion&lt;/TD&gt;
&lt;TD class=""&gt;Het mailsysteem accepteert geen berichten meer door drukte (opstopping)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.4.6&lt;/TD&gt;
&lt;TD class=""&gt;Routing loop detected&lt;/TD&gt;
&lt;TD class=""&gt;Een mailloop is gedetecteerd op basis van systeemconfiguratie&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.5.0&lt;/TD&gt;
&lt;TD class=""&gt;Other or undefined protocol status&lt;/TD&gt;
&lt;TD class=""&gt;Generieke protocol fout&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.5.1&lt;/TD&gt;
&lt;TD class=""&gt;Invalid command&lt;/TD&gt;
&lt;TD class=""&gt;Het protocol commando bestaat niet of wordt niet ondersteunt&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.5.2&lt;/TD&gt;
&lt;TD class=""&gt;Syntax error&lt;/TD&gt;
&lt;TD class=""&gt;De syntax van het commando klopt niet&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.5.3&lt;/TD&gt;
&lt;TD class=""&gt;Too many recipients&lt;/TD&gt;
&lt;TD class=""&gt;Het maximaal aantal ontvangers per email is overschreden&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.5.4&lt;/TD&gt;
&lt;TD class=""&gt;Invalid command arguments&lt;/TD&gt;
&lt;TD class=""&gt;Gebruik van verkeerde parameters of waardes&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.5.5&lt;/TD&gt;
&lt;TD class=""&gt;Wrong protocol version&lt;/TD&gt;
&lt;TD class=""&gt;De gebruikte protocollen tussen client en server komen niet overeen&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.6.0&lt;/TD&gt;
&lt;TD class=""&gt;Other or undefined media error&lt;/TD&gt;
&lt;TD class=""&gt;Een generieke fout met de inhoud van het bericht (body of attachment); veelal een MIME fout&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.6.1&lt;/TD&gt;
&lt;TD class=""&gt;Media not supported&lt;/TD&gt;
&lt;TD class=""&gt;De inhoud van het bericht wordt niet ondersteunt&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.6.2&lt;/TD&gt;
&lt;TD class=""&gt;Conversion required and prohibited&lt;/TD&gt;
&lt;TD class=""&gt;Het bericht moet geconverteerd worden en dat staat het systeem niet toe&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.6.3&lt;/TD&gt;
&lt;TD class=""&gt;Conversion required but not supported&lt;/TD&gt;
&lt;TD class=""&gt;Het bericht moet geconverteerd worden en daartoe is het systeem niet in staat&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.6.4&lt;/TD&gt;
&lt;TD class=""&gt;Conversion with loss performed&lt;/TD&gt;
&lt;TD class=""&gt;Het bericht is geconverteerd met dataloss&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.6.5&lt;/TD&gt;
&lt;TD class=""&gt;Conversion Failed&lt;/TD&gt;
&lt;TD class=""&gt;Het converteren is mislukt&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.7.0&lt;/TD&gt;
&lt;TD class=""&gt;Other or undefined security stats&lt;/TD&gt;
&lt;TD class=""&gt;Een generieke fout betreffende beveiliging&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.7.1&lt;/TD&gt;
&lt;TD class=""&gt;Delivery not authorized; message refused&lt;/TD&gt;
&lt;TD class=""&gt;Filtering staat niet toe dat de verzender een bericht af kan leveren bij de ontvanger&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.7.2&lt;/TD&gt;
&lt;TD class=""&gt;Mailing list expansion prohibited&lt;/TD&gt;
&lt;TD class=""&gt;Het uitpakken van adreslijsten is niet toegestaan&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.7.3&lt;/TD&gt;
&lt;TD class=""&gt;Security conversion required but not possible&lt;/TD&gt;
&lt;TD class=""&gt;De verandering van het ene security protocol naar het andere is vereist maar mislukt&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.7.4&lt;/TD&gt;
&lt;TD class=""&gt;Security features not supported&lt;/TD&gt;
&lt;TD class=""&gt;Bepaalde security features worden niet ondersteund.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.7.5&lt;/TD&gt;
&lt;TD class=""&gt;Cryptographic failure&lt;/TD&gt;
&lt;TD class=""&gt;Er is een probleem opgetreden met cryptografische bewerken zoals bijv het decrypten van data via TLS&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.7.6&lt;/TD&gt;
&lt;TD class=""&gt;Cryptographic algorithm not supported&lt;/TD&gt;
&lt;TD class=""&gt;Een bepaalde encrypty algoritm wordt niet ondersteund.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" align=right&gt;5.7.7&lt;/TD&gt;
&lt;TD class=""&gt;Message integrity failure&lt;/TD&gt;
&lt;TD class=""&gt;De integriteit van het bericht is aangetast en daardoor wordt het niet geaccepteerd.&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3127140" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/mpriem/archive/tags/Exchange+2007/default.aspx">Exchange 2007</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Windows+Server/default.aspx">Windows Server</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Exchange+2000/default.aspx">Exchange 2000</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Exchange+2003/default.aspx">Exchange 2003</category></item><item><title>Handige one-liners</title><link>http://blogs.technet.com/mpriem/archive/2007/04/23/handige-one-liners.aspx</link><pubDate>Mon, 23 Apr 2007 12:20:00 GMT</pubDate><guid isPermaLink="false">d5e57398-b9ef-4490-9955-07cbb4e4a80d:3127118</guid><dc:creator>mpriem</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.technet.com/mpriem/comments/3127118.aspx</comments><wfw:commentRss>http://blogs.technet.com/mpriem/commentrss.aspx?PostID=3127118</wfw:commentRss><description>&lt;P&gt;Heel vaak heb ik een lijstjes moeten genereren van allerlei parameters m.b.t. Active Directory.. Meestal vergeet ik die commando's het moment dat ik ze gebruikt heb. Op de &lt;A href="http://blog.sapien.com/current/2006/11/28/command-line-one-liners.html" mce_href="http://blog.sapien.com/current/2006/11/28/command-line-one-liners.html"&gt;SAPIEN&lt;/A&gt; website vond ik een tijdje terug een zeer handige lijst met one-liners, gepost door Jeffery Hicks, die ik voor het gemak ook maar hieronder gepost heb: &lt;IMG class=mce_plugin_wordpress_more title=More... height=10 alt=More... src="http://www.spurius.nl/wp-includes/js/tinymce/themes/advanced/images/spacer.gif" width="100%" name=mce_plugin_wordpress_more moretext=""&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;FSMO Roles&lt;/STRONG&gt;&lt;BR&gt;ntdsutilroles Connections "Connect to server %logonserver%" Quit "selectOperation Target" "List roles for conn server" Quit Quit Quit&lt;BR&gt;&lt;STRONG&gt;Domain Controllers&lt;/STRONG&gt;&lt;BR&gt;Nltest /dclist:%userdnsdomain%&lt;BR&gt;&lt;STRONG&gt;Domain Controller IP Configuration &lt;/STRONG&gt;&lt;BR&gt;for /f %i in ('dsquery server -domain %userdnsdomain% -o rdn') do psexec \\%i ipconfig /all&lt;BR&gt;&lt;STRONG&gt;Hotfix info&lt;BR&gt;&lt;/STRONG&gt;wmic qfe&lt;BR&gt;&lt;STRONG&gt;Stale computer accounts &lt;/STRONG&gt;&lt;BR&gt;dsquery computer domainroot -stalepwd 180 -limit 0&lt;BR&gt;&lt;STRONG&gt;Stale user accounts &lt;/STRONG&gt;&lt;BR&gt;dsquery user domainroot -stalepwd 180 -limit 0&lt;BR&gt;&lt;STRONG&gt;Disabled user accounts &lt;/STRONG&gt;&lt;BR&gt;dsquery user domainroot -disabled -limit 0&lt;BR&gt;&lt;STRONG&gt;AD Database disk usage &lt;/STRONG&gt;&lt;BR&gt;for /f %i in ('dsquery server -domain %userdnsdomain% -o rdn') do dir \\%i\admin$\ntds&lt;BR&gt;&lt;STRONG&gt;Global Catalog Servers from DNS &lt;/STRONG&gt;&lt;BR&gt;dnscmd %logonserver% /enumrecords %userdnsdomain% _tcp | find /i "3268"&lt;BR&gt;&lt;STRONG&gt;Global Catalog Servers from AD &lt;/STRONG&gt;&lt;BR&gt;dsquery * "CN=Configuration,DC=forestRootDomain" -filter "(&amp;amp;(objectCategory=nTDSDSA)(options:1.2.840.113556.1.4.803:=1))"&lt;BR&gt;&lt;STRONG&gt;Users with no logon script &lt;/STRONG&gt;&lt;BR&gt;dsquery * domainroot -filter"(&amp;amp;(objectCategory=Person)(objectClass=User)(!scriptPath=*))"-limit 0 -attr sAMAccountName sn givenName pwdLastSet distinguishedName&lt;BR&gt;&lt;STRONG&gt;User accounts with no pwd required &lt;/STRONG&gt;&lt;BR&gt;dsquery * domainroot -filter "(&amp;amp;(objectCategory=Person)(objectClass=User)(userAccountControl:1.2.840.113556.1.4.803:=32))"&lt;BR&gt;&lt;STRONG&gt;User accounts with no pwd expiry &lt;/STRONG&gt;&lt;BR&gt;dsquery * domainroot -filter"(&amp;amp;(objectCategory=Person)(objectClass=User)(userAccountControl:1.2.840.113556.1.4.803:=65536))"&lt;BR&gt;&lt;STRONG&gt;User accounts that are disabled &lt;/STRONG&gt;&lt;BR&gt;dsquery * domainroot -filter "(&amp;amp;(objectCategory=Person)(objectClass=User)(userAccountControl:1.2.840.113556.1.4.803:=2))"&lt;BR&gt;&lt;STRONG&gt;DNS Information &lt;/STRONG&gt;&lt;BR&gt;for /f %i in ('dsquery server -domain %userdnsdomain% -o rdn') do dnscmd %i /info&lt;BR&gt;&lt;STRONG&gt;DNS Zone Detailed information &lt;/STRONG&gt;&lt;BR&gt;dnscmd /zoneinfo %userdnsdomain%&lt;BR&gt;&lt;STRONG&gt;Garbage Collection and tombstone &lt;/STRONG&gt;&lt;BR&gt;dsquery * "cn=Directory Service,cn=WindowsNT,cn=Services,cn=Configuration,DC=forestRootDomain" -attrgarbageCollPeriod tombstoneLifetime&lt;BR&gt;&lt;STRONG&gt;Netsh authorised DHCP Servers &lt;/STRONG&gt;&lt;BR&gt;netsh dhcp show server&lt;BR&gt;&lt;STRONG&gt;DSQuery authorised DHCP Servers &lt;/STRONG&gt;&lt;BR&gt;Dsquery * "cn=NetServices,cn=Services,cn=Configuration, DC=forestRootDomain" -attr dhcpServers&lt;BR&gt;&lt;STRONG&gt;DHCP server information &lt;/STRONG&gt;&lt;BR&gt;netsh dhcp server \\DHCP_SERVER show all&lt;BR&gt;&lt;STRONG&gt;DHCP server dump &lt;/STRONG&gt;&lt;BR&gt;netsh dhcp server \\DHCP_SERVER dump&lt;BR&gt;&lt;STRONG&gt;WINS serer information &lt;/STRONG&gt;&lt;BR&gt;Netsh wins server \\WINS_SERVER dump&lt;BR&gt;&lt;STRONG&gt;Group Policy Verification Tool &lt;/STRONG&gt;&lt;BR&gt;gpotool.exe /checkacl /verbose&lt;BR&gt;&lt;STRONG&gt;AD OU membership &lt;/STRONG&gt;&lt;BR&gt;dsquery computer -limit 0&lt;BR&gt;&lt;STRONG&gt;AD OU membership &lt;/STRONG&gt;&lt;BR&gt;dsquery user -limit 0&lt;BR&gt;&lt;STRONG&gt;List Service Principal Names &lt;/STRONG&gt;&lt;BR&gt;for /f %i in ('dsquery server -domain %userdnsdomain% -o rdn') do setspn -L %i&lt;BR&gt;&lt;STRONG&gt;Compare DC Replica Object Count &lt;/STRONG&gt;&lt;BR&gt;dsastat ?s:DC1;DC2;... ?b:Domain ?gcattrs:objectclass ?p:999&lt;BR&gt;&lt;IMG class=mce_plugin_wordpress_page title=...page... height=10 alt=...page... src="http://www.spurius.nl/wp-includes/js/tinymce/themes/advanced/images/spacer.gif" width="100%" name=mce_plugin_wordpress_page&gt;&lt;BR&gt;&lt;STRONG&gt;Check AD ACLs &lt;/STRONG&gt;&lt;BR&gt;acldiag dc=domainTree&lt;BR&gt;&lt;STRONG&gt;NTFRS Replica Sets &lt;/STRONG&gt;&lt;BR&gt;for /f %i in ('dsquery server -domain %userdnsdomain% -o rdn') do ntfrsutl sets %i&lt;BR&gt;&lt;STRONG&gt;NTFRS DS View &lt;/STRONG&gt;&lt;BR&gt;for /f %i in ('dsquery server -domain %userdnsdomain% -o rdn') do ntfrsutl ds %i&lt;BR&gt;&lt;STRONG&gt;Domain Controllers per site &lt;/STRONG&gt;&lt;BR&gt;Dsquery * "CN=Sites,CN=Configuration,DC=forestRootDomain" -filter (objectCategory=Server)&lt;BR&gt;&lt;STRONG&gt;DNS Zones in AD &lt;/STRONG&gt;&lt;BR&gt;for /f %i in ('dsquery server -o rdn') do Dsquery * -s %i domainroot -filter (objectCategory=dnsZone)&lt;BR&gt;&lt;STRONG&gt;Enumerate DNS Server Zones &lt;/STRONG&gt;&lt;BR&gt;for /f %i in ('dsquery server -o rdn') do dnscmd %i /enumzones&lt;BR&gt;&lt;STRONG&gt;Subnet information &lt;/STRONG&gt;&lt;BR&gt;Dsquery subnet ?limit 0&lt;BR&gt;&lt;STRONG&gt;List Organisational Units &lt;/STRONG&gt;&lt;BR&gt;Dsquery OU&lt;BR&gt;&lt;STRONG&gt;ACL on all OUs &lt;/STRONG&gt;&lt;BR&gt;For /f "delims=|" %i in ('dsquery OU') do acldiag %i&lt;BR&gt;&lt;STRONG&gt;Domain Trusts &lt;/STRONG&gt;&lt;BR&gt;nltest /domain_trusts /v&lt;BR&gt;&lt;STRONG&gt;Print DNS Zones &lt;/STRONG&gt;&lt;BR&gt;dnscmd DNSServer /zoneprint DNSZone&lt;BR&gt;&lt;STRONG&gt;Active DHCP leases &lt;/STRONG&gt;&lt;BR&gt;For /f %i in (DHCPServers.txt) do for /f "delims=- " %j in ('"netshdhcp server \\%i show scope | find /i "active""') do netsh dhcp server\\%i scope %j show clientsv5&lt;BR&gt;&lt;STRONG&gt;DHCP Server Active Scope Info&lt;/STRONG&gt;&lt;BR&gt;For /f %i in (DHCPServers.txt) do netsh dhcp server \\%i show scope | find /i "active"&lt;BR&gt;&lt;STRONG&gt;Resolve DHCP clients hostnames &lt;/STRONG&gt;&lt;BR&gt;for /f "tokens=1,2,3 delims=," %i in (Output from 'Find Subnets fromDHCP clients') do @for /f "tokens=2 delims=: " %m in ('"nslookup %j |find /i "Name:""') do echo %m,%j,%k,%i&lt;BR&gt;&lt;STRONG&gt;Find two online PCs per subnet &lt;/STRONG&gt;&lt;BR&gt;Echo. &amp;gt; TwoClientsPerSubnet.txt &amp;amp; for /f "tokens=1,2,3,4delims=, " %i in ('"find /i "pc" 'Output from Resolve DHCP clientshostnames'"') do for /f "tokens=3 skip=1 delims=: " %m in ('"Find /i /c"%l" TwoClientsPerSubnet.txt"') do If %m LEQ 1 for /f %p in ('"ping -n1 %i | find /i /c "(0% loss""') do If %p==1 Echo %i,%j,%k,%l&lt;BR&gt;&lt;STRONG&gt;AD Subnet and Site Information &lt;/STRONG&gt;&lt;BR&gt;dsquery * "CN=Subnets,CN=Sites,CN=Configuration,DC=forestRootDomain" -attr cn siteObject description location&lt;BR&gt;&lt;IMG class=mce_plugin_wordpress_page title=...page... height=10 alt=...page... src="http://www.spurius.nl/wp-includes/js/tinymce/themes/advanced/images/spacer.gif" width="100%" name=mce_plugin_wordpress_page&gt;&lt;BR&gt;&lt;STRONG&gt;AD Site Information &lt;/STRONG&gt;&lt;BR&gt;dsquery * "CN=Sites,CN=Configuration,DC=forestRootDomain" -attr cn description location -filter (objectClass=site)&lt;BR&gt;&lt;STRONG&gt;Printer Queue Objects in AD &lt;/STRONG&gt;&lt;BR&gt;dsquery * domainroot -filter "(objectCategory=printQueue)" -limit 0&lt;BR&gt;&lt;STRONG&gt;Group Membership with user details &lt;/STRONG&gt;&lt;BR&gt;dsget group "groupDN" -members | dsget user -samid -fn -mi -ln -display -empid -desc -office -tel -email -title -dept -mgr&lt;BR&gt;&lt;STRONG&gt;Total DHCP Scopes &lt;/STRONG&gt;&lt;BR&gt;find /i "subnet" "Output from DHCP server information" | find /i "subnet"&lt;BR&gt;&lt;STRONG&gt;Site Links and Cost&lt;/STRONG&gt;&lt;BR&gt;dsquery * "CN=Sites,CN=Configuration,DC=forestRootDomain" -attr cn costdescription replInterval siteList -filter (objectClass=siteLink)&lt;BR&gt;&lt;STRONG&gt;Time gpresult &lt;/STRONG&gt;&lt;BR&gt;timethis gpresult /v&lt;BR&gt;&lt;STRONG&gt;Check time against Domain &lt;/STRONG&gt;&lt;BR&gt;w32tm /monitor /computers:ForestRootPDC&lt;BR&gt;&lt;STRONG&gt;Domain Controller Diagnostics &lt;/STRONG&gt;&lt;BR&gt;dcdiag /s:%logonserver% /v /e /c&lt;BR&gt;&lt;STRONG&gt;Domain Replication Bridgeheads &lt;/STRONG&gt;&lt;BR&gt;repadmin /bridgeheads&lt;BR&gt;&lt;STRONG&gt;Replication Failures from KCC &lt;/STRONG&gt;&lt;BR&gt;repadmin /failcache&lt;BR&gt;&lt;STRONG&gt;Inter-site Topology servers per site &lt;/STRONG&gt;&lt;BR&gt;Repadmin /istg * /verbose&lt;BR&gt;&lt;STRONG&gt;Replication latency &lt;/STRONG&gt;&lt;BR&gt;repadmin /latency /verbose&lt;BR&gt;&lt;STRONG&gt;Queued replication requests &lt;/STRONG&gt;&lt;BR&gt;repadmin /queue *&lt;BR&gt;&lt;STRONG&gt;Show connections for a DC &lt;/STRONG&gt;&lt;BR&gt;repadmin /showconn *&lt;BR&gt;&lt;STRONG&gt;Replication summary &lt;/STRONG&gt;&lt;BR&gt;Repadmin /replsummary&lt;BR&gt;&lt;STRONG&gt;Show replication partners &lt;/STRONG&gt;&lt;BR&gt;repadmin /showrepl * /all&lt;BR&gt;&lt;STRONG&gt;All DCs in the forest &lt;/STRONG&gt;&lt;BR&gt;repadmin /viewlist *&lt;BR&gt;&lt;STRONG&gt;ISTG from AD attributes &lt;/STRONG&gt;&lt;BR&gt;dsquery * "CN=NTDS Site Settings,CN=siteName,CN=Sites,CN=Configuration,DC=forestRootDomain" -attr interSiteTopologyGenerator&lt;BR&gt;&lt;STRONG&gt;Return the object if KCC Intra/Inter site is disabled for each site &lt;/STRONG&gt;&lt;BR&gt;Dsquery site | dsquery * -attr * -filter "(|(Options:1.2.840.113556.1.4.803:=1)(Options:1.2.840.113556.1.4.803:=16))"&lt;BR&gt;&lt;STRONG&gt;Find all connection objects &lt;/STRONG&gt;&lt;BR&gt;dsquery * forestRoot -filter (objectCategory=nTDSConnection) ?attr distinguishedName fromServer whenCreated displayName&lt;BR&gt;&lt;STRONG&gt;Find all connection schedules &lt;/STRONG&gt;&lt;BR&gt;&lt;IMG class=mce_plugin_wordpress_page title=...page... height=10 alt=...page... src="http://www.spurius.nl/wp-includes/js/tinymce/themes/advanced/images/spacer.gif" width="100%" name=mce_plugin_wordpress_page&gt;&lt;BR&gt;adfind -b "cn=Configuration,dc=qraps,dc=com,dc=au" -f "objectcategory=ntdsConnection" cn Schedule -csv&lt;BR&gt;&lt;STRONG&gt;Software Information for each server &lt;/STRONG&gt;&lt;BR&gt;for /f %i in (Output from 'Domain Controllers') do psinfo \\%i &amp;amp;filever \\%i\admin$\explorer.exe \\%i\admin$\system32\vbscript.dll\\%i\admin$\system32\kernel32.dll \\%i\admin$\system32\wbem\winmgmt.exe\\%i\admin$\system32\oleaut32.dll&lt;BR&gt;&lt;STRONG&gt;Check Terminal Services Delete Temp on Exit flag&lt;/STRONG&gt;&lt;BR&gt;For /f %i in (Output from 'Domain Controllers') do Reg query"\\%i\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer" /v DeleteTempDirsOnExit&lt;BR&gt;&lt;STRONG&gt;For each XP workstation, query the current site and what Group Policy info &lt;/STRONG&gt;&lt;BR&gt;@dsquery * domainroot -filter"(&amp;amp;(objectCategory=Computer)(operatingSystem=Windows XPProfessional))" -limit 0 -attr cn &amp;gt; Workstations.txt &amp;amp; @For /f%i in (Workstations.txt) do @ping %i -n 1 &amp;gt;NUL &amp;amp; @if ErrorLevel0 If NOT ErrorLevel 1 @Echo %i &amp;amp; for /f "tokens=3" %k in ('"regquery "\\%i\hklm\software\microsoft\windows\currentversion\grouppolicy\history" /v DCName | Find /i "DCName""') do @for /f %m in('"nltest /server:%i /dsgetsite | find /i /v "completedsuccessfully""') do @echo %i,%k,%m&lt;BR&gt;&lt;STRONG&gt;Information on existing GPOs &lt;/STRONG&gt;&lt;BR&gt;dsquery * "CN=Policies,CN=System,domainRoot" -filter"(objectCategory=groupPolicyContainer)" -attr displayName cnwhenCreated gPCFileSysPath&lt;BR&gt;&lt;STRONG&gt;Copy all Group Policy .pol files &lt;/STRONG&gt;&lt;BR&gt;for /f "tokens=1-8 delims=\" %i in ('dir /b /s\\%userdnsdomain%\sysvol\%userdnsdomain%\policies\*.pol') do @echo copy\\%i\%j\%k\%l\%m\%n\%o %m_%n.pol&lt;BR&gt;&lt;STRONG&gt;Domain Controller Netlogon entries &lt;/STRONG&gt;&lt;BR&gt;for /f %i in ('dsquery server /o rdn') do echo %i &amp;amp; reg query\\%i\hklm\system\currentcontrolset\services\netlogon\parameters&lt;BR&gt;&lt;STRONG&gt;WINS Statistics &lt;/STRONG&gt;&lt;BR&gt;for /f "tokens=1,2 delims=," %i in (WINSServers.txt) do netsh wins server \\%i show statistics&lt;BR&gt;&lt;STRONG&gt;WINS Record counts per server &lt;/STRONG&gt;&lt;BR&gt;for /f "tokens=1,2 delims=," %i in (WINSServers.txt) do netsh wins server \\%i show reccount %i&lt;BR&gt;&lt;STRONG&gt;WINS Server Information &lt;/STRONG&gt;&lt;BR&gt;for /f "tokens=2 delims=," %i in (WINSServers.txt) do netsh wins server \\%i show info&lt;BR&gt;&lt;STRONG&gt;WINS Server Dump &lt;/STRONG&gt;&lt;BR&gt;for /f "tokens=2 delims=," %i in (WINSServers.txt) do netsh wins server \\%i dump&lt;BR&gt;&lt;STRONG&gt;WINS Static Records per Server &lt;/STRONG&gt;&lt;BR&gt;netsh wins server \\LocalWINSServer show database servers={} rectype=1&lt;BR&gt;&lt;STRONG&gt;Find policy display name given the GUID&lt;/STRONG&gt;&lt;BR&gt;dsquery * "CN=Policies,CN=System,DC=domainRoot" -filter (objectCategory=groupPolicyContainer) -attr Name displayName&lt;BR&gt;&lt;STRONG&gt;Find empty groups&lt;/STRONG&gt;&lt;BR&gt;dsquery * -filter "&amp;amp;(objectCategory=group)(!member=*)" -limit 0-attr whenCreated whenChanged groupType sAMAccountNamedistinguishedName memberOf&lt;BR&gt;&lt;STRONG&gt;Find remote NIC bandwidth &lt;/STRONG&gt;&lt;BR&gt;wmic /node:%server% path Win32_PerfRawData_Tcpip_NetworkInterface GET Name,CurrentBandwidth&lt;BR&gt;&lt;STRONG&gt;Find remote free physical memory &lt;/STRONG&gt;&lt;BR&gt;wmic /node:%Computer% path Win32_OperatingSystem GET FreePhysicalMemory&lt;BR&gt;&lt;STRONG&gt;Find remote system information &lt;/STRONG&gt;&lt;BR&gt;SystemInfo /s %Computer%&lt;BR&gt;&lt;STRONG&gt;Disk statistics, including the number of files on the filesystem &lt;/STRONG&gt;&lt;BR&gt;chkdsk /i /c&lt;BR&gt;&lt;IMG class=mce_plugin_wordpress_page title=...page... height=10 alt=...page... src="http://www.spurius.nl/wp-includes/js/tinymce/themes/advanced/images/spacer.gif" width="100%" name=mce_plugin_wordpress_page&gt;&lt;BR&gt;&lt;STRONG&gt;Query IIS web sites &lt;/STRONG&gt;&lt;BR&gt;iisweb /s %Server% /query "Default Web Site"&lt;BR&gt;&lt;STRONG&gt;Check port state and connectivity &lt;/STRONG&gt;&lt;BR&gt;portqry -n %server% -e %endpoint% -v&lt;BR&gt;&lt;STRONG&gt;Forest/Domain Functional Levels &lt;/STRONG&gt;&lt;BR&gt;ldifde -d cn=partitions,cn=configuration,dc=%domain% -r"(|(systemFlags=3)(systemFlags=-2147483648))" -lmsds-behavior-version,dnsroot,ntmixeddomain,NetBIOSName -p subtree -fcon&lt;BR&gt;&lt;STRONG&gt;Forest/Domain Functional Levels &lt;/STRONG&gt;&lt;BR&gt;dsquery * cn=partitions,cn=configuration,dc=%domain% -filter"(|(systemFlags=3)(systemFlags=-2147483648))" -attrmsDS-Behavior-Version Name dnsroot ntmixeddomain NetBIOSName&lt;BR&gt;&lt;STRONG&gt;Find the parent of a process &lt;/STRONG&gt;&lt;BR&gt;wmic path Win32_Process WHERE Name='notepad.exe' GET Name,ParentProcessId&lt;BR&gt;&lt;STRONG&gt;Lookup SRV records from DNS &lt;/STRONG&gt;&lt;BR&gt;nslookup -type=srv _ldap._tcp.dc._msdcs.{domainRoot}&lt;BR&gt;&lt;STRONG&gt;Find when the AD was installed &lt;/STRONG&gt;&lt;BR&gt;dsquery * cn=configuration,DC=forestRootDomain -attr whencreated -scope base&lt;BR&gt;&lt;STRONG&gt;Enumerate the trusts from the specified domain &lt;/STRONG&gt;&lt;BR&gt;dsquery * "CN=System,DC=domainRoot" -filter "(objectClass=trustedDomain)" -attr trustPartner flatName&lt;BR&gt;&lt;STRONG&gt;Find a DC for each trusted domain &lt;/STRONG&gt;&lt;BR&gt;for /f "skip=1" %i in ('"dsquery * CN=System,DC=domainRoot -filter(objectClass=trustedDomain) -attr trustPartner"') do nltest /dsgetdc:%i&lt;BR&gt;&lt;STRONG&gt;Check the notification packages installed on all DCs &lt;/STRONG&gt;&lt;BR&gt;for /f %i in ('dsquery server /o rdn') do @for /f "tokens=4" %m in('"reg query\\%i\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa /v"Notification Packages" | find /i "Notification""') do @echo %i,%m&lt;BR&gt;&lt;STRONG&gt;List ACLs in SDDL format &lt;/STRONG&gt;&lt;BR&gt;setacl -on %filepath% -ot file -actn list -lst f:sddl&lt;BR&gt;&lt;STRONG&gt;Find out if a user account is currently enabled or disabled &lt;/STRONG&gt;&lt;BR&gt;dsquery user DC=%userdnsdomain:.=,DC=% -name %username% | dsget user -disabled -dn&lt;BR&gt;&lt;STRONG&gt;Find servers in the domain &lt;/STRONG&gt;&lt;BR&gt;dsquery * domainroot -filter "(&amp;amp;(objectCategory=Computer)(objectClass=Computer)(operatingSystem=*Server*))" -limit 0&lt;BR&gt;&lt;STRONG&gt;Open DS query window &lt;/STRONG&gt;&lt;BR&gt;rundll32 dsquery,OpenQueryWindow&lt;/P&gt;&lt;img src="http://blogs.technet.com/aggbug.aspx?PostID=3127118" width="1" height="1"&gt;</description><category domain="http://blogs.technet.com/mpriem/archive/tags/Windows+Server/default.aspx">Windows Server</category><category domain="http://blogs.technet.com/mpriem/archive/tags/command+line/default.aspx">command line</category><category domain="http://blogs.technet.com/mpriem/archive/tags/cmd/default.aspx">cmd</category><category domain="http://blogs.technet.com/mpriem/archive/tags/Active+Directory/default.aspx">Active Directory</category></item></channel></rss>