Sunday, July 31, 2005

Vista - Not ready for Prime Time on My Laptop

I've spent most of today trying to get Vista loaded and running on my laptop. It's been a frustrating day, and at the end of it, I've rebooted back to Windows XP.

There is a lot to like about Vista. The new UI offers some great features, such as the bread-crumbs at the top of the screen. These offer greater flexibility in navigation. IE7 offers tabbed browsing and RSS feeds. The new searching and indexing features look very interesting, I'm keen to explore them in more detail. And the new look is both new, but familiar - the basic user's learning curve should not be too steep.

Another neat feature is the install process itself. There's no I386 folder on the product DVD, just a large .WIM file and what looks like WinPE. The old unattend.txt file, loved by Admins every since NT3.1, also seems gone and replaced by an XML file. I've not yet found details on how to script the install yet - and there appears to be no \support\tools\ file on the DVD either. There is a sample of this file (unattend_sample.xml) and it looks very interesting.

Sadly, the hardware support and stability let me down badly. The main issues I have are around drivers for the on-board hardware. I've got a Dell Inspiron 8600, and the Dell drivers for the built-in Ethernet NIC, modem and Video do not install. The Video driver installed by the OS fails to start (Vista reports that it's a driver that is not supported). The generic VGA driver is good enough to use for basic configuration tasks, but it only delivers a fully visible screen at 1280x764 (at higher resolutions, parts of the screen are not visible). At that resolution, the Insprion, in common with a lot of laptops, looks pretty awful. The in-built Intel 802.11b wireless adapter works, so I got some networking and Internet access.

Another issue I had consistently was that one Explorer.exe process would regularly drive to 100% CPU or thereabouts and pretty much hang the system. I could move the mouse around, and ctrl-esc brought up the task switcher, but besides from that, the system itself did not usefully respond for periods of up to a minute. This makes it pretty frustrating to use for any length of time.

It's also very big. The Windows folder contains a massive 21,382 files weighing in at 3.41 GB. And despite the bloat, there's no great cleanup in terms of names and locations - stuff's still dumped here and there all over the place (although this is probably some they have to do to avoid breaking applications). By comparison, the Windows folder on my current laptop build of XPSP2 is 2.82 GB and 15, 891 files - and it's got a number of added services (eg the anti-spam service) added too (and all those hot-fix uninstall folders, etc, etc!). I've not spent the time to work out just where the biggest increases are yet - a task for another day.

A bigger concern for me is that most of the AV tools I have access to are not supported. Specifically, Ez-trust 6.2 and Symantec Corporate 9.0 are known to have issues. This makes using Vista fulltime a non starter until I get AV support.

In summary, Vista Beta 2 is just not ready enough for prime time on my laptop. I'll keep the build loaded both on the laptop and in a VM - I look forward to learning the new features. And hopefully there will be a prompt solution to the hardware issues. I'm kind of disappointed with Beta 1. I would have hoped for better hardware drive support. Roll on Beta 2 and better OEM support for Vista.

Saturday, July 30, 2005

Formatting Numbers in Monad

Monad is pretty clever when it comes to displaying and formatting variables. To display a variable you just specify the variable name - either on it's own or with some maths such as:

[C:\]: #display normal number
[C:\]: $number = 123
[C:\]: $negativenumber = -23.23
[C:\]: $number
[C:\]: $negativenumber
[C:\]: #display with arithmetic on the line
[C:\]: $number-23.23
[C:\]: #display formatted string
[C:\]: "String with number ($number) inside"
String with number (-23.23) inside
[C:\]: $number = 234
[C:\]: "String with arithmetic (number+1) ($($number+1)) inside"
String with arithmetic number+1 (235) inside

Well, that's all fine and well, but what if you want more control over your formatting? What if you want neat columns of numbers? I did some searching and found a blog posting from the BCL team which described formatting numbers in .NET, using C#. It was a pretty easy matter to convert the basic code presented in the blog entry into to a Monad script that demonstrates how to format numbers into strings. The script is Format-Number.Msh on my Monad sample scripts page.

