Just a short, simple blog for Bob to share his thoughts.
17 November 2006 • by Bob • IIS
Today was the third day at Microsoft Tech∙Ed: IT Forum 2006 in Barcelona, and customers are still asking some great questions about IIS. Today more customers mostly asked about their current IIS deployments and ways that they could make things better, but occasionally someone would ask, "So what's different about IIS 7?" That's such a great question, because there's so many new features to demo and talk about.
Isaac Roybal from Microsoft was in the booth again today, and we shared the booth with Eric Lawrence and the team representing Internet Explorer 7:
![]() |
![]() |
Tomorrow I'm giving a presentation on LogParser, which is one of my favorite IIS utilities.
16 November 2006 • by Bob • IIS
Today was the second day of Microsoft Tech∙Ed: IT Forum 2006 in Barcelona. So far everything seems to be going well, and I've had the chance to talk with some great customers. Once again, the customers that visited our booth are most concerned with Clustering/Load Balancing/Replication and IIS/PHP integration. But that being said, I had the chance to demo some great functionality for customers that dropped by.
Today I was joined by Isaac Roybal from Microsoft, who is a Product Manager in Windows Server Marketing, and we shared the booth with Eric Lawrence, who is a Program Manager for Internet Explorer:
I delivered the first of my presentations today to a crowd of 175, and my feedback scores for the presentation were about the average for the connected systems infrastructure track. The main points that attendees wanted me to do better was to not go so deep in my topics and to slow down a little. (Sigh.)
After we had finished up for the day, Sergei, Isaac, several members of the PowerShell team and I met for dinner with a couple of the guys from MySpace. Here's a shot of Sergei talking with Michael Coates, who is an evangelist on the Platform Evangelism team.
Tomorrow I don't have any presentations, so I should be hanging around the booth most of the day.
15 November 2006 • by Bob • IIS
Today was the first official day of the 2006 Microsoft Tech∙Ed: IT Forum in Barcelona. I caught Bob Muglia's opening keynote address, and there were some great demos: Vista, Office 2007, SharePoint 2007, etc., but the best demo from an IIS perspective was when they managed a web farm of IIS 7 servers using PowerShell. They also discussed the new FastCGI technology in IIS and how it can be used for faster PHP or other CGI technologies.
![]() |
![]() |
Sergei Anatov and I were joined at the IIS "Ask The Experts" booth today by Ivan Gonzalez Vilaboa, who is an IIS MVP from spain. (Thanks, Ivan!)
Based on the customers that visited our booth, here are the pressing questions that seemed to be on most everyone's mind regarding the future of IIS:
That's all for today. See you tomorrow!
14 November 2006 • by Bob • IIS
Today is the main registration day for the 2006 Microsoft Tech∙Ed: IT Forum in Barcelona. The show was sold out weeks ago, so there are 4,750 people scheduled to attend, and another 400 people on the waiting list. There were a few pre-conference sessions today, but the main bulk of the show starts tomorrow.
![]() |
![]() |
![]() |
![]() |
Sergei Anatov and I will be demonstrating IIS 7 and answering questions for any version of IIS at the IIS/IE booth in the "Ask The Experts" lounge, then later in the week I'll be delivering two presentations on IIS:
If you're at Tech∙Ed, feel free to drop by and say "Hi!"
07 November 2006 • by Bob • IIS, LogParser
Around a year ago I wrote a blog entry titled "Converting NCSA log files to W3C format", which showed how to use the MSWC.IISLog object to convert log files in the NCSA format back to W3C format. I wrote that blog entry to make up for the fact that the CONVLOG.EXE utility only converts log files to NCSA format, which some older log analysis software packages require. So what happens if you have a bunch of log files in W3C format and you don't have a copy of CONVLOG.EXE on your computer?
This blog entry is something of a reverse direction on my previous post, and shows you how to use the MSUtil.LogQuery object to convert W3C log files to NCSA format. The MSUtil.LogQuery object is shipped with LogParser, which you can download from one of the following URLs:
Once you've downloaded and installed the LogParser package, you will need to manually register the LogParser.dll file in order to use the MSUtil.LogQuery object. Having done so, you can use the Windows Script Host (WSH) code in this blog article to convert a folder filled with W3C log files to NCSA format.
To use this code, just copy the code into notepad, and save it with a ".vbs" file extension on your system. To run it, copy the script to a folder that contains your W3C log files, (named "ex*.log"), then double-click it.
Option Explicit Dim objFSO Dim objFolder Dim objInputFile Dim objOutputFile Dim objLogQuery Dim objLogRecordSet Dim objLogRecord Dim strInputPath Dim strOutputPath Dim strLogRecord Dim strLogTemp Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.GetFolder(".") For Each objInputFile In objFolder.Files strInputPath = LCase(objInputFile.Name) If Left(strInputPath,2) = "ex" And Right(strInputPath,4) = ".log" Then strOutputPath = objFolder.Path & "\" & "nc" & Mid(strInputPath,3) strInputPath = objFolder.Path & "\" & strInputPath Set objLogQuery = CreateObject("MSUtil.LogQuery") Set objLogRecordSet = objLogQuery.Execute("SELECT * FROM " & strInputPath) Set objOutputFile = objFSO.CreateTextFile(strOutputPath) Do While Not objLogRecordSet.atEnd Set objLogRecord = objLogRecordSet.getRecord strLogRecord = FormatField(objLogRecord.getValue("c-ip")) strLogRecord = strLogRecord & " " & FormatField("") strLogRecord = strLogRecord & " " & FormatField(objLogRecord.getValue("cs-username")) strLogTemp = BuildDateTime(objLogRecord.getValue("date"),objLogRecord.getValue("time")) strLogRecord = strLogRecord & " " & FormatField(strLogTemp) strLogRecord = strLogRecord & " """ & FormatField(objLogRecord.getValue("cs-method")) strLogRecord = strLogRecord & " " & FormatField(objLogRecord.getValue("cs-uri-stem")) strLogTemp = FormatField(objLogRecord.getValue("cs-version")) If strLogTemp = "-" Then strLogRecord = strLogRecord & " HTTP/1.0""" Else strLogRecord = strLogRecord & " " & strLogTemp & """" End If strLogRecord = strLogRecord & " " & FormatField(objLogRecord.getValue("sc-status")) strLogRecord = strLogRecord & " " & FormatField(objLogRecord.getValue("sc-bytes")) objOutputFile.WriteLine strLogRecord objLogRecordSet.moveNext Loop Set objLogQuery = Nothing objOutputFile.Close End If Next Function FormatField(tmpField) On Error Resume Next FormatField = "-" If Len(tmpField) > 0 Then FormatField = Trim(tmpField) End Function Function BuildDateTime(tmpDate,tmpTime) On Error Resume Next BuildDateTime = "[" & _ Right("0" & Day(tmpDate),2) & "/" & _ Left(MonthName(Month(tmpDate)),3) & "/" & _ Year(tmpDate) & ":" & _ Right("0" & Hour(tmpTime),2) & ":" & _ Right("0" & Minute(tmpTime),2) & ":" & _ Right("0" & Second(tmpTime),2) & _ " +0000]" End Function
I hope this helps!
30 October 2006 • by Bob • IIS
The momentum for IIS 7 is gradually building, and I keep seeing great things in the press and several blogs about it. You can read a few details below:
IIS 7 contains a number of great features, and there are a couple of ways that you can get your hands on it for testing without installing the Vista or Longhorn Beta:
Have fun!
20 September 2006 • by Bob • IIS News Item
Okay, it's somewhat self-promoting, but I was cornered by Brett Hill the other day, who is the IIS 7 Evangelist for Microsoft, and he interviewed me for the IIS Show on MSDN's Channel 9:
http://channel9.msdn.com/Shows/IIS_Show
We discuss several topics like IIS history, HTTP modules in IIS 7, componentization in IIS 7, etc.
12 July 2006 • by Bob • FrontPage, Scripting
I had a great question from a customer the other day: "How do you programmatically enumerate how many web sites on a server have the FrontPage Server Extensions installed?" Of course, that's one of those questions that sounds so simple at first, and then you start to think about how to actually go about it and it gets a little more complicated.
The first thought that came to mind was to just look for all the "W3SVCnnnn" subfolders that are located in the "%ALLUSERSPROFILE%\Application Data\Microsoft\Web Server Extensions\50" folder. (These folders contain the "ROLES.INI" files for each installation.) The trouble with this solution is that some folders and files do not get cleaned up when the server extensions are uninstalled, so you'd get erroneous results.
The next thought that came to mind was to check the registry, because each installation of the server extensions will create a string value and subkey named "Port /LM/W3SVC/nnnn:" under the "[HKLM\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\Ports]" key. Enumerating these keys will give you the list of web sites that have the server extensions or SharePoint installed. The string values that are located under the subkey contain some additional useful information, so I thought that as long as I was enumerating the keys, I might as well enumerate those values.
The resulting script is listed below, and when run it will create a log file that lists all of the web sites that have the server extensions or SharePoint installed on the server that is specified by the "strComputer" constant.
Option Explicit Const strComputer = "localhost" Dim objFSO, objFile Dim objRegistry Dim strRootKeyPath, strSubKeyPath, strValue Dim arrRootValueTypes, arrRootValueNames Dim arrSubValueTypes, arrSubValueNames Dim intLoopA, intLoopB Const HKEY_LOCAL_MACHINE = &H80000002 Const REG_SZ = 1 strRootKeyPath = "Software\Microsoft\" & _ "Shared Tools\Web Server Extensions\Ports" Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") Set objFile = objFSO.CreateTextFile("ServerExtensions.Log") objFile.WriteLine String(40,"-") objFile.WriteLine "Report for server: " & UCase(strComputer) objFile.WriteLine String(40,"-") Set objRegistry = GetObject(_ "winmgmts:{impersonationLevel=impersonate}!\\" & _ strComputer & "\root\default:StdRegProv") objRegistry.EnumValues HKEY_LOCAL_MACHINE, strRootKeyPath, _ arrRootValueNames, arrRootValueTypes For intLoopA = 0 To UBound(arrRootValueTypes) If arrRootValueTypes(intLoopA) = REG_SZ Then objFile.WriteLine arrRootValueNames(intLoopA) strSubKeyPath = strRootKeyPath & _ "\" & arrRootValueNames(intLoopA) objRegistry.EnumValues HKEY_LOCAL_MACHINE, _ strSubKeyPath, arrSubValueNames, arrSubValueTypes For intLoopB = 0 To UBound(arrSubValueTypes) If arrSubValueTypes(intLoopB) = REG_SZ Then objRegistry.GetStringValue HKEY_LOCAL_MACHINE, _ strSubKeyPath, arrSubValueNames(intLoopB), strValue objFile.WriteLine vbTab & _ arrSubValueNames(intLoopB) & "=" & strValue End If Next objFile.WriteLine String(40,"-") End If Next objFile.Close
The script should be fairly easy to understand, and you can customize it to suit your needs. For example, you could change the "strComputer" constant to a string array and loop through an array of servers.
Note: More information about the WMI objects used in the script can be found on the following pages:
Hope this helps!
30 May 2006 • by Bob • FrontPage
30 May 2006 • by Bob • FrontPage
November, 1995 - Vermeer FrontPage 1.0
|
|
|
Mini Review: Believe it or not, FrontPage 1.0 ran on Windows 3.x and Windows NT 3.5.1. This required installing a Win32 subsystem for Windows 3.x, which was fraught with installation errors. |
|
June, 1996 - Microsoft FrontPage 1.1
|
|
|
Mini Review: FrontPage 1.1 was Microsoft's first release for the FrontPage family of products. It thankfully supported tables, and it supported frames, even though Microsoft's version of Internet Explorer at the time did not support frames. |
|
October, 1996 - Microsoft FrontPage 97
|
|
|
Mini Review: FrontPage 97 dropped the need for the _vti_shm folder and started inserting FrontPage bot code into the HTML. (This was an important update.) |
|
January, 1997 - Microsoft FrontPage 1.0 for Macintosh
|
|
|
|
Mini Review: Microsoft FrontPage 1.0 for Macintosh was basically a port of FrontPage 97 for Apple computers. This didn't do all that well in the Apple market because FrontPage faced a deeply entrenched customer base of Apple users that were already using Adobe's products, and subsequently it was the only version of FrontPage that Microsoft created for the Macintosh. |
September, 1997 - Microsoft FrontPage Express 2.0 |
|
|
Mini Review: This was a version of FrontPage that shipped with Internet Explorer 4.0; it was essentially an editor-only version of FrontPage; all of the web management features were removed. Microsoft did not make another version of FrontPage Express. |
|
December, 1997 - Microsoft FrontPage 98
|
|
|
Mini Review: This was the last version of FrontPage that featured a separate editor and explorer, but it was arguably a very popular version and it signaled the beginning of FrontPage's short-lived reign as one of the most-used HTML authoring tools. |
|
March, 1999 - Microsoft FrontPage 2000
|
|
|
Mini Review: This was the first version of FrontPage that integrated the editor and web management features, which was a huge milestone. This was also an extremely popular version, and it continued FrontPage's short-lived reign as one of the most-used HTML authoring tools. |
|
June, 2001 - Microsoft FrontPage 2002
|
|
|
Mini Review: This version marked the beginning of FrontPage's demise as one of the most-used HTML authoring tools. Tools like Dreamweaver began to seriously eat away at FrontPage's customer base as Dreamweaver and other tools became more powerful and developer-friendly, while FrontPage suffered from an identity crisis by sticking to simpler, novice-friendly authoring that alienated web developers. |
|
October, 2003 - Microsoft Office FrontPage 2003
|
|
|
Mini Review: On a sad note, this was the last of the FrontPage family of products - Microsoft dropped FrontPage in favor of Expression Web. FrontPage 2003 is still my all-time-favorite version of FrontPage; there's a great balance of powerful functionality and ease-of-use. (Note: Several years later, Microsoft cancelled the Expression Web family, thereby ending this line of products from Microsoft.) |
|