<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.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>Obscurum per Obscurius : Time Savers</title><link>http://blogs.msdn.com/muaddib/archive/tags/Time+Savers/default.aspx</link><description>Tags: Time Savers</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Windows 7 Tip and Tricks - A Must Read!</title><link>http://blogs.msdn.com/muaddib/archive/2009/11/19/windows-7-tip-and-tricks-a-must-read.aspx</link><pubDate>Thu, 19 Nov 2009 14:06:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9925444</guid><dc:creator>MuadDib</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/muaddib/comments/9925444.aspx</comments><wfw:commentRss>http://blogs.msdn.com/muaddib/commentrss.aspx?PostID=9925444</wfw:commentRss><description>As a Microsoft employee I have been using Windows 7 since the early internal betas. I have been impressed with the operating system (OS) since day one and it has improved with each iteration leading up to release. There are some nice, obvious user interface...(&lt;a href="http://blogs.msdn.com/muaddib/archive/2009/11/19/windows-7-tip-and-tricks-a-must-read.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9925444" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/muaddib/archive/tags/Time+Savers/default.aspx">Time Savers</category><category domain="http://blogs.msdn.com/muaddib/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://blogs.msdn.com/muaddib/archive/tags/Tips+_2600_amp_3B00_+Tricks/default.aspx">Tips &amp;amp; Tricks</category></item><item><title>Who Is Logged In?</title><link>http://blogs.msdn.com/muaddib/archive/2009/08/09/who-is-logged-in.aspx</link><pubDate>Mon, 10 Aug 2009 01:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9862816</guid><dc:creator>MuadDib</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/muaddib/comments/9862816.aspx</comments><wfw:commentRss>http://blogs.msdn.com/muaddib/commentrss.aspx?PostID=9862816</wfw:commentRss><description>A few months back one of my customers was trying use RDP to connect to a large number of desktop computers to manually install some security updates. If the computer was being used the admin had to wait until the person using the computer logged out and...(&lt;a href="http://blogs.msdn.com/muaddib/archive/2009/08/09/who-is-logged-in.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9862816" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/muaddib/archive/tags/Time+Savers/default.aspx">Time Savers</category><category domain="http://blogs.msdn.com/muaddib/archive/tags/Script/default.aspx">Script</category></item><item><title>Using a Logon Script to Install the SMS Advanced Client</title><link>http://blogs.msdn.com/muaddib/archive/2008/10/19/using-a-logon-script-to-install-the-sms-advanced-client.aspx</link><pubDate>Sun, 19 Oct 2008 16:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9006252</guid><dc:creator>MuadDib</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/muaddib/comments/9006252.aspx</comments><wfw:commentRss>http://blogs.msdn.com/muaddib/commentrss.aspx?PostID=9006252</wfw:commentRss><description>&lt;P&gt;One of my customers has an extensive lab environment with multiple forests, domains and workgroup computers.&amp;nbsp; SMS 2003 was deployed to help manage the configuration of all these different systems.&amp;nbsp; Between the locked down&amp;nbsp;security settings (no C$, ADMIN$ shares!)&amp;nbsp;and the number&amp;nbsp;separate&amp;nbsp;forest/domains/workgroups involved the ability to "push" the advanced client&amp;nbsp;to desktops is no longer an option.&amp;nbsp; After meeting with the client last week we decided to configure a logon script to install the SMS client.&amp;nbsp; The script and associated files (CCMSETUP.EXE, CLIENT.MSI, SMSCLIENT.VBS) were placed in a folder named SMS in the NETLOGON share of the Domain Controllers.&amp;nbsp; We then configured the LOGON SCRIPT properties of the Domain Administrator account to run the SMSSTARTUP.VBS script shown below to install the client.&lt;/P&gt;
&lt;P&gt;Now for a quick run through of the code.&amp;nbsp; &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Declare our variables and create the objects we will be working with.&amp;nbsp; &lt;/LI&gt;
&lt;LI&gt;Determine the path to the NETLOGON \SMS folder we are using.&lt;/LI&gt;
&lt;LI&gt;Check to see if the SMS client is installed (Set oSMSClient ... If Err.Number....)&lt;/LI&gt;
&lt;LI&gt;Display a timed popup message with a Cancel button&lt;/LI&gt;
&lt;LI&gt;Copy install files to local computer.&lt;/LI&gt;
&lt;LI&gt;Run installation script (SMSCLIENT.VBS)&lt;/LI&gt;
&lt;LI&gt;Set commands in the RunOnce registry key to delete the SMSCLIENTINSTALL folder the next time someone logs in.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;SMSSTARTUP.VBS&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;'**********************************************&lt;BR&gt;'&amp;nbsp; SCRIPT: SMSStartup.VBS&lt;BR&gt;'&amp;nbsp; AUTHOR: &lt;BR&gt;'&amp;nbsp; DATE:&amp;nbsp;&amp;nbsp; 10/16/2008&lt;BR&gt;' VERSION: 2.0&lt;BR&gt;' PURPOSE: Check for thr presence of the SMS client,&lt;BR&gt;'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;if not installed, copy files from the &lt;BR&gt;'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; network to c:\smsclientinstall and install&lt;BR&gt;'&amp;nbsp;USAGE:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SMSStartup.vbs&lt;BR&gt;'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;'REVISION:&amp;nbsp;10/17/2008 added check&lt;BR&gt;'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;to make sure files and folders exist &lt;BR&gt;'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; before moving to next step in script&lt;BR&gt;'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;'**********************************************&lt;BR&gt;OPTION EXPLICIT&lt;BR&gt;On Error Resume Next&lt;/P&gt;
&lt;P&gt;Dim oSMSClient, intButton,objWshShell,sFolder, objFSO, sCurrentPath&lt;BR&gt;Dim oExec&lt;/P&gt;
&lt;P&gt;Set objFSO = CreateObject("Scripting.FileSystemObject")&lt;BR&gt;Set objWshShell = WScript.CreateObject("WScript.Shell")&lt;BR&gt;Set oSMSClient = CreateObject ("Microsoft.SMS.Client")&lt;/P&gt;
&lt;P&gt;'Folder to copy SMS install files to &lt;BR&gt;sFolder = "C:\SMSCLIENTINSTALL"&lt;/P&gt;
&lt;P&gt;WScript.Sleep 15000&lt;/P&gt;
&lt;P&gt;'Build path to SMS files&lt;BR&gt;sCurrentPath = objWshShell.ExpandEnvironmentStrings("%LOGONSERVER%")&lt;BR&gt;sCurrentPath = sCurrentPath &amp;amp; "\NETLOGON\SMS"&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If Err.Number &amp;lt;&amp;gt; 0 Then 'change to zero when testing complete&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Clear error buffer &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; err.clear&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; objWshShell.LogEvent 2, "SMS Client is not installed, installing now."&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; intButton=objWshShell.Popup("Installaing SMS Client software on this computer in the background",5,"SMS Client Software Installation",1)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'wscript.echo intbutton&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If intButton = 2 Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objWshShell.LogEvent 1, "SMS Client installation was cancelled by the user"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wscript.quit&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;'copy files to local computer and begin client installation&lt;BR&gt;&amp;nbsp;Do While objFSO.FolderExists(sFolder) &amp;lt;&amp;gt; TRUE&lt;BR&gt;&amp;nbsp;&amp;nbsp;CreateFolder sFolder&lt;BR&gt;&amp;nbsp;&amp;nbsp;WScript.Sleep 10000&lt;BR&gt;&amp;nbsp;Loop&lt;/P&gt;
&lt;P&gt;&amp;nbsp;'copy files&lt;BR&gt;&amp;nbsp;'Check for files before continuing to next file&lt;BR&gt;&amp;nbsp;Do While objFSO.FileExists(sFolder &amp;amp; "\SMSCLIENT.VBS") &amp;lt;&amp;gt; TRUE&lt;BR&gt;&amp;nbsp;&amp;nbsp;objFSO.CopyFile sCurrentPath &amp;amp; "\SMSCLIENT.VBS", sFolder &amp;amp; "\", TRUE&lt;BR&gt;&amp;nbsp;&amp;nbsp;wscript.sleep 2000&lt;BR&gt;&amp;nbsp;Loop&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;Do While objFSO.FileExists(sFolder &amp;amp; "\Client.msi") &amp;lt;&amp;gt; TRUE&lt;BR&gt;&amp;nbsp;&amp;nbsp;objFSO.CopyFile sCurrentPath &amp;amp; "\client.msi", sFolder &amp;amp; "\", TRUE&lt;BR&gt;&amp;nbsp;&amp;nbsp;wscript.sleep 2000&lt;BR&gt;&amp;nbsp;Loop&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;Do While objFSO.FileExists(sFolder &amp;amp; "\ccmsetup.exe") &amp;lt;&amp;gt; TRUE&lt;BR&gt;&amp;nbsp;&amp;nbsp;objFSO.CopyFile sCurrentPath &amp;amp; "\ccmsetup.exe", sFolder &amp;amp; "\", TRUE&lt;BR&gt;&amp;nbsp;&amp;nbsp;wscript.sleep 2000&lt;BR&gt;&amp;nbsp;Loop&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'now run sms client install&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set oExec = objWshShell.Exec("wscript.exe " &amp;amp; sFolder &amp;amp; "\SMSCLIENT.VBS")&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Do While oExec.Status = 0&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WScript.Sleep 1000&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Loop&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;'delete the folder by adding command to the Runonce key&lt;BR&gt;&amp;nbsp;'CMD.exe /c "RD /s /q c:\SMSCLIENTINSTALL"&lt;BR&gt;&amp;nbsp;objWshShell.RegWrite "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\SMS", "CMD.EXE /c " &amp;amp; CHR(34) &amp;amp; "RD /s /q C:\SMSCLIENTINSTALL" &amp;amp; CHR(34), "REG_SZ"&lt;/P&gt;
&lt;P mce_keep="true"&gt;Else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'Computer has client, quit&lt;BR&gt;&amp;nbsp;wscript.quit&lt;BR&gt;End If&lt;/P&gt;
&lt;P&gt;Function CreateFolder(folder)&lt;BR&gt;&amp;nbsp;&amp;nbsp; Dim ofso, f&lt;BR&gt;&amp;nbsp;&amp;nbsp; Set ofso = CreateObject("Scripting.FileSystemObject")&lt;BR&gt;&amp;nbsp;&amp;nbsp; Set f = ofso.CreateFolder(folder)&lt;BR&gt;&amp;nbsp;&amp;nbsp; CreateFolder = f.Path&lt;BR&gt;End Function&lt;/P&gt;
&lt;P&gt;Sub DeleteAFolder(filespec)&lt;BR&gt;&amp;nbsp;&amp;nbsp; Dim ofso&lt;BR&gt;&amp;nbsp;&amp;nbsp; Set ofso = CreateObject("Scripting.FileSystemObject")&lt;BR&gt;&amp;nbsp;&amp;nbsp; ofso.DeleteFolder filespec,TRUE&lt;BR&gt;End Sub&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9006252" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/muaddib/archive/tags/Time+Savers/default.aspx">Time Savers</category><category domain="http://blogs.msdn.com/muaddib/archive/tags/Script/default.aspx">Script</category><category domain="http://blogs.msdn.com/muaddib/archive/tags/SMS/default.aspx">SMS</category></item><item><title>Configuring SMS to Work on Workgroup Computers and Computers in Other Domains (LMHOSTS)</title><link>http://blogs.msdn.com/muaddib/archive/2008/10/19/configuring-sms-to-work-on-workgroup-computers-and-computers-in-other-domains-lmhosts.aspx</link><pubDate>Sun, 19 Oct 2008 16:09:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9006247</guid><dc:creator>MuadDib</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/muaddib/comments/9006247.aspx</comments><wfw:commentRss>http://blogs.msdn.com/muaddib/commentrss.aspx?PostID=9006247</wfw:commentRss><description>&lt;P&gt;As described in the previous post the&amp;nbsp;lab environment includes&amp;nbsp;multiple forests, domains and workgroup computers.&amp;nbsp;&amp;nbsp;One of the nice things about SMS 2003 is the fact that once the SMS Client has been installed on a system, you "own" that system and can manage it from that day forward.&amp;nbsp; In the previous post, we discussed how to use a logon script to install the SMS Advanced Client.&amp;nbsp; In this post we will discuss how to configure computers that are not located within the same domain as the SMS server to be able to find the SMS Management Point (MP) and Server Locator Point (SLP).&lt;/P&gt;
&lt;P&gt;All&amp;nbsp;Windows operating systems since Windows 2000 rely on DNS for name resolution.&amp;nbsp; A&amp;nbsp;clients still have WINS installed to support some legacy applications but&amp;nbsp;most do not.&amp;nbsp; An LMHOSTS file is similar to a HOSTS file.&amp;nbsp; A HOST files is used to map DNS hosts names to IP addresses.&amp;nbsp; An LMHOSTS file is used to map NetBIOS names to IP addresses.&amp;nbsp;&amp;nbsp; NetBIOS names differ from DNS names because you can have different types of NetBIOS names (e,g, domain, workstation service etc.).&amp;nbsp; The LMHOSTS files is placed in the same folder as the HOSTS file (%WINDIR%\System32\Drivers\Etc).&lt;/P&gt;
&lt;P&gt;An example of the LMHOSTS file is shown below.&amp;nbsp; Copy the code below into Notepad and save the file as LMHOSTS (no extension) to the "%WINDIR%\System32\Drivers\Etc" folder.&amp;nbsp; Customize the entries to match your environment.&amp;nbsp; When you see the pound (#) sign in an LMHOSTS file it is usually followed by a comment unless it is followed by one of the special directives such as PRE&amp;lt; DOM, INCLUDE etc.&amp;nbsp; The PRE directive loads the entires into the NetBIOS name cache on startup.&amp;nbsp; The DOM directive is used to indicated a domain name.&amp;nbsp; The INCLUDE directive is used to include another LMHOSTS file.&lt;/P&gt;
&lt;P&gt;In the sample file below the first three lines are comments.&amp;nbsp; The fourth line pre-loads the domain name where the SMS servers is located and provides the IP address of a DC in that domain.&amp;nbsp; The next line provides the name and IP address of the SMS server (SMSSERVER1).&amp;nbsp; The next line provides the name of the SMS Server Locator Point (SMS_SLP) and the line that follows defines the Management Point (MP_C01).&amp;nbsp; Notice the entries for the&amp;nbsp;SLP/MP look very different from the others.&amp;nbsp; The "\01xa"&amp;nbsp;is a NetBIOS suffix and there must be exactly 15 characters between the the first quote and the backslash.&amp;nbsp; For the SMS_SLP line on change the IP address to the IP of the computer hosting the SMS SLP role.&amp;nbsp; For the MP, change the IP and change the SMS site code in the file from C01 to the site code of your SMS site.&lt;/P&gt;
&lt;P&gt;&amp;lt;------------------------------ BEGIN LMHOSTS -----------------------------------&amp;gt;&lt;/P&gt;
&lt;P&gt;# LAB LMHOSTS File&lt;BR&gt;#REVISION: 2&lt;BR&gt;#DATE: 10/17/2008&lt;BR&gt;192.168.101.143&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DC01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #PRE #DOM:LABDOMAIN1&amp;nbsp; # Lab Domain&amp;nbsp;DC&lt;BR&gt;192.168.101.141&amp;nbsp;&amp;nbsp;&amp;nbsp; SMSSVR1 #PRE&lt;BR&gt;192.168.101.141&amp;nbsp;&amp;nbsp;&amp;nbsp;"SMS_SLP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \0x1A" #PRE&lt;BR&gt;192.168.101.141&amp;nbsp;&amp;nbsp; "MP_C01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; \0x1A" #PRE&amp;nbsp;&amp;nbsp; &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;------------------------------&amp;nbsp;&amp;nbsp;&amp;nbsp; END LMHOSTS -----------------------------------&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;When you start using LMHOST files you quickly realize that trying to manage the content of these files on multiple computers because a big pain real fast.&amp;nbsp; If you need to make a change, you need to update every file with the&amp;nbsp;change.&amp;nbsp; Fortunately the #INCLUDE&amp;nbsp;directive discussed earlier enables you to use a centralized LMHOSTS file.&amp;nbsp; In our lab environment we created a share on the SMS server named "SMSLMHOST" and placed the first LMHOSTS file shown above there.&amp;nbsp; The LMHOSTS file shown below was placed on the computers that needed a LMHOSTS.&amp;nbsp; There are two entries shown.&amp;nbsp; The first one provides the name/IP of the SMS server and the second directs the client to read the master LMHOSTS file stored on the server.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;lt;------------------------------&amp;nbsp;&amp;nbsp;&amp;nbsp;BEGIN LMHOSTS -----------------------------------&amp;gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;192.168.101.141&amp;nbsp;SMS1&amp;nbsp;#PRE&lt;BR&gt;#INCLUDE \\SMSSVR1\SMSLMHOSTS\lmhosts&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&amp;lt;------------------------------&amp;nbsp;&amp;nbsp;&amp;nbsp; END LMHOSTS -----------------------------------&amp;gt;&lt;/P&gt;
&lt;P&gt;REFERENCE&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;NetBIOS Suffixes (16th Character of the NetBIOS Name)&lt;BR&gt;&lt;/STRONG&gt;&lt;A href="http://support.microsoft.com/default.aspx/kb/163409/"&gt;http://support.microsoft.com/default.aspx/kb/163409/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;HOWTO: Assign SMS Advanced Client to the Isolated Secondary Site &lt;BR&gt;&lt;/STRONG&gt;&lt;A href="http://support.microsoft.com/kb/555853"&gt;http://support.microsoft.com/kb/555853&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;LMHOSTS File Information and Predefined Keywords&lt;/STRONG&gt;&lt;BR&gt;&lt;A href="http://support.microsoft.com/kb/102725"&gt;http://support.microsoft.com/kb/102725&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Domain Browsing with TCP/IP and LMHOSTS Files&lt;BR&gt;&lt;/STRONG&gt;&lt;A href="http://support.microsoft.com/kb/150800"&gt;http://support.microsoft.com/kb/150800&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Chapter 10 - Using LMHOSTS Files&lt;BR&gt;&lt;/STRONG&gt;&lt;A href="http://www.microsoft.com/resources/documentation/windowsnt/4/server/reskit/en-us/net/sur_lmh.mspx?mfr=true"&gt;http://www.microsoft.com/resources/documentation/windowsnt/4/server/reskit/en-us/net/sur_lmh.mspx?mfr=true&lt;/A&gt;&lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9006247" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/muaddib/archive/tags/Time+Savers/default.aspx">Time Savers</category><category domain="http://blogs.msdn.com/muaddib/archive/tags/Reference/default.aspx">Reference</category><category domain="http://blogs.msdn.com/muaddib/archive/tags/Script/default.aspx">Script</category><category domain="http://blogs.msdn.com/muaddib/archive/tags/SMS/default.aspx">SMS</category><category domain="http://blogs.msdn.com/muaddib/archive/tags/NetBIOS/default.aspx">NetBIOS</category></item><item><title>Who's in the Local Administrators Group?</title><link>http://blogs.msdn.com/muaddib/archive/2008/10/12/who-s-in-the-local-administrators-group.aspx</link><pubDate>Sun, 12 Oct 2008 16:40:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8996652</guid><dc:creator>MuadDib</dc:creator><slash:comments>13</slash:comments><comments>http://blogs.msdn.com/muaddib/comments/8996652.aspx</comments><wfw:commentRss>http://blogs.msdn.com/muaddib/commentrss.aspx?PostID=8996652</wfw:commentRss><description>&lt;P&gt;I was organizing files this weekend and ran across a script I created for a customer recently.&amp;nbsp;&amp;nbsp; They we trying to determine the membership of the local Administrators group on each computer on their network.&amp;nbsp; The had determined that non-admin users were being added to the local Administrator group and needed to know how widespread the problem was.&amp;nbsp; Once they determine that I recommended they use Group Policy, Restricted Groups to fix the problem.&lt;/P&gt;
&lt;P&gt;The VBScript below follows my standard script format that starts with an input file (INPUT.TXT) with a list of computers and automatically creates a tab-separated (for analysis in Excel)&amp;nbsp;output file based on the name of the input file and appends RESULTS.TXT to the name.&amp;nbsp; Once we&amp;nbsp;open&amp;nbsp;the input for to read, &amp;nbsp;and the output file for writing we start the loop.&amp;nbsp; The real work happens in the DO WHILE loop.&amp;nbsp; First thing we do is run a Function named Get ComputerStatus.&amp;nbsp; Since we are connecting to a remote computer, I use this function to determine if a computer is online by pinging it.&amp;nbsp; If it is online we continue, if not we write "Computer Could Not Be Contacted" to the log and get the next computer in the list.&amp;nbsp; The EnumGroup function is used to get the membership of the local Administrators group and write it to the log file.&amp;nbsp; Once we finish the files are closed and the log file is opened in notepad.&lt;/P&gt;
&lt;P&gt;To use this script, copy the contents to notepad and save the file with a VBS extension.&amp;nbsp; Create an input file with computer nameon each line.&amp;nbsp; You can run the script by double clicking it but I prefer to run it from a command prompt using cscript so that I only have a single command prompt instead of a command prompt for every "ping".&amp;nbsp; If anyone uses this script and finds it useful leave me a comment and/or a rating.&lt;BR&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;LocalAdminGroupMembership.vbs&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;'**********************************************&lt;BR&gt;'&amp;nbsp; SCRIPT: LocalAdminGroupMembership.vbs&lt;BR&gt;'&amp;nbsp; AUTHOR: Muaddib :-)&lt;BR&gt;'&amp;nbsp;&amp;nbsp;DATE: 08/21/08&lt;BR&gt;' VERSION: 1.0&lt;BR&gt;' PURPOSE: Used to Query remote computers and enumerate memebers of &lt;BR&gt;'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; local admin group&lt;BR&gt;'&amp;nbsp;&amp;nbsp; USAGE: 1. List computers to be queried in input.txt (other text file)&lt;BR&gt;'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2. LocalAdminGroupMembership.vbs&lt;BR&gt;'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3. Output file, results.txt will show status&lt;BR&gt;'Revision: &lt;BR&gt;'&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;'&lt;BR&gt;'**********************************************&lt;/P&gt;
&lt;P&gt;Option Explicit&lt;/P&gt;
&lt;P&gt;'ON ERROR RESUME NEXT 'Do Not Uncomment until script is ready for production&lt;/P&gt;
&lt;P&gt;Dim oWshShell, oFSO, oFileName1, oFilename2, objWMIService, colItems, sProtocol, sSearch, sNWStatus, sDate, iErrNumber&lt;BR&gt;Dim objItem, strComputer, oExec, strPingStdOut, sStatus, bComputerOnline, aComputers, Computer, sOutPutFile, sInPutFile, sComputerStatus&lt;BR&gt;Dim arrFileNAme, sOutPutFileName,objGroup, strOffset&lt;/P&gt;
&lt;P&gt;CONST ForReading = 1&lt;BR&gt;CONST ForWriting = 2&lt;BR&gt;CONST ForAppending = 8&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;'Prompt for name of input file&lt;BR&gt;sInPutFile = INPUTBOX("Enter name of input file.&amp;nbsp; Input file must exist in the script folder.", "Enter Input File Name","input.txt" )&lt;BR&gt;IF sInputFile = "" THEN&lt;BR&gt;&amp;nbsp;&amp;nbsp; wscript.echo "Operation was cancelled"&lt;BR&gt;&amp;nbsp;&amp;nbsp; wscript.quit&lt;BR&gt;END IF&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;'Trim extension from sInputFile1&amp;nbsp;&amp;nbsp; &lt;BR&gt;arrFileNAme = Split(sInPutFile, ".")&lt;BR&gt;sOutPutFileName = UCASE(arrFIleNAme(0))&lt;BR&gt;'Prompt for name of output file&lt;BR&gt;sOutPutFile = INPUTBOX("Enter name of output file.&amp;nbsp; Output file will be placed in script folder.", "Enter Output File Name",sOutPutFileName &amp;amp; "_RESULTS.TXT" )&lt;BR&gt;IF sOutPutFile = "" THEN&lt;BR&gt;&amp;nbsp;&amp;nbsp; wscript.echo "Operation was cancelled"&lt;BR&gt;&amp;nbsp;&amp;nbsp; wscript.quit&lt;BR&gt;END IF&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Set oWshShell = Wscript.CreateObject("Wscript.Shell")&lt;BR&gt;Set oFSO = CreateObject("Scripting.FileSystemObject")&lt;/P&gt;
&lt;P&gt;'Open input file and read&lt;BR&gt;Set oFilename1 = oFSO.OpenTextFile(".\" &amp;amp; sInPutFile, ForReading, False)&lt;BR&gt;iErrNumber = err.number&lt;BR&gt;&amp;nbsp; 'Check for missing file&lt;BR&gt;&amp;nbsp; IF iErrNumber = 53 THEN&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Wscript.echo "Error - " &amp;amp; sInPutFile &amp;amp; " file was not found."&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wscript.quit&lt;BR&gt;&amp;nbsp; END IF&lt;/P&gt;
&lt;P&gt;Set oFilename2 = oFSO.OpenTextFile(".\" &amp;amp; sOutPutFile, ForWriting, True)&lt;/P&gt;
&lt;P&gt;' OPTIONAL LOG HEADER&lt;BR&gt;'Get date and write it to log&lt;BR&gt;'sDate = Now()&lt;BR&gt;'oFilename2.writeline "Log Started " &amp;amp; sDate&lt;BR&gt;'oFilename2.writeblanklines 1&lt;/P&gt;
&lt;P&gt;'Read external list of computers and check their status&lt;BR&gt;DO While oFilename1.AtEndOfStream &amp;lt;&amp;gt; True&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; strComputer = oFileName1.ReadLine&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IF GetComputerStatus(strComputer) = 1 Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 'sComputerStatus = "Online"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Set objGroup = GetObject("WinNT://" &amp;amp; strComputer &amp;amp; "/Administrators,group")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sComputerStatus = EnumGroup(objGroup, "")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sComputerStatus = "Computer Could Not Be Contacted"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End IF&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; oFilename2.writeline strCOmputer &amp;amp; vbTab &amp;amp; sComputerStatus&lt;BR&gt;Loop&lt;/P&gt;
&lt;P&gt;'OPTIONAL LOG FOOTER&lt;BR&gt;'sDate = Now()&lt;BR&gt;'oFilename2.writeblanklines 2&lt;BR&gt;'oFilename2.writeline "Log Completed " &amp;amp; sDate&lt;/P&gt;
&lt;P&gt;'Close input file&lt;BR&gt;oFilename1.close&lt;BR&gt;'Close Log file&lt;BR&gt;oFilename2.close&lt;/P&gt;
&lt;P&gt;'Wscript.echo "Finished Scanning Computers" 'open log file&lt;BR&gt;oWshShell.run "notepad.exe .\" &amp;amp; sOutPutFile, 5, FALSE&lt;/P&gt;
&lt;P&gt;Set oWshShell = Nothing&lt;BR&gt;Set oFSO = Nothing&lt;BR&gt;Set oExec = Nothing&lt;BR&gt;Set oFilename1 = Nothing&lt;BR&gt;Set oFilename2 = Nothing&lt;/P&gt;
&lt;P&gt;Function GetComputerStatus (strComputer)&lt;BR&gt;&amp;nbsp; 'Function Returns a 1 if computer is available&lt;BR&gt;&amp;nbsp; 'Used to determine if a computer is online before &lt;BR&gt;&amp;nbsp; 'attempting WMI connection&lt;BR&gt;&amp;nbsp; 'IP Address or computer name can be used&lt;BR&gt;&amp;nbsp; Dim sStatus&lt;BR&gt;&amp;nbsp; sStatus = 0&lt;BR&gt;'&amp;nbsp;&amp;nbsp; wscript.echo "Echo strCOmputer - " &amp;amp; strcomputer&lt;BR&gt;&amp;nbsp; Set oWshShell = Wscript.CreateObject("Wscript.Shell")&lt;BR&gt;&amp;nbsp; Set oExec = oWshShell.Exec("ping -n 2 -w 1000&amp;nbsp; " &amp;amp; strComputer)&lt;BR&gt;&amp;nbsp; strPingStdOut = oExec.StdOut.ReadAll&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If InStr(1,strPingStdOut, "reply from ",1) &amp;lt;&amp;gt; 0 Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sStatus = 1&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sStatus = 0 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End IF&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GetComputerStatus = sStatus&lt;BR&gt;&amp;nbsp;END FUNCTION&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&lt;BR&gt;Function EnumGroup(objGroup, strOffset)&lt;BR&gt;&amp;nbsp;&amp;nbsp; Dim objMember, strMembers&lt;BR&gt;&amp;nbsp;&amp;nbsp; For Each objMember In objGroup.Members&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strMembers = strmembers &amp;amp; strOffset &amp;amp; objMember.Name &amp;amp;&amp;nbsp; ", "&lt;BR&gt;&amp;nbsp;&amp;nbsp; Next&lt;BR&gt;&amp;nbsp; EnumGroup = strMembers&lt;BR&gt;End Function&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Sample INPUT.TXT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Computer1&lt;BR&gt;Computer2&lt;BR&gt;Computer3&lt;BR&gt;Computer4&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Sample Input_RESULTS.TX&lt;/STRONG&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Computer1&amp;nbsp;Computer Could Not Be Contacted&lt;BR&gt;Computer2&amp;nbsp;Administrator, Administrator, Domain Admins, SMS_ADMIN, &lt;BR&gt;Computer3&amp;nbsp;Administrator, Domain Admins, Administrator, SMS_ADMIN, &lt;BR&gt;Computer4&amp;nbsp;Administrator, Domain Admins, Administrator, SMS_ADMIN, &lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8996652" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/muaddib/archive/tags/Time+Savers/default.aspx">Time Savers</category><category domain="http://blogs.msdn.com/muaddib/archive/tags/Script/default.aspx">Script</category></item><item><title>Modifying Security on Active Directory Objects using a script</title><link>http://blogs.msdn.com/muaddib/archive/2007/12/14/modifying-security-on-active-directory-objects-using-a-script.aspx</link><pubDate>Fri, 14 Dec 2007 22:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6771951</guid><dc:creator>MuadDib</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/muaddib/comments/6771951.aspx</comments><wfw:commentRss>http://blogs.msdn.com/muaddib/commentrss.aspx?PostID=6771951</wfw:commentRss><description>&lt;P&gt;I was working with a customer this week and we found some user objects in Active Directory&amp;nbsp;had incorrect security settings.&amp;nbsp; I put together a list of commands for the customer to use.&amp;nbsp;&amp;nbsp;I thought a few of the FOR command examples below were useful so here you go...&amp;nbsp; &lt;/P&gt;
&lt;P&gt;These command can also be used in a script.&amp;nbsp; Keep in mind the FOR command syntax changes slightly (FOR /?) when used within a batch file.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;DUMP CNs for all users in an OU&amp;nbsp;&lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp; DSQUERY USER "ou=test accounts, dc=contoso,dc=local"&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Show security&amp;nbsp;for an object in Active Directory&lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp; DSACLS "cn=Jane doe1,ou=test accounts, dc=contoso,dc=local"&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Show security&amp;nbsp;for&amp;nbsp;the&amp;nbsp;SELF&amp;nbsp;security principle&amp;nbsp;on an object in Active Directory&lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp; DSACLS "cn=Jane doe1,ou=test accounts, dc=contoso,dc=local" | find /i "self"&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Use DSACLS on list of users in a file &lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp; FOR /F "tokens=* usebackq"&amp;nbsp; %i in (`type users.txt`) DO dsacls %i &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (NOTE ` is a back quote found on same key as ~)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Use DSACLS on output of DSQUERY USERS &amp;lt;OU&amp;nbsp; DN&amp;gt;&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; FOR /F "tokens=* usebackq"&amp;nbsp; %i in (`dsquery user "ou=test accounts,dc=contoso,dc=local"`) DO dsacls %i&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (NOTE ` is a back quote found on same key as ~)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; FOR /F "tokens=* usebackq"&amp;nbsp; %i in (`dsquery user "ou=test accounts,dc=contoso,dc=local"`) DO dsacls %i | find /i "self"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (NOTE ` is a back quote found on same key as ~)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Reset a user to the default permissions as defined by the schema &lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp; DSACLS "cn=jane doe1,ou=test accounts,dc=contoso,dc=local" /S (case sensitive)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Perfrom same task for all users in an OU&amp;nbsp; &lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp; FOR /F "tokens=* usebackq"&amp;nbsp; %i in (`dsquery user "ou=test accounts,dc=contoso,dc=local"`) DO dsacls %i /S&amp;nbsp; (case sensitive)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6771951" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/muaddib/archive/tags/Time+Savers/default.aspx">Time Savers</category><category domain="http://blogs.msdn.com/muaddib/archive/tags/Reference/default.aspx">Reference</category><category domain="http://blogs.msdn.com/muaddib/archive/tags/Script/default.aspx">Script</category></item><item><title>Controlling Virtual Machines with a Script</title><link>http://blogs.msdn.com/muaddib/archive/2007/04/16/controlling-virtual-machines-with-a-script.aspx</link><pubDate>Mon, 16 Apr 2007 14:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2153056</guid><dc:creator>MuadDib</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/muaddib/comments/2153056.aspx</comments><wfw:commentRss>http://blogs.msdn.com/muaddib/commentrss.aspx?PostID=2153056</wfw:commentRss><description>&lt;P&gt;I discovered how easy it is to control virtual machines with a script this weekend.&amp;nbsp; I have one server that I use to run virtual machines that I keep running all the time.&amp;nbsp;&amp;nbsp;When I patch this server, I need to shut down all VMs before it is restarted and then restart the VMs after the computer starts.&amp;nbsp; After doing a quick search I discovered it only takes a few lines of code to shutdown or start a VM.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Shutdown a server named Server1&lt;BR&gt;&lt;/STRONG&gt;On Error Resume Next&lt;BR&gt;Set objVS = CreateObject("VirtualServer.Application")&lt;BR&gt;Set objVM = objVS.FindVirtualMachine("Server1")&lt;BR&gt;Set objGuestOS = objVM.GuestOS&lt;BR&gt;objGuestOS.Shutdown()&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Startup a server named Server1&lt;BR&gt;&lt;/STRONG&gt;On Error Resume Next&lt;BR&gt;Set objVS = CreateObject("VirtualServer.Application")&lt;BR&gt;Set objVM = objVS.FindVirtualMachine("Server1")&lt;BR&gt;objVM.Startup()&lt;/P&gt;
&lt;P&gt;If you have multiple VMs you can put them all in the same script as shown below:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;On Error Resume Next&lt;BR&gt;Set objVS = CreateObject("VirtualServer.Application")&lt;BR&gt;Set objVM = objVS.FindVirtualMachine("Server1")&lt;BR&gt;Set objGuestOS = objVM.GuestOS&lt;BR&gt;objGuestOS.Shutdown()&lt;BR&gt;sleep 15000&lt;BR&gt;Set objVS = CreateObject("VirtualServer.Application")&lt;BR&gt;Set objVM = objVS.FindVirtualMachine("Server2")&lt;BR&gt;Set objGuestOS = objVM.GuestOS&lt;BR&gt;objGuestOS.Shutdown()&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;So to make things easier on me&amp;nbsp;I wrote two simple scripts; one that starts the VMs and one that stops them.&amp;nbsp; I then configured a local policy on the server to run the&amp;nbsp;script that starts the VMs as a "Startup Script" so the VMs would start automatically every time the server is started.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Virtual Machine and Virtual Server Properties &lt;BR&gt;&lt;/STRONG&gt;&lt;A href="http://www.microsoft.com/technet/scriptcenter/scripts/vs/default.mspx?mfr=true" mce_href="http://www.microsoft.com/technet/scriptcenter/scripts/vs/default.mspx?mfr=true"&gt;http://www.microsoft.com/technet/scriptcenter/scripts/vs/default.mspx?mfr=true&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2153056" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/muaddib/archive/tags/Time+Savers/default.aspx">Time Savers</category><category domain="http://blogs.msdn.com/muaddib/archive/tags/Script/default.aspx">Script</category></item><item><title>Enable Remote Desktop</title><link>http://blogs.msdn.com/muaddib/archive/2006/12/01/enable-remote-desktop.aspx</link><pubDate>Fri, 01 Dec 2006 15:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1183233</guid><dc:creator>MuadDib</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/muaddib/comments/1183233.aspx</comments><wfw:commentRss>http://blogs.msdn.com/muaddib/commentrss.aspx?PostID=1183233</wfw:commentRss><description>&lt;P&gt;Remote Desktop is one of the greatest features added to the&amp;nbsp;Windows operating system.&amp;nbsp; It enables you to&amp;nbsp;perform remote administration of servers from your desk or fix one of your kids computers from the couch.&amp;nbsp; Of course it's only great if it is enabled on the computer you are trying to access.&amp;nbsp; If you find yourself unable to connect to a remote computer because Remote Desktop has not been enabled you can enable it remotely by flipping a bit in the registry using regedt32.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Here's how:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Use&amp;nbsp;&lt;STRONG&gt;regedt32&lt;/STRONG&gt; to open the registry of the remote computer.&lt;/LI&gt;
&lt;LI&gt;Navigate to &lt;STRONG&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server&lt;/STRONG&gt;&lt;/LI&gt;
&lt;LI&gt;Change &lt;STRONG&gt;fDenyTSConnections&lt;/STRONG&gt; to 0x00 (0x01 disables).&amp;nbsp; If the key is not there create it.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;To enable Remote Assitance set &lt;STRONG&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\fAllowToGetHelp&lt;/STRONG&gt; to "1"&lt;/P&gt;
&lt;P&gt;This is old news to most of us in IT.&amp;nbsp; I posted here because&amp;nbsp;the information on the&amp;nbsp;reg key is hard locate when you need it.&amp;nbsp; I was on-site at a customer yesterday and spent 30 minutes trying to locate this in the Microsoft Knowledgebase without finding it.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1183233" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/muaddib/archive/tags/Time+Savers/default.aspx">Time Savers</category><category domain="http://blogs.msdn.com/muaddib/archive/tags/Reference/default.aspx">Reference</category></item><item><title>Active Directory LDAP Searches</title><link>http://blogs.msdn.com/muaddib/archive/2006/10/24/active-directory-ldap-searches.aspx</link><pubDate>Wed, 25 Oct 2006 01:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:870849</guid><dc:creator>MuadDib</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/muaddib/comments/870849.aspx</comments><wfw:commentRss>http://blogs.msdn.com/muaddib/commentrss.aspx?PostID=870849</wfw:commentRss><description>&lt;P&gt;A nice&amp;nbsp;feature in Windows Server 2003 Active Directory is the ability for an administrator to create saved queries in their admin console.&amp;nbsp; The queries you can create through the GUI are pretty basic so to get the real benefit you need to create a "Custom Search", click the Advanced tab and enter an LDAP query.&amp;nbsp; The only problem is... you have to enter an LDAP query.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;For a lot of&amp;nbsp;administrators,&amp;nbsp;you come up against the LDAP query box, start to research how to write an LDAP query, get interrupted and never finish learning how to create an LDAP query.&amp;nbsp; I know in my case I am not doing AD administration everyday so when the task of creating an LDAP query for a customer arises it has usually been so long since the last time I wrote one that I have forgotten how.&amp;nbsp; So I was creating some queries for a customer today and decided I would post them here for future use.&amp;nbsp; The LDAP code listed below can be cut and pasted into the the query editor in AD and saved.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;First LDAP reference material:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;LDAP Query Basics&lt;/STRONG&gt;&lt;BR&gt;&lt;A href="http://www.microsoft.com/technet/prodtechnol/exchange/2003/insider/ldapquery.mspx" mce_href="http://www.microsoft.com/technet/prodtechnol/exchange/2003/insider/ldapquery.mspx"&gt;http://www.microsoft.com/technet/prodtechnol/exchange/2003/insider/ldapquery.mspx&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;XADM: Browsing and Querying Using the LDP&lt;BR&gt;&lt;/STRONG&gt;&lt;A href="http://support.microsoft.com/?id=255602"&gt;http://support.microsoft.com/?id=255602&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Search Filter Syntax&lt;/STRONG&gt;&lt;BR&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/aa746475.aspx"&gt;http://msdn2.microsoft.com/en-us/library/aa746475.aspx&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Creating More Efficient Microsoft Active Directory-Enabled Applications&lt;/STRONG&gt; (create efficient LDAP queries)&lt;BR&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms808539.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms808539.aspx&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How to use the UserAccountControl flags to manipulate user account properties&lt;/STRONG&gt;&lt;BR&gt;&lt;A href="http://support.microsoft.com/kb/305144"&gt;http://support.microsoft.com/kb/305144&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;How to query Active Directory by using a bitwise filter&lt;/STRONG&gt;&lt;BR&gt;&lt;A href="http://support.microsoft.com/kb/269181"&gt;http://support.microsoft.com/kb/269181&lt;/A&gt;&amp;nbsp;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Now on to the queries.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;All XP Computers&lt;BR&gt;&lt;/STRONG&gt;Although this can be done easy enough with the GUI, I wanted to show the syntax so it can be used as a building block for more complex theories.&amp;nbsp; One thing to notice is the query parameter "objectCategory=computer".&amp;nbsp; By including this as part of our query we reduce the number of objects that have to be searched making for a faster query and less performance impact on the&amp;nbsp;DC performing the query.&lt;BR&gt;(&amp;amp;(objectCategory=computer)(operatingSystem=Windows XP*))&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Windows XP Computers with Service Pack 2 Installed&lt;BR&gt;&lt;/STRONG&gt;(&amp;amp;(objectCategory=computer)(operatingSystem=Windows XP Professional)(operatingSystemServicePack=Service Pack 2))&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Windows XP Computers with Service Pack 1 Installed&lt;/STRONG&gt;&lt;BR&gt;(&amp;amp;(operatingSystem=Windows XP*l)(operatingSystemServicePack=Service Pack 1)))&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Windows XP Computers with No Service Pack Installed&lt;/STRONG&gt;&lt;BR&gt;This one is structured a Little different.&amp;nbsp; Notice the "!" before operating SystemServicePack and the "*".&amp;nbsp; The "!" means NOT so the statement reads "NOT equal to anything" instead of&amp;nbsp;NULL or&amp;nbsp;empty quotes ("") like some other languages.&lt;BR&gt;(&amp;amp;(operatingSystem=Windows XP Professional)(!operatingSystemServicePack=*)))&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Windows Server 2003 No Service Pack 1&lt;BR&gt;&lt;/STRONG&gt;(&amp;amp;((objectCategory=computer))(operatingSystem=Windows Server 2003)(!operatingSystemServicePack=*)))&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Windows Server 2003 Service Pack 1 Installed &lt;BR&gt;&lt;/STRONG&gt;(&amp;amp;(objectCategory=computer)(operatingSystem=Windows Server 2003)(operatingSystemServicePack=Service Pack 1))&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Windows 2000 Professional &lt;BR&gt;&lt;/STRONG&gt;(&amp;amp;(objectCategory=computer)(operatingSystem=Windows 2000 Professional))&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Windows 2000 Server &lt;BR&gt;&lt;/STRONG&gt;(&amp;amp;(objectCategory=computer)(operatingSystem=Windows 2000 Server))&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;All Windows Server 2003 Servers&lt;/STRONG&gt;&lt;BR&gt;(&amp;amp;((objectCategory=computer))(operatingSystem=Windows Server 2003))&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;SQL Servers (running on Windows 2003) &lt;/STRONG&gt;(please verify in your environment)&lt;BR&gt;(&amp;amp;(objectCategory=computer)(servicePrincipalName=MSSQLSvc*)(operatingSystem=Windows Server 2003))&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;SQL Servers any Windows Server OS&lt;BR&gt;&lt;/STRONG&gt;(&amp;amp;(objectCategory=computer)(servicePrincipalName=MSSQLSvc*)(operatingSystem=Windows Server*))&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Windows Vista SP1&lt;BR&gt;&lt;/STRONG&gt;(&amp;amp;(objectCategory=computer)(operatingSystem=Windows Vista*)(operatingSystemServicePack=Service Pack 1))&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Windows Server 2008 Enterprise&lt;BR&gt;&lt;/STRONG&gt;(&amp;amp;(objectCategory=computer)(operatingSystem=Windows Server® 2008 Enterprise)(operatingSystemServicePack=Service Pack 1))&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Windows Server 2008 (all versions)&lt;/STRONG&gt;&lt;BR&gt;(&amp;amp;(objectCategory=computer)(operatingSystem=Windows Server® 2008*))&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Sample User&amp;nbsp;Attribute Query (ExtensionAtrribute5)&lt;/STRONG&gt;&lt;BR&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;FONT size=2&gt;(&amp;amp;(objectCategory=user)(&amp;amp;(extensionAttribute5&amp;gt;=20080101)(extensionAttribute5&amp;lt;=20080520)))&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;USER ACCOUNT CONTROL EXAMPLES&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 'Times New Roman','serif'; mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;UAC - Smart Card Login&amp;nbsp;Enforced on The User Object&lt;/STRONG&gt;&lt;BR&gt;(&amp;amp;(objectCategory=person)(userAccountControl:1.2.840.113556.1.4.803:=262144) )&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;STRONG&gt;UAC - PWD Never Expires&lt;/STRONG&gt;&lt;BR&gt;(&amp;amp;(objectCategory=person)(userAccountControl:1.2.840.113556.1.4.803:=65536))&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;UAC - CAC Enabled Accounts &lt;/STRONG&gt;(no disabled accounts or password never expires)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;(&amp;amp;(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2)(!userAccountControl:1.2.840.113556.1.4.803:=65536)(userAccountControl:1.2.840.113556.1.4.803:=262144)(userPrincipalName=1*@mil))&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;STRONG&gt;UAC - Not CAC Enabled &lt;/STRONG&gt;(no disabled accounts or password never expires)&lt;BR&gt;(&amp;amp;(objectCategory=person)(objectClass=user)(!userAccountControl:1.2.840.113556.1.4.803:=2)(!userAccountControl:1.2.840.113556.1.4.803:=65536)(!userPrincipalName=1*@mil))&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;So you get the idea of the basic syntax&amp;nbsp; When you create your own queries make sure you use the the actual attribute name and not the label visible in the Active Directory Users and Computers interface.&amp;nbsp; You can find the attribute names by using ADSIEDIT.MSC.&amp;nbsp; Right click an object and select properties from the context menu.&amp;nbsp; Scroll through the list of attributes till you find the one you are looking for.&amp;nbsp; You should also&amp;nbsp;copy the&amp;nbsp;actual value from within ADSIEDIT.MSC and paste it into you query string to prevent typing errors (in case you type as bad as I do).&amp;nbsp; Make sure when you enter the search string into the query editor there are no carriage returns or extra characters after the last parenthesis.&lt;/P&gt;
&lt;P mce_keep="true"&gt;Read the article "Creating More Efficient Microsoft Active Directory-Enabled Applications" referenced above to make sure you are writing efficient queries that won't bring your LDAP server to its knees.&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;One other useful tip.&amp;nbsp; Once you have created some saved queries, you can export them as XML files and share them with others.&amp;nbsp; They can be imported into another management console in the same domain or a different domain.&lt;/P&gt;
&lt;P mce_keep="true"&gt;One final tip.&amp;nbsp; You can copy and paste the code from the samples above.&amp;nbsp; Paste it into a text editor like Notepad first to remove all the formatting imposed by the HTML page.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=870849" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/muaddib/archive/tags/Time+Savers/default.aspx">Time Savers</category><category domain="http://blogs.msdn.com/muaddib/archive/tags/Active+Directory/default.aspx">Active Directory</category><category domain="http://blogs.msdn.com/muaddib/archive/tags/Queries/default.aspx">Queries</category><category domain="http://blogs.msdn.com/muaddib/archive/tags/LDAP+QUERY/default.aspx">LDAP QUERY</category></item><item><title>Automate Network Adapter Configuration using NETSH</title><link>http://blogs.msdn.com/muaddib/archive/2006/10/24/automate-network-adapter-configuration-using-netsh.aspx</link><pubDate>Tue, 24 Oct 2006 18:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:868792</guid><dc:creator>MuadDib</dc:creator><slash:comments>11</slash:comments><comments>http://blogs.msdn.com/muaddib/comments/868792.aspx</comments><wfw:commentRss>http://blogs.msdn.com/muaddib/commentrss.aspx?PostID=868792</wfw:commentRss><description>&lt;P&gt;So I'm kind of lazy.&amp;nbsp; Not in the "sleep late and don't go to work"&amp;nbsp;slacker way, I just&amp;nbsp;don't like doing dull r&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;epetitive tasks if they can be automated in some way.&amp;nbsp; As a rule if I have to do the same task more than a couple of times I'm writing a script (or getting someone else to do it).&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;During the years I worked as a consultant it was not uncommon to connect my laptop to several&amp;nbsp;different networks in the same day.&amp;nbsp; In some cases they were DHCP enabled so connection was easy.&amp;nbsp; For others I would have to configure the network adapter manually.&amp;nbsp;&amp;nbsp;Ugh!&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Enter the NETSH commands.&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;The NETSH command can be used to modify the network configuration on Windows 2000 and later computers.&amp;nbsp; It's not the friendliest syntax&amp;nbsp;to use but it is a real time saver once you learn to use it (I have noticed the version that ships with Vista seems almost intuitive).&amp;nbsp; Listed below are sample script for using NETSH to set STATIC IP entries on an adapter and another script to set the adapter back to DHCP mode so the settings can be obtained automatically.&amp;nbsp; The command syntax for Vista and XP are slight different due to the fact that Vista supports IPV6 natively so sample scripts for each OS&amp;nbsp;are listed below.&amp;nbsp; To use the code, paste it&amp;nbsp;into a batch file and modify the "name=" to the name of the adapter in quotes and change the&amp;nbsp;IP addresses. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;STRONG&gt;&lt;U&gt;&amp;nbsp;VISTA - Static IP&lt;/U&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;netsh interface ipv4 set address name="Wireless Network Connection 2" source=static addr=192.168.0.100 mask=255.255.255.0 gateway=192.168.0.250 gwmetric=0&lt;BR&gt;netsh interface ipv4 set dnsserver name="Wireless Network Connection 2" source=static addr=192.168.0.2 register=NONE&lt;BR&gt;REM netsh interface ipv4 set wins name="Wireless Network Connection 2" source=static addr=155.217.27.9&lt;BR&gt;REM&amp;nbsp; OR if no WINS server&lt;BR&gt;netsh interface ipv4 set winsserver name="Wireless Network Connection 2" source=dhcp&lt;BR&gt;ipconfig /all&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;STRONG&gt;&lt;U&gt;VISTA - DHCP&lt;/U&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;netsh interface ipv4 set address name="Wireless Network Connection 2" source=dhcp&lt;BR&gt;netsh interface ipv4 set dnsserver name="Wireless Network Connection 2" source=dhcp&lt;BR&gt;netsh interface ipv4 set winsserver name="Wireless Network Connection 2" source=dhcp&lt;BR&gt;ipconfig /renew "Wireless Network Connection 2"&lt;BR&gt;ipconfig /all&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;STRONG&gt;&lt;U&gt;XP - Static IP&lt;/U&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;netsh interface ip set address name="BROADCOM" source=static addr=192.168.27.40 mask=255.255.255.224&lt;BR&gt;netsh interface ip set address name="BROADCOM" gateway=192.168.27.33 gwmetric=0&lt;BR&gt;netsh interface ip set dns name="BROADCOM" source=static addr=192.168.98.12 register=NONE&lt;BR&gt;netsh interface ip set wins name="BROADCOM" source=static addr=none&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;STRONG&gt;&lt;U&gt;XP - DHCP&lt;/U&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;netsh interface ip set address name="BROADCOM" dhcp&lt;BR&gt;netsh interface ip set dns name="BROADCOM source = dhcp&lt;BR&gt;netsh interface ip set wins name="BROADCOM" source=dhcp&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=868792" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/muaddib/archive/tags/Time+Savers/default.aspx">Time Savers</category><category domain="http://blogs.msdn.com/muaddib/archive/tags/Script/default.aspx">Script</category></item><item><title>Remote Desktop Connection (akaTerminal Server) Keyboard Shortcuts</title><link>http://blogs.msdn.com/muaddib/archive/2006/10/13/remote-desktop-connection-akaterminal-server-keyboard-shortcuts.aspx</link><pubDate>Fri, 13 Oct 2006 18:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:822576</guid><dc:creator>MuadDib</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/muaddib/comments/822576.aspx</comments><wfw:commentRss>http://blogs.msdn.com/muaddib/commentrss.aspx?PostID=822576</wfw:commentRss><description>&lt;P&gt;I use Remote Desktop all day at work.&amp;nbsp;&amp;nbsp;It is especillay helpful when writing documentation.&amp;nbsp; One of the problems I always run into is trying to remember which keyboard short you can use to&amp;nbsp;capture a screen-shot in a TS session.&amp;nbsp;Since I had to dig these up&amp;nbsp; again today I decided to post them here where they are easy (for me) to find.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&lt;STRONG&gt;Shortcut &amp;nbsp;key&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;Description &lt;BR&gt;&lt;/STRONG&gt;ALT+PAGE &amp;nbsp;UP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Switches between programs from left to right. &lt;BR&gt;ALT+PAGE DOWN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Switches between programs from right to left. &lt;BR&gt;ALT+INSERT &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cycles through the programs in the order they were started. &lt;BR&gt;ALT+HOME &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Displays the Start menu. &lt;BR&gt;CTRL+ALT+BREAK &amp;nbsp;&amp;nbsp; Switches the client between a window and full screen. &lt;BR&gt;CTRL+ALT+END &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Brings up the Windows Security dialog box. &lt;BR&gt;ALT+DELETE &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Displays the Windows menu.&amp;nbsp; &lt;BR&gt;CTRL+ALT+(-)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Places a snapshot of the active window, within the client, on the Terminal server clipboard &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (provides same functionality as pressing PrintScrn on a local computer.)&amp;nbsp; &lt;BR&gt;CTRL+ALT+(+) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Places a snapshot of the entire client window area on the Terminal server clipboard &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;(provides the same functionality as pressing ALT+PrintScrn on a local computer.)&amp;nbsp; &lt;/P&gt;
&lt;P mce_keep="true"&gt;NOTE: for last two commands use the symbol on the numeric keypad without the ().&lt;BR&gt;keypad&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=822576" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/muaddib/archive/tags/Time+Savers/default.aspx">Time Savers</category><category domain="http://blogs.msdn.com/muaddib/archive/tags/Reference/default.aspx">Reference</category></item><item><title>Windows Live Favorites</title><link>http://blogs.msdn.com/muaddib/archive/2006/10/01/Windows-Live-Favorites.aspx</link><pubDate>Sun, 01 Oct 2006 07:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:778984</guid><dc:creator>MuadDib</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/muaddib/comments/778984.aspx</comments><wfw:commentRss>http://blogs.msdn.com/muaddib/commentrss.aspx?PostID=778984</wfw:commentRss><description>&lt;P&gt;So I am an information junkie.&amp;nbsp; When I surf the web I am constantly bookmarking things I'll use in the future ( OK sometimes).&amp;nbsp; One of the biggest problems with bookmarks is having more than one computer.&amp;nbsp; If you have more than one computer keeping your bookmarks synchronized is a pain.&amp;nbsp; Until now.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Windows Live Favorites lets you access you favorite sites from any computer.&amp;nbsp; You simply log into the web site and “import” your favorites into the web site.&amp;nbsp; You can also “export” your favorites to a bookmark.htm&amp;nbsp; file that can be imported into another computer.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Windows Live Favorites&lt;/STRONG&gt;&lt;BR&gt;&lt;A href="http://favorites.live.com/"&gt;http://favorites.live.com&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;To automate the management of your favorites on multiple computers you can add the Windows Live Toolbar and the Windows Live Favorites Toolbar Button.&amp;nbsp; Once these are installed all your computers will synchronize their bookmarks with htt://favorites.live.com enabling you to have the same bookmarks on every one&amp;nbsp; of your computers.&amp;nbsp; Adding a favorite on one computer adds it to all computers.&amp;nbsp; You can create sub-folders (e.g. Work, Personal, Hobby etc.) in your favorites to help organize all your shortcuts.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Windows Live Toolbar &lt;BR&gt;&lt;/STRONG&gt;&lt;A href="http://toolbar.live.com/"&gt;http://toolbar.live.com&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Windows Live Favorites Toolbar Button&lt;BR&gt;&lt;/STRONG&gt;&lt;A href="http://gallery.live.com/liveItemDetail.aspx?li=b3636b52-acd2-4278-91ae-04cefb380004&amp;amp;bt=2"&gt;http://gallery.live.com/liveItemDetail.aspx?li=b3636b52-acd2-4278-91ae-04cefb380004&amp;amp;bt=2&lt;/A&gt; &lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=778984" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/muaddib/archive/tags/Time+Savers/default.aspx">Time Savers</category><category domain="http://blogs.msdn.com/muaddib/archive/tags/Cool+Stuff/default.aspx">Cool Stuff</category></item></channel></rss>