As the script shows, there are a couple of ways to get nicely formatted numbers in strings. The main tools you use to get formatted numbers is the tostring() method (which every .NET object implements), the format types you can specify to tostring(), and then using the "-F" parameter to format these numbers into a display string. For example:

[C:\]: "{0,5} times 2 equals {1,10}" -f 10, $(10*2)
10 times 2 equals 20

Armed with this, it's just a matter of adjusting the format strings and the lengths of each field to get output just the way you want it.

Vista-A Saturday Morning View

Micrsoft has launched both the formal name for Windows Longhorn as well as Windows Vista Beta 1 iteself. Of course, this is probably only news to folks living in caves (who wouldn't be reading this blog entry anyway)! This is an interesting beta, in that the version I tested was downloaded from MSDN, and not from a private beta programme. So far as I can tell, there is no NDA on this version.

I started the MSDN download on Wednesday evening, but the hotel's wireless connection was pretty poor. After a day in the office (using every bit of bandwidth I could get), I finally completed the download. So it was time to install.

The first thing I found out: Vista is big, VERY big. While we can excuse a bit of debug code during a beta, the DVD image is 2.42 GB - that's right, nearly 4 times the size of XP! No wonder it took getting for 24 hours to download! But that size makes for some other problems - like for example, the fact that VPC doesn't support mounting ISO images this large. While it would be both cynical and accurate to point out that VMware Workstation does support DVD images of this size, I did not have VMware on my laptop to that was out of the question, and so was direcly loading it into VPC. But there was always Plan B - and this worked a treat. I used Daemon tools to mount the DVD ISO image to an H: drive on my host, which VPC then happily accepted.

The install into the VM took several hours on Thursday night - but by early Friday morning I had a Vista VM and was able to start exploring. While it was great for looing around, the VM was slow, and the graphics not great - the Trio card VPC emulates is not overly feature rich, and the emulation going on does hit perf a bit. But it was good enough to see that Vista is both new and familiar. Many of the same things are in the same places, but there area bunch of new features too, along with a new look UI.

The only answer was to install it fully on the laptop. Several hours of moving files around on my D: drive to make enough space, burning a DVD, etc. I left a bunch of large copy commands running (making even more space) and left the installation to Saturday morning. The installation itself went pretty smooth - around 45 minutes or so. After the final reboot, Vista came up and started running an installation programme for legacy drivers (about which more on another day!). This hung the laptop toally - I have to reboot, after which I could manually run the legacy driver installation. It looked ok, nice new background screen, new ions, but at the same time the familiar XP desktop with start bar, etc.

But once rebooted came the fun - getting drivers for the hardware. The video driver picked by the legacy installer simply does not work - the PC rebooted back into 4-bit colour. This was solved by using the built-in VGA adapter but this does not support very high resolution (1024x768) which looks suboptimal on the laptop. The driver found found for the Ethernet nic also failed to install, although the wireless card works OK(albetit slower at 11mbps than the nic at 100!).

The Dell modem driver fails to install initially - with the error that it will only run on XP and 2000. When I changed the modem driver to run in Windows XP compatibility mode, it runs, but fails to find any hardware. The mobile chipset upgrade also fails.

Running the Broadcom NIC setup utility to get the NIC drivers installed, the setup complains that the drivers are not Authenticode signed. The error message states that drivers MUST be authenticode signed in order to work in Longhorn RTM (this is going to cause a lot of issues early on!). After Clicking OK the install program just dies. Trying to manually install this nic (using Device Manager fails too.

I use Etrust AV - after installing it, Longhorn says that there is no AV program loaded, although Etrust looks installed! Given how slow the Wlan card is, I'll be leaving more software installs (generally performed across the network) for another session.

Monday, July 25, 2005

Monad Sample Script Page

I've been playing a lot with Monad, Microsoft's next genereate admin scripting tool (and generated a few blog pages too). To help me understand the product more, I've been playing with writing scripts. I thought a great way to get to know Monad better would be to try to convert some old VBS/WMI/etc scripts and in doing so, get to understand the langage and the underpinnings better.

To that end, I've put up a new sample scripts page at The idea is to show how MSH can do useful things. Some of the scripts can be pulled into your Profile.msh (or profile.custom.msh). As this gets executed when you start the shell, you end up with a load of cool new features in _your_ shell.

As Monad moves towards release, the community can create a huge repository of features that can leverage the basics of Monad while providing cool features for admins. In writing these scripts thus far, I've found the functions I've devloped are highy useful for me (thus far mainly useful for writing scripts and playing around with Monad). For example, I've defined my own tail, touch, head, plus tp (to run text pad, and Edit-NewFile (aliased enf) to create a new file (touch) then run tp on it to edit it. Versions of tail, head and touch are on the sample script page.

What has been most interesting is to note how, almost naturally, I've started to use the traditional admin script development model:

1. Type some lines directly in the shell. Play around and get something close to what I want. For example, I've created a new drive (web:) that points to \\maui\website\ I've also created a web: alias that does a CD to WEB: which made the 1st editing session very much more productive.

2. Pop the lines into a script file, or local function and get basically working. Once I found WEB: useful, I put the function and new-drive into my profile.tfl.msh file.

3. Add the function to #profile.msh and use it regularly. And as I use it, I start to add more 'production oriented " I found that you can't run new-drive multiple times without an error, so I added a check to the script to first check if web: exists and if only if it doesn't, should the new drive get created. I then added a test to see if the target drive exits (it won't when I'm offline for example) and fail more gracefully.

4. The next step would be to recode these functions into a cmdlet, or perhaps create my own hosting environment where these features are built-in. This is beyond me at present.

This leveraging process - writing loads of small little commands that make the job of using the command line shell usable and productive. I'm starting to build up libraries of libararies, if you see what I mean (eg something to parse WMI dates which is useful whenever using WMI and dates!) One of the down sides of the current drop is that the COM: scripting tools don't properly exist (this is coming in the next drop). But it's clear that Monad is gonna be a very interesiting, powerful and useful tool - I'm glad I've started to learn this now!

Friday, July 22, 2005

Monad PDC Talk

Please Click Me!!

PDC'05 - Please Click Me

Jim Truher has announced he's giving a talk at PDC in September on Monad. He currently plans on having a breakout session on the Monad language. He wants to do a deep dive, to show thow expressive it can be. I can't wait!! Monad subsite

I've put a subsite up on devoted to Monad: Thus far, it's just some links to articles and blog posts. I'm hoping to expand it in due course. Enjoy!

Discovering Networking with Monad and MSH

Monad presents administrators with great features and facilities, but there is a learning curve. One key aspect of learning any new feature or product is the aspect of "discoverability" - the ability to find things out simply. There are several ways to discover things, but the built-in reflection methods are at hand to help (although getting used to Monad and>.NET is a learning curvre!).

With Windows XP, there are over 900 WMI classes returned from the Get-WmiObject -List command, as shown:

[C:\]: $wmi=Get-WmiObject -list
[C:\]: $wmi.length
[C:\]: $wmi | format-list
(... a long list not shown!)

WMI class names are relativey self explanatory - so to find all the WMI classes that have 'net' or 'networking', you can do the following:

[C:\]: $netsettings = $wmi | where {$_.__PATH -match "net"}
[C:\]: $networksettings = $wmi | where {$_.__PATH -match "network"}

You can then use these to get the key network class names, as follows:

[C:\]: $netsettings.length
[C:\]: $networksettings.length
[C:\]: $networksettings | ft __Path


Once you have these names, you can begin exploring:

[C:\]: $nw=Get-WMIObject Win32_NetworkAdapter
[C:\]: $nw.length
[C:\]: $nw | gm
(long display - deleted)

Monday, July 18, 2005

Microsoft Certified Learning Consultant Certification Debuts for MCTs

At TechEd Amstredam, Ken Rosen formally announced that MS was launching this new certification. MCP Magazine has more details about the MCLC here. This looks like being a great way for MCTs, and the institutions that hire them, to differentitate themselves and to show they can not only "do it in the classroom" but can also do the consultative stuff: analyse client needs, design course structure and content, and finally measure value for money.

Monad - Playing with dates and time

I have been playing a bit with dates and times in Monad. In Monad, you can create a variable as a date-time object, using .NET's build in datetime class, as follows:

$[C:\]> [datetime] $xmas = "12.25.2005"

You can use this, either to assign a value or in a calculation, such as: :

$[C:\]> $xmas - [datetime]::now

Days : 159
Hours : 8
Minutes : 28
Seconds : 38
Milliseconds : 558
Ticks : 137681185582531
TotalDays : 159.353224053855
TotalHours : 3824.47737729253
TotalMinutes : 229468.642637552
TotalSeconds : 13768118.5582531
TotalMilliseconds : 13768118558.2531

At TechEd, Jeffrey Snover said his daugher was really excited about how long it is till Christmas. Just for her, here's how to jazz it up a bit and create a simple function to calculate the days till Christmas:

function cdtx {[datetime]$x= "12.25.2005"; return $x-[datetime]::now}

Jeffrey could put this function definintion into his profile.msh to have it at his fingertips should it be needed (ie when his daugter asks him again). But for even more fun, why not get monad to just tell her how many days it is, Using the say-text cmdlet I posted about earlier:

say-text "It is $($xmas-[datetime]::now).days until till christmas"

It's a little pedantic - and rather precise - but it's fun.

Thursday, July 14, 2005

Is Dell Right to go Dark?

The Register has a story about Dell, titled Dell: why Customer Care had to die, which describes Dell's decision to close its Dell Community Forum (DCF). I used DCF and the community support was good.

While The Register's normal satirical style is maintained in the article, there's a serious side too. Does it make sense, in these days of transparency, to go dark like this? Seems to me that by shutting down these forums, Dell do not help themselves or their customers. Microsoft, by comparison, may not like some of the comments they get on their open newsgroups, but the groups are open for your to post away. And genuine complaints not only get listened to, but get resolution. Everybody wins.

Wednesday, July 13, 2005

MS Takes A New Certification Road Starting in September

Well, now it's finally public and I can talk about it - well some of it anyway. MCP Magazine has now published the details about Major changes in MS certification which starts, says MCP magazine, in September. As MCP magazine says: "It's obvious that the new program differs significantly from the current program." So please read their article carefully (along with the official MS information once that gets posted).

There are two ways to look at this news: the first is (as my post of mid June suggested), MS is dumping the MCSE and pretty much the entire current MCP certification programme. All the current premium certs (e.g. MCSE, MCDBA and MCSD) are being given the long term chop, in favour of a whole brand new set of certifications. On the positive side, the new certification approach is far cleaner than the current tangle of MC* certifications - three main levels and that's it (and one of those, the architect level, is not a path for most IT Pros and Developers). Assuming the new exams are 'solid', there may be some ability to avoid the paper-certification reputation that parts of MCP had become. By having brand new certs, hopefully MS can restore the quality appeal that MCSE once had. Let's hope so!

So yes, there are two ways of looking at it. Talking to MSL people, they say I suffer from a glass half full vs half empty point of view problem. And to a degree, they have a point. The new stuff really is a lot better, and looks cool. But on the other hand, it's my glass and I paid for all the liquid that ever went into the glass. As one of the charter MCSEs, I've invested 12 years of time and effort maintaining my MCP/MCSE and more recently MCSA, MCDST plus the 'add-ons'. So I'm very disappointed to see it all go, especially as the death will a slow one.

Another aspect of the news presented in Orlando is that each of the new certifications are withdrawn once the related product reaches end of life. Thus MS are building obsolescence into the new programme, a mistake in my view. MS did this several years ago, with respect to MCT Transcripts - the idea was that exams for products that had retired were removed off of the transcript. There was a huge (negative) reaction from the MCT community, and MS found a way to resurrect those older exams. In today's terminology, that would mean I'd no longer be certified in NT4. Despite the fact that I had been certified or that our customers are still using NT4 and want certified professionals to assist. While NT 3.1 might not be relevant to Microsoft today, the fact I was working on it, and passing exams 12 years ago (and ever since) is very important to me. It shows my length of tenure and commitment. Yet MS are not proposing to take all that history away. Shades of NewThink! I've yet to hear if MS has reconsidered this aspect.

It's also fairly inevitable that there is going to be at least a partial Osborne effect on certification and certification business based on these announcements, something that the training industry, in particular, are not likely to be very happy about. For me as a long time MCSE, I now see no reason to take any more MCP exams for at least another year, and probably longer. From what I can tell today, it may make sense to just wait till Longhorn Server, which is 2+ years away in terms of stable exams. Many folks who are part way through their certification programme may also stop and re-assess to work out whether or not to continue the current path or just wait for the new exams. None of this helps the training industry.

And with respect to my MCSE: Al Valvano of Microsoft is quoted by MCP Magazine reassuring me that: "[The MCSE/MCSA/MCDBA titles] are not going away and those continue to remain valid, just like there are people who continue to certify on Windows 2000".

Pass the kool-aid Al - while the certificates will continue to be offered, as I understand it, there will be "no future investment" in the MCSE/MCSE/MCDBA certs. A real life analogy: yes, you can still buy a new Rover car. But I'm not too sure just how good of an investment such a purchase would be.

VPC Virtual machines may stop responding after the computer resumes from hibernation

So this is why I've been having problems with Hibernation and VPC VMs! There's a new-ish KB article: Virtual PC 2004 and any virtual machines may stop responding after the computer resumes from hibernation that explains why. Sadly, it's a suport call, which takes time and effort if past history is anything to go on. It would be nice if this was just a download and not a phone call!

Mozilla squishes latest Firefox bugs - 70M Copies downloaded

As the count of FireFox downloads passes 70 MILLION, a new update has been released which, says ZDNet UK Newssquishes a number of Firefox bugs. Known as Version 1.05, it's available at a download site near you!

Monday, July 11, 2005

MSF 4 Formal - 1st observations

MSF 4 Formal is the 2nd half of the latest update to Microsoft Solultions Framework (the first half being MSF 4 Agile). I've just downloaded it and have started to play a bit. This post documents a few initial observations, which are put down in no particular order!

1. The team model is improved by the addition of an Architect role. This recognises the importance of architecture in soloution design. It also appears to make the role of the Program Manager a little less technical, and more Project Manager oriented than in MSF 3.

2. MSF Formal is more formal than MSF Agile for a reason. CMMI describes 5 (or 6) levels of process-based predictability of an organisation (or department) in terms of their ability to produce quality software. The higher the level the better. With most organisations at 0 or 1, MSF 4 can help you work at nigher level. This is done by adopting highly predictable (but not so agile) processes, which is good for larger or more formal projects, especially in more critical environments, where predictibility is more important than agility.

3. The process model seems de-emphasised. In looking at the material issued this week, it's hard to find much discusion of the overall process model. There's one good slide, in the governance area, which shows the MSF Process model as a waterfall model, which is of course how you usualy do MSF based projects. What I can't yet find is a good set of process descriptions. And given that CMMI is about repeatable processes I find this lack of process model hard to understand (although it might just be a beta issue).

4. Using both the Agile and Formal process guidance requires Interent Explorer. Using FoxPro just does not work. I'm sort of dissapointed that MS would, again, put out such a key project in a format that is not useable within FireFox.

5. The current documentation does not put any where near enough clear water between MSF Agile and MSF Formal. While it's probably just a beta issue, MSF Agile and MSF Formal look very, very similar, when they should be different. Well, different enough for IT Pros and Devs to easily know which one is right for them, in a given situation. The current similarity and overlap may be confusing. I'm just grateful for Rafal's great presentation last week at TechEd which provide much clairity (clarity missing today from the MS documentation).

I'll write more once I've had a chance to digest this all!

Microsoft release draft of MSF for CMMI® Process Improvement

Microsoft's MSF update to Version 4 is slowly inching towards release. Unlike earlier versions of MSF, MSF4 separates into two separate approaches: MSF Agile and MSF for Capability Maturity Model Integration Process Improvement (SIC). MSF Agile has been around for some time - a beta was issued last year. A first draft of the 'other' MSF, which I'll shorten to simply MSF 4 Formal, is now available for download.

You can now download process guidance for MSF for CMMI® Process Improvement, (MSF 4 Formal). This download is process guidance only - thus it appears that the full integration between MSF Formal and VSTS is not quite ready.

I just have three questions for the MS folks regarding MSF. First, MSF Formal is described at the download site as an "highly iterative, adaptive planning, agile software development process", which is what I thought MSF Agile was. Maybe this is just over-enthusiastic web page editing, but there is some real confusion in my mind here. Can we get teh web site updated to perhaps make the disctincitons.

Second, given that these details were released today, why didn't MS discuss them last week at TechEd? A great talk, given by the undisputed master of MSF (Rafal), would have been the perfect place for this disscussion. Instead, we got the Best Talk of TechEd EMEA but without some of the details. Imagine how much better the talk would have been had Rafal been allowed to divulge more details. Please MSF team, remember your friends!

And finally, about the name. However you slice it up, the full product name (Microsoft Solultions Framework for Capability Maturity Model Integration Process Improvement) is somewhat on the lame side. It uses 10 long words to say what 'MSF 4 Formal would in 3 very much shorter words. Admittedly, the name manages to get some value out of the assciation with CMU and CMMI, etc. But to those not initiated into the mysteries of CMMI, it's not at all clear what this is all about. It sure doesn't sound like an IT Development Approach to me!

As Rafal explained it at TechEd, MSF 4 is a recognition that MSF 3 both did not scale well to small teams, and that scaling it up was harder than it should have been. So in effect, MSF now has a light weight, artifact thin, agile framework (MSF Agile) and a more process rich, artifact and process heavy version, which comes a lot closer to a full methodology. MSF 4 Agile is therefore lighter than MSF3, with MSF 4 Formal is richer and enterprise ready than MSF 3. I hope the MS materials make this distinction clear.

I'm really excited about MSF4, despite the lame name and the lack of disclosure thus far. I can't wait to see what the certification and training story is.

Wednesday, July 06, 2005

European Parliment rejects patent reform reports that the European Parliment has rejected draft legislation that would have provided patent protected inventions that utilise computer software. Eva Lichtenberger, an MEP, states: "We buried a bad law and did so without flowers. The legislation would have hindered the development of small companies and helped big businesses because they are the only ones that can afford patent lawyers and litigation costs."

If this is their view, then some policiticans must be unaware of the reality of innovation on the ground or on how SMEs really work. Without reform of our patent system, it's entirely possible for a competitor to, in effect, simply steal your intellectual property with little if any recourse. Copyright is simply not adequate against someone who can simply reverse engineer and reimplement your IP. About the only people who killing this legislation actually helps are folks who do not want to pay for intellectual property.

As I see it, patent protection helps small businesss, and does so in three ways. First it gives their innovation legal protection - this means that your competitor can not buy a copy of your software, reverse engineer it, then recode it and sell it as their own (something that can, and does, happen in the EU today). Second, it enables SMEs to dicuss their innovation with larger firms on equal footing - big firms and small firms both gain from sensible patent legislation. Finally, it gives SMEs some assistance when talking to venture capitalists - VCs seem to like the protection to their investment that patents can.

At the same time, the process must be made rigorous to stop some of the sillier patents. What I'd like to see is for real innovation, implemented in software, is protected to same degree as real innovation is protected if not implemented in software. Why should a mechanical device be patentable, but software to dramatically improve battery life on a cell phone NOT be patentable?

It is a shame that the European Parliment has simply rejected this bill, and did not tackle the deeper issues.


It appears I'm not alone in at least some of the views above. London Liberal Democrat MEP Baroness Ludford says in a press release: "Rejection only prolongs the uncertainty around patentability of software-related inventions in the EU. It is running away from the need to take a decision. I deeply regret that MEPs are proving incapable of coming up with a sensible version of the text, one which could ensure support for innovation but also reassure software writers and users that we were not going down an American-style route of allowing patents for pure software. MEPs are not covering themselves in glory. This process has displayed all the defects in the way we legislate at EU level, which must be addressed if we are to avoid portraying ourseleves as incapable of legislating on complex but vital subjects"

Tuesday, July 05, 2005

Virtual Server future as a separate product?

I'm sitting in the Andy Lee's keynote at TechEd Amsterdam. He's just described some of the great features of virtulisation (and he's just announced that each delegate is to get a copy of Virtual Server enterprise edition). He also announced, I think, that Virtual Server is on it's way out as a separate product. What will be coming is a hypervisior, a thin layer of virtulisation, similar to VMWare ESX, but built into Windows Server. This sounds really cool, and I'm looking forward to seeing more details about this.

Monday, July 04, 2005

WiX GrokTalk

My WiX GrokTalk is up on

This is a 10 minute talk outlining what WIX can do. I've put the slides and demos up on

Technorati tags:

Sunday, July 03, 2005

Speech with MSH

In the MSH newsgroup, there has been a lot of discussion around how to script access to objects. As it turns out, the B1 drop of MSH does not support the '-activex' paramater to new-object (a short term issue and to be rectified in the next drop). Thus some of the simple cool scripting shown on Jeffrey's TechEd presentation slides can't currently be done with our drop.

But that hasn't stopped the beta testers. Since MSH provides, in effect, full access to the .NET framework, it can do some amazing things! The following MSH function, written by Ryan Milligan, is a way in the latest drop to invoke an object's method:

function invoke-method($obj, $name)
$obj.GetType().InvokeMember($name,[System.Reflection.BindingFlags]::InvokeMethod, $null, $obj, $args)

The following MSH function leverages invoke-method, to call the Speach API's SPVoice function to speak text passed as a paramater.

Function say-text([string] $texttosay)
$speech = [Activator]::CreateInstance([Type]::GetTypeFromProgID("SAPI.SpVoice"))
invoke-method $speech "Speak" $texttosay 0

To test this:

say-text "Hello World"

For fun - what do you think would happen if you called say-text with a number such as 123456789. Try it - I was sure surprised at the result.

I'm not sure how admins would discover the details of method names, unless they know a lot about programming against COM and .NET. But the power of MSH is that someone can post a few lines of script, which you can quickly adapt, and in the example above, refactor into a command (say-text). MSH is likely to be one of the first products delveoped where there'll be more stuff out there (script hacks such as I've posted here) than code in MSH itself.

Saturday, July 02, 2005

Speeding up MSH Start Time

MSH is Microsoft's new shell - and it has been developed in managed code. Because it is managed and large, it needs to be JITed each time it is run and this takes time. To speed it up, you can do a native generation by running the following command:

C:\windows\Microsoft.NET\Framework\v2.0.50215\ngen install "c:\Program Files\Microsoft Command Shell\msh.exe"

You may need to adjust this for folder names on your system (and despite how it looks here on Blogger, it is all one line!). On my laptop, this took startup from around 2-3 seconds to near instant. This is a beta performance issue (not having msh.exe ngened) that will get fixed for RTM, but for not, it makes startup faster.

Friday, July 01, 2005

PDC Micro Flair

Looking over at the Channel 9 PDC Flair Site, they seem to be mostly larger images. So I created a much smaller, more discreet bit of micro-flair. It's at