I've moved my blog to!. Please update your links. This blog is no longer in use--you can find all posts and comments at my new blog; I will no longer be posting to this site and comments have been disabled.

Monday, July 12, 2010

Win One of Two Microsoft Visual Studio 2010 Ultimate with MSDN Subscriptions!

Update 8/9/2010: Contest is closed and winners picked - thanks to all of those that submitted!

Visual Studio Ultimate with MSDNTo celebrate my venture into the brave new world of independent consultancy I’ve decided to give away two MSDN Subscriptions – specifically, the top of the line Visual Studio 2010 Ultimate with MSDN subscriptions valued at $11,899 each!*

In the spirit of full disclosure, Microsoft gave me these subscriptions (plus one more which I’ll give away at SharePoint Saturday Denver on August 7th, 2010 so make sure your register!) for participating in the Visual Studio beta program with the intent that I would give these away at my discretion – well what better way to give them away than to offer them up to readers of my blog and specifically those who have used my tools.

So here’s how I’m going to offer them up – if you are interested simply post a comment with one of two things: either your favorite stsadm command, PowerShell cmdlet, code sample or other download that you use from my blog, or a brief story/description/explanation of how the use of my extensions (or code samples or other downloads) saved your company time (and therefore money) – essentially what I’m looking for is testimonials so I prefer the details over the favorite but I know that not everyone can share their story due to confidentiality issues so what I’ll do is give one subscription away randomly to those that post their favorite command and one subscription to the person with the best story as judged by me. I’ll plan on announcing the winner the first week of August.

Please help me spread the word and good luck to everyone! I can’t wait to see the comments!

P.S. Make sure that when you post your comment you provide some way for me to identify you (if you post anonymously sign it with your name otherwise create a profile).

*The subscriptions are a not-for-resale version with some benefit restrictions such as no technical support benefits or MSDN magazine subscription and all product licenses are for development and test only so it’s not quite the $11k value of the retail subscription but you get all the same licenses so the value is still pretty high.


Kerrick said...

I'd have to say gl-publishitems.. I use it all the time to wrap up all changes everyone made but forgot to check in so I can deploy content.

Whenever someone wants to do something crazy in SharePoint I always think 'maybe Gary has a command for that'.
Off course you don't always do so I still have a job =)

Steve said...

gl-fixpublishingpagespagelayouturl and gl-propagatecontenttype have saved me ooooodles of time...thanks a bunch for those !

russcenter said...

gl-import2 has been great for migrating templates and other things from my Development environment to my Production environment. Thats my favorite, although I use gl-backupsites every day in my backup script.


Dathron said...


I use your stsadm extensions more and more everyday! I have been asked by my company to create a PHP library that interfaces with our Internal SharePoint sites, and when testing some of my methods, I inadvertently create bad columns - such as a lookup column without a lookup. because of your extensions, I am able to remove the columns that cause SharePoint lists to crash, and keep going without a hitch!

That being said, My favorite command has been gl-deletelistfield. When columns are created that cause issues, it is impossible to use the web interface to delete them. Your tool has been the only one I could find that does the trick every time!

Thanks for the hard work and great tools!

Rez said...

Congrats on your new position!. My favorite code that I constantly use is from your sts commands:

public static void SetContentTypes(SPWeb web, SPList list, string[] contentTypesToAdd, string[] contentTypesToDelete, string[] contentTypeOrder)

I constantly use this in features to dynamically add content types to lists and libraries instead of using the XML methods.

Tom Shirley said...

Hey Gary,
Never posted on your site before, but i've found some of your information helpful in solving problems in the past. As an example, when coding the Access Checker Web Part [codeplex project], I needed a way pre SP1 to compute the permissions of an arbitrary user over a list. The SharePoint object model didn't provide a public method at the time, but you were able to figure out a solution to surface this information in one of your nifty stsadm commands.

For me, this really highlights Gary's comprehensive technical knowledge of SharePoint technologies and development techniques. Seldom do others provide creative insight into getting the job done like Gary does - a real powerhouse.

'Getting from A to B with SharePoint can feel like you're on The Amazing Race, deciding which of the myriad of options will get you to the finish line first.
Make sure you come out in front with Gary Lapointe, expert SharePoint MVP.'

Frode A. said...

Good luck with your new adventures Gary.

I'd have to say my favorite command would be gl-execadmsvcjobs. That the out of the box execadmsvcjobs doesn't do this already is beyond me.

We had all sorts of issues in out development farm environment before we started using this command. We use deployment scripts to add and deploy solutions and we use execadmsvcjobs between the steps to ensure that the adding of the solution has finished before the script tries to deploy it.

About one third of the time we'd be running deployments, parts of the solutions would fail for god knows what reason. I can only image that some of the servers would be lagging behind with adding the solution, and other servers would go ahead and start deployment and bomb when the entire farm didn't have it there already. Drove me (well, our admin really) absolutely crazy. So then we'd have to go and manually remove the half baked deployment (which is no walk in the park, let me tell you) before we'd cross our fingers and hope that it wouldn't explode the next time around.

After switching to the quite superior gl-execadmsvcjobs, we never ran into this again thanks to the fact that it waits for ALL the servers to finish adding the solution before it would let the script continue to the deployment stage. So thank you Gary. Thank you very much.

WebApe said...

Hi Gary, we are a school district that has been using SharePoint for going on seven years and when we moved to '07 we started pushing sites out for teachers and as such needed to add AD groups in our site creation script which was made easier by using your gl-adduser2 stsadm extension. Thanks to you for all your contributions to the SharePoint community.

Ayase said...

You have asked one question...What would you like use the software..In other way i guess you want to know what will you do with this very cool software..So i want to tell you something about my plan... :)

I would like to use Visual Studio 2010 MSDN Ultimate Subscription to build a secure server/file transfer/fetching/archiving/processing/reconciling/user worklist managing/cross-platform system (uncannily and quite coincidentally, exactly what is desperately needed at a company I know). It will help other people's lives in several ways: filling a need that many companies are bound to have and for a low price; increasing the number of small software development businesses out there, etc etc.

Mads Laursen said...

My favorite would have to be gl-activatefeature. There's just too much work in activating features all the right places, when you do it by hand.

Matthew Chestnut said...

I have used a number of your commands to provide a scripted solution for SharePoint farm installation:


Using your stsadm extensions gives me the ability to do a "hands free" installation of SharePoint, configuration of the server farm, and creation of web applications. These commands have been tremendous time savers!

Martin B said...

Hi Gary

First of: your are a GREAT asset to the SharePoint community! Your extensions are second to none.
They've saved my a** countless times!
I am a big fan of the gl-reghostfile and gl-execadmsvcjobs. First one because it can help me keep content streamlined when designers makes mistakes, second one because it solved a lot of deployment issues when scripting (command-line) deployment to a multi-server farm. It also helped me realize that one of the servers in a farm had went bad!

Thanks for all the good work!

/Martin Buus

John said...

A MOSS (short) story

The environment I was responsible for at my previous engagement began as SP Portal Server. In July of 2007 the leader of our infrastructure team, who was new to the organization, saw great potential in leveraging MOSS and built a new enterprise farm. A single CA/Search/WFE instance running on physical hardware with its databases on a remote SQL back end.

The direction was set. MOSS was aimed to be a critical business application.

A new job requisition for a SP admin was created and a fellow was hired to lead a new effort to migrate our 2.0/2003 content to this new MOSS farm.

Fast forward to November. With the migration complete a new intranet publishing and collaboration portal was unveiled to the company and marketed to the business. Everyone jump aboard!

It seems cliched to be writing about this as I am sure you know what happens next. Our situation though was, perhaps, a bit more unusual, so I will back up just a little bit.

The SP position soon became vacant and there was great effort in recruiting to fill this role.

At the same time, our director of IT Operations assumed command discovering that we weren't actually licensed for the enterprise version of what was now, a "critical", production application. (oops)

I would guess that others might likely 'start over' with a new environment, so to speak.

But as a parallel investment was being made in VMWare, the director, built a new 'standard' farm, 1 CA/Search, 2 NLB WFEs, on to virtual hardware.

Somehow he also managed to downgrade our enterprise implementation, and all of its active content, to the new farm. (I'm still uncertain as to what actually took place. More on that below*)

Our intranet portal was saved, intact, and running legally on MOSS Standard.

With the difficulty of finding an experienced person, I earned the opportunity to take the SharePoint position and learn from the ground up.

*And within 3 weeks the director and infrastructure manager had both left the organization.

With ever increasing demand for new spaces, our growing SharePoint - a web application, one content database, a single site collection (plus a few hundred "my site" collections), and a plethora of sub webs - was beginning to spiral out of control.

There began to be a variety of very strange incidents - display/edit forms for lists across varied sub webs, individually, over time, returning an ASP.NET error page and stack trace in mixed English and Chinese characters with no discernable consistency? Most importantly, the occasional complete outage of the system and loss of data due to content DB corruption over time, eventually crashing the DB altogether, requiring restore.

Our SharePoint was sick and I was desperate. Was it our content database? Our web application? Our site collection? Our hardware/server platforms?

All of the above?

It was clear, I had to start restructuring our farm, breaking out and dispersing objects, rethinking what a reliable design should be, if I were ever to isolate and eliminate these problems.

Stuck out of the box, I one day stumbled upon I can't recall even how I came upon the site, but I can recall that almost instantly, I had a moment of clarity, of revelation, of exuberance, beyond a mountain of frustration.

"Finally! This is exactly what I've needed all along, what I've been searching for."

Someone has recognized the need and taken the time to build these tools, fill in the gaps, and share them to the community, for free, giving empowerment to achieve essential tasks, readily, that what would simply otherwise not be possible.

I am a novice developer and as I progress my skill I will always hold this site and its intentions for the community, as a model.

I use these tools regularly, every day, but I will just especially call notice to gl-convertsubsitetositecollection as one that saved my job and allowed me to remain in the SharePoint community.

Thanks Gary.

Sosiosh said...

First, thank you. I can't tell you how many of your commands I use and rely upon on a regular basis. Suffice it to say, some of my favorites echo what others have already said - gl-publishitems, gl-backupsites, gl-execadmscvjobs. Even more importantly, your blog is a great resource not just for these tools, but also for seeing how they are coded.

Craig said...

I really like gl-exportcontenttypes. This has saved me so much time as a developer. It allows me to pick a single content type and ensure that it's feature safe as well. I used to use Andrew Connell's content type export command but Gary's is definitely better. All of these stsadm commands are an essential to my SharePoint DEV VM and recommend them to anyone.

Todd Wilder said...

Gary! My favoriate part about your blog is how I can use it to answer so many questions on the MSDN Forums. Its my most popular answer..."Gary LaPointe has a command for that"

Todd Wilder

freddy81 said...

Hi gary, i'm a big fan since you start blogging about stsadm custom commands and I used one of them to fix a problem in production env, and I also fix your code because it used en-us localized names and I was in fr-fr ... :) but everything go right after that hopefully !

Your help will be infinite for us sharepoint dev and IT pro ! So continue that way !

Thank you !

Thomas Hildebrandt said...

My favourite cmd is gl-fixpublishingpagespagelayouturl.

During a deployment of a publishing portal from one server to annother many paths to page layouts were brocken. While opening the site settings always an file not found error has occured.

This cmd helped me to fix all sites in an easy and quick way!

Thanks for that!

Station said...

Hey there my comment is part of an kind of a diary of my techie life,it has more then the 4096 that the comment permits. Even so here it goes

"It will just take a couple of minutes"
PART 1/2

Thursday somewhere in 2007
Place: A well known Tv Station, Portugal Europe
Who: A recently hired Solution Architect all in one
Mission: Deliver Publishing Sites on a record time

TAKE 1 : "The Beginning"

Entering the Office for the first time that day i felt a chill crawling my body:
"This is not going to be a good day." i thought.
Diving in to the daily tasks of developing a internal framework for speed up the
development and deployment.
"Self Made solution builder, Check";
"Publishing Homemade Features , Check";
"Team System and correct versions checked in, Check"
"Nightly builds , Check"
"Its 17:00 and all's fine! After all maybe i was wrong the day went very wheel", i thought on my naive mind
"Lets update solutions in Staging Env"

All of the sudden, a dark shadow laid down my SharePoint Stage Farm: the page layouts are not updating.
The customer was waiting in the other side of the phone "So are we there yet?" said him.
Damn Bart Simpson lover, " It will just take a couple of minutes." Naive... me and him.
"Why the heck the things are not updating? Why , Why why ?"

On this early stage SharePoint 2007 hadn't much docs to support, and even guys from the M. Company didn't had a clue why the layouts where not updating.

20:00. " Page Layouts sucks! Why didn't i make this why a regular Asp.Net site. At least i know whats happening!" this was my shout of desperation.

Step by step , i rebuild new page layouts tag by tag, i used the BELOVED SharePoint Designer to do the initial pages and Visual Studio to finalize it.

"Rebuild! Maybe this time with a work of God i can sleep at home"

The Phone rings . Its my wife asking if she was eating alone. "No, darling It will just take a couple of moments." Ring any bells?

21:30. No updates yet ... Then it hit me ! Customization, Ghosted, UnGhosted been a SharePoint 2003 Developer i remember this concepts.

" Maybe the pages layouts are customized ! " Suddenly a click went on in my mind, i could see a light at the end of the tunnel . "I hope its not a train!"

Went to the good old and tired web , search for customized, Ghosted, UnGhosted and found a great blog and this article .
"" from a Lapointe fellow.

As i dive-in i fired my dog as my best friend and promote stsadm extensions to be the one and only.

with stsadm -o gl-enumunghostedfiles my life changed: now i can go to the cinema, sleep early and have a life!

It was tremendous the upgrade i made in SharePoint knowledge because of this tool.

Meanwhile, i figured out whats was the problem . SharePoint Designer was doing that . Here's a link of that time (
So Lapoint fellow and his stsadm extensions ROCKs for life. Oh by the way, my wife also appreciate the extensions ;).
Quite an experience but this was just the beginning....

Next comment has the 2th part of this odissey

Station said...

"It will just take a couple of minutes"
PART 2/2

TAKE 2 : "The vanity almost kill the cat"

Monday somewhere in the beginning of 2008
Place: A well known Tv Station, Portugal Europe
Who: A not so recently hired Solution Architect all in one, with some vanity in SharePoint Knowledge
Mission: Deliver a startup farm with structure site and Forms Authentication

Over the last year, I've earned a little vanity with my SharePoint and architect skills
"If you got a problem, that nobody can solve, talk to this guy" Then everybody pointed at me.
"OWO, I'm cool!" That were my thoughts at the time .

Then someone drop the bomb :
" Hey , i need to create my webapps, provisioned on a different folder then the inetpub default place , but it has to be done via scripting".its was a sysadmin request.
"Don worry . Ill do it , i will use stsadm " i said.
Of I go to scripting with stsadm .

Finished with the editing , i delivered the good old stsadm script to the sysadmin guy.
"Here is is" i said.
"Wow! you are fast . Thanks" he said
"Hey you forgot the folder isn't the default one." he replied again.
"Oops, sorry men. Ill fix it", said i
"How much time to that", asked the sysadmin.
" Oh , It will just take a couple of minutes" Naive...

Stop Scene . If you use stsadm -o extendvs OOB you cannot set the path nor the port of webapp

I took me 2 minutes to figure that and one hour to develop 1/3 of an engine for scripting.

Suddenly , sysadmin intercepts with a cry for help:
"Master Yoda (That's a call sign everyone call me, go figures), need your help on that matter ASAP: our director is arriving in half and hour and i must do a demo with that script. Please help...."

"Oh my God. I cannot develop this thing in that time" i thought.
"Give me some time " ( by the way the phrase 'It will just take a couple of minutes' it was a common phrase within my speech. Not anymore ;)

"How can i help ! its impossible, i cant do it , nobody can, poor guy because of me he may lose his job..."

I love technology but essentially I'm a person who always cares about the others and the team.

There, in that company everybody was a family . One for all and all for one.

To the limeted char count of google comments this story continues in the next comment

Station said...

"It will just take a couple of minutes"
PART 2/2 ( continuation)

TAKE 2 : "The vanity almost kill the cat"

"I was suffering. What can i do? The last time i felt this was last year. How did i solve it back then? La joint? No not La Joint... LApointe! That's it "
I install it, use the help of the stsadm , eh voila! I delivered the script to the sysadmin guy . 10 minutes after he presented the demo .
I was a success! Our Team rules. Lapointe rules with the gl-createwebapp and gl-extendwebapp options!

Ive got a huge thank you from the sysadmin and an unlimited access to a special place in the network with lots of stuff to play around.

Just for the record, across that year we delivered 3 farms with 5 servers in each. stsadm Lapointe extensions were not part of SharePoint base installations.
since this episode they were;)

Lapointe tools are a swiss knife for every SharePoint developer and Administrator.
Community stuff like this serves everybody.I know for a fact that even Microsoft is using your tool in Production and Developing.
Great isn't it?

Well that's it. 2 small episodes in my life within SharePoint and Lapoint tools.
Since that time i frequently use the tool (now with PowerShell ! ) and I'm still learning a lot with approaches you made to some issues Sharepoint brought to us.

Now, I'm a SharePoint Architech well known in this area of expertise, always helping others in this SPS demands.
Early this year i founded with a couple of guys over here, the SharePoint Portuguese User Group(http//
and inspired by some Lapoint tools, we are delivering some made by us (http//

Thank you for the opportunity of knowing you and your expertise and good luck in you new quest!

Anything i can help , just ask.

Best Regards
Rodrigo Pinto, Scoutman
CoFounder SharePointPT

The SharePoint NOob said...

I would have to say that two of your extensions have been an absolute life (and therefore, "job") saver!

Convert Subsite to Site Collection
I had very minimal MOSS2007 experience, and when I was brought on to the team with my current agency, I was a little scared. My first "big" project was to convert a truckload of sub sites to site collections, on a different server (which was also on a different domain). This command saved my life, which I'm sure, saved my job as well (I was still in the dreadful "trial" phase of employment...60 days to prove your worth or pack your things).

Not only did this command get everything accomplished, it also helped me see how everything worked on the inside (by looking at the source code for it). Previous to using this command, I had tried pretty much the same commands that Gary posted in his description of why this command was necessary (after doing everything with strictly stsadm, you still end up with a broken page), and until I found this, I had no idea why things weren't working out correctly. Definitely a top notch tool!

The second tool that has saved my (and my team's) arse:
With HUGE amounts of data on our server, fixing broken URLs from sites migrated from other servers would have taken a lifetime. With this tool, you have effectively converted weeks worth of work to....five minutes!

TM Technology Services said...

Our Hospital uses almost all of your commands but especially gl-publishitems, gl-backup, gl-backupsite, gl-enumunghostedfiles,gl-import2.

Thank you for all your work in the community. If you had a dollar for every minute you saved us you could retire comfortably. Good luck.

P Kumar said...

I think Delete All Users from a Site Collection (gl-deleteallusers) is awsome.

J. Reed said...

get-help is my favorite command

Gary Lapointe said...

Reed - that's cool, but get-help is not one of my commands :) It's an out of the box PowerShell cmdlet.

Nancy said...

gl-fixpublishingpagespagelayout and gl-copylist. The former addressed a long-standing problem requiring an old server to remain in use with limited functionality so the site on the production server didn't break routinely. It's like coming in out of the rain.

The latter I have used on a couple of projects where clients insisted that lists be in one place, then changed their minds a few weeks into it and the lists had to be moved. Maddening situation, but the gl-copylist enabled service with a smile.

In fact, the stsadm extensions page is on my Favorites Bar.

On tap for today: experiment with gl-convertsubsitetositecollection. I have high expecations.

Thanks for your contribution to this community!

Jereme Watts said...

I'm going to have to agree with FrodeA and have to say my favorite command is gl-execadmsvcjobs. Fior all the samee reasons, backing out of a deployment gone wrong is not only annoying but time consuming. This command made my life easier and the wait times for the operations and sql server guys/gals.

Tati said...

gl-reghostfile is my favourite: When provisioning web parts to a page layout in a feature, there is no convenient way to update changes to the web part.
When re-activating the feature the new version of the web part is added but also the obsolete version still remains. We tried to write a feature receiver that first removes the web part on FeatureDeactivating but again, ran into problems. If you re-ghost the page layout the web part is removed. Re-activating the feature adds the latest version of the web part.

Another one that saved us a lot of time (being in multilingual Switzerland) is gl-fixpublishingpagespagelayouturl.

Thanks for saving as all that time and many worries!