Sunday, November 30, 2008

Database Versioning Demonstration Uploaded


Database Versioning Demonstration Uploaded

Fulfilling my promise at TechEd, I’ve finally completed a self-directed demonstration of the database versioning techniques I first presented at last year’s TechEd and which was alluded to during this year’s TechEd SQL Tricks presentations.  It’s published here on my resource page at MSDN Code GalleryNo platform snafus this time, either..

The 12.5mB file contains the following:

  • VersioningDemo.bak: a SQL Server 2005 database backup used in the demonstration.
  • VersioningDemo.pptx: excerpts from last year’s TechEd presentation on the topic; use this file as an overview to the discussion.
  • LightweightVersioningDemo.sql: a simple demonstration of scripting variables and SQLCMD.
  • HeavyweightVersioningDemo.sql: the core of the demonstration.
  • spRefreshChannelCache.sql: a stored procedure of which you’ll create multiple versions while running the HeavyweightVersioningDemo.sql file.
  • spCloneVersion.sql: source code for a stored procedure invoked during the HeavyweightVersioningDemo; included for informational purposes only.

To get the full impact of the demonstration, you’ll need to restore the database backup onto a SQL Server 2005 or SQL Server 2008 instance.  If you name the resulting database VersioningDemo, the scripts will function without modification.

Examine the contents of the PowerPoint file for an overview of the design considerations which informed this effort.  LightweightVersioningDemo.sql offers a trivial demonstration of scripting variables, while HeavyweightVersioningDemo.sql offers a glimpse into the full power of this technique.

HeavyweightVersioningDemo.sql offers a discussion of the schema which enables this approach, as well as an open-ended demonstration which will allow to to instantiate as many version of data and code as you like.

There are detailed instructions embedded in both the Lightweight and Heavyweight scripts.

I hope this demonstration is useful to you, and I appreciate your patience in awaiting its release!

As always, please let me know if you have any questions or comments.


Published Sunday, November 30, 2008 9:30 PM by Ward Pond

Ward Pond's SQL Server blog : Database Versioning Demonstration Uploaded

spSearchOnAllDB: SQL Stored Procedure to Search an Entire Database


spSearchOnAllDB: SQL Stored Procedure to Search an Entire Database

From the Useful SQL Scripts Series.

This stored procedure allows you to search all columns in all tables in a database for the occurrence of a particular string or value.  Wild card characters such as those supported by the LIKE keyword can be used.

For example: _ to wild card a single character, and % to wild card a number of characters.

Once you have run the script to create the stored procedure you can execute it to look for data, here are some examples:

      exec  spSearchOnAllDB 'Sugar%'
      exec  spSearchOnAllDB '%soft%'
      exec  spSearchOnAllDB '_5234_57%', 1
      exec  spSearchOnAllDB M_cro_oft

This script is available from other locations around the Internet, but the one attached has had some minor changes to make it more suitable for working in a Dynamics GP environment, such as granting of access to DYNGRP.

The script is available as an attachment at the bottom of this post.


Posted: Monday, December 01, 2008 11:30 AM by David Musgrave

Filed under: Application, SQL


Developing for Dynamics GP : spSearchOnAllDB: SQL Stored Procedure to Search an Entire Database

PowerShell Scripting Tricks: Scripting The Web (Part 1) (Get-Web)


Microcode: PowerShell Scripting Tricks: Scripting The Web (Part 1) (Get-Web)

Several of the last posts have tackled how to take the wild world of data and start to turn it into PowerShell objects, so that it’s easier to make heads or tails out of it.  Once all of that data is in a form that PowerShell can use more effectively in the object pipeline, you can use PowerShell to slice and dice that data in wonderfully effective ways.

Data mining is a strange art that I find scripting languages normally are a little better at than compiled languages. I find that PowerShell can be incredibly useful for data miners for two important reasons.  First, it can pull upon an unprecedented array of technologies (COM, WMI, .NET, SQL, Regular Expressions, Web Service, Command Line) in order to get structured data.  Second, and more importantly, since you can easily create objects on the fly in PowerShell, and since PowerShell has wonderful string processing, you can often use PowerShell to extract structure data out of unstructured data.

Being able to pull data out of the mist and give it form is a very valuable skill, because people do not think in structured data.  While it might be useful to the computing world to have most information in structured data, most people disseminating information don’t think or record their thoughts with rigorous structure.  However, many people do record their thoughts in semi-rigorous structure, like the sentences and paragraphs you’re reading now.

The fact of the matter is that tons of data floats on the web requiring a very little bit of work and a small amount of art to extract it.  This is because the web that people record their thoughts in is largely in HTML, and so, it is possible to learn a few ways to pull the data from the little structure that exists.

The first piece of the toolkit to extract out data from the Web is a function I’ve called Get-Web.  Get-Web will simply download web pages, and it wraps part of the System.Net.Webclient object.

Using WebClient has pros and cons.  The biggest pro is that it relies on .NET, rather than on a particular browser, which means that you can use it without IE.  The biggest con is that a lot of web pages do checks on the browser in order to change how they display.

Get-Web is below.  As with Get-HashtableAsObject, I’m using comments to declare some nifty inline help.

function Get-Web($url, 
# Downloads a file from the web
# Uses System.Net.Webclient (not the browser) to download data
# from the web.
#.Parameter self
# Uses the default credentials when downloading that page (for downloading intranet pages)
#.Parameter credential
# The credentials to use to download the web data
#.Parameter url
# The page to download (e.g.
#.Parameter toFile
# The file to save the web data to
#.Parameter bytes
# Download the data as bytes
# # Downloads and outputs it as a string
# Get-Web
# # Downloads and saves it to a file
# Get-Web -toFile
$webclient = New-Object Net.Webclient
if ($credential) {
$webClient.Credential = $credential
if ($self) {
$webClient.UseDefaultCredentials = $true
if ($toFile) {
if (-not "$toFile".Contains(":")) {
$toFile = Join-Path $pwd $toFile
$webClient.DownloadFile($url, $toFile)
} else {
if ($bytes) {
} else {

To walk through a few examples of Get-Web, simply point it to any webpage.


To save a page to disk

	Get-Web -toFile

Just downloading the data is only the first step.  All being able to download web data gives you is a way to get the mist into a bottle, but it doesn’t help you give it form.  The next piece will cover how to pull the data out of the web and into PowerShell.

Hope this helps,

James Brundage [MSFT]

Published Monday, December 01, 2008 3:13 AM by JamesBrundage

Media And Microcode : Microcode: PowerShell Scripting Tricks: Scripting The Web (Part 1) (Get-Web)

Useful SQL Scripts Series


Useful SQL Scripts Series

David MeegoAfter the success of the Microsoft Dynamics GP Application Level Security Series, I have decided to release a another series which contains some really useful SQL scripts I have collected over time.

The posts in the series (so far) include:

Note: Links will be available on or after the posting date.

I hope you find the information in this series useful. I plan to add more scripts as time goes on.

If you have any scripts you wish to donate to the series, please contact me using the Email link at the top of the blog page.


Posted: Monday, December 01, 2008 1:30 AM by David Musgrave

Developing for Dynamics GP : Useful SQL Scripts Series

Friday, November 28, 2008

Visio 2007 Add-in's


Visio 2007 Add-in's

I am not sure if everyone knows about some of the great add-in's for Microsoft Visio 2007 there are available to download. There are lots of add-ins specifically for Visio 2007.  If you’re interested in diagramming topology or schema, this is the tool to do it in.

imageExchange Server 2007 Visio Add-in
The Microsoft® Office Visio® 2007 Professional Add-In makes it easy for Exchange administrators to visualize, explore, and communicate complex information. Instead of viewing single user data, administrators can create data-connected Visio diagrams that display data at a glance and dramatically increase productivity. You can diagram a Microsoft® Exchange Server 2007 site topology, including sites, servers, and connections for an organization.

Disk Space imageMonitoring Add-in
(aka Near Real Time Server Storage Monitoring)
Microsoft Visio 2007 Add-in for Near Real Time Monitoring (NRTM) of Disk Space uses the new Data Graphics feature of Microsoft® Office Visio® 2007 Professional to display the results of server monitoring.  This add-in auto generates diagrams from Microsoft® Office Excel® or Microsoft® System Center Operations Manager 2007 as a data source. Let’s you decide on optimal threshold values for disk space and then monitors your hardware for disk space using WMI or Ops manager in near real time.

Folder Access Rights Map

Folder Access Rights Map Add-in
Folder Access Rights Map helps you see a shared folder's setting conditions at a glance. It outputs the configurations and the Folder Access Rights of the shared folders on your file server to Microsoft Office Visio or Excel.
With Folder Access Rights Map, you can:
- Obtain shared folders from the Active Directory, list them and select them individually.
- Specify the number of layers in the folder hierarchy for output to Microsoft Office Visio or Excel.
- Display the setting conditions of shared access or NTFS access.
- Visually retrieve and display a folder which has a designated account.

Active Directory Topology Diagrammer Add-in
With the Active Directory Topology Diagrammer tool, you can read your Active Directory structure through Microsoft ActiveX® Data Objects (ADO). The Active Directory Topology Diagrammer tool automates Microsoft® Office Visio® 2007 Professional to draw a diagram of the Active Directory Domain topology, your Active Directory Site topology, your OU structure or your current Exchange 200X Server Organization.

image Server Virtualization Add-In for Visio 2007 Pro
With over 70% of server hardware being under-utilized, this very valuable tool can draw a clear picture of your hardware utilization. This tool auto-generates the diagram of your rack and provides clear server details from a linked Excel template. Analyze your racks and servers using WMI or get the utilization data over time using the Operations Manager connection.
Use the virtualization button to see the before and after detailed diagram of your racks. See clearly where you have the opportunity to save on space and power.

image SQL Server Add-In
The SQL Assessment Add-In for Microsoft® Office Visio® 2007 Professional is a tool for IT administrators who need to continually interact with users during SQL server installations in any IT infrastructure.  
This add-in takes the input of SQL configuration prerequisites from users for SQL Server installations and shows them in a clear, easy to read diagram. The tool also allows you to see whether you can update your server configurations to the latest version of Microsoft® SQL Server® 2008

Baseline Security Analyzer Add-in
This Microsoft® Office Visio® 2007 Professional Add-In for Microsoft® Baseline Security Analyzer

Software Upgrade Assessment Add-in
Visio Add-in for Software Upgrades will help the IT/Datacenter Administrators and manager to assess the hardware and software installations on the Servers and user computers/laptops.
Use this valuable Add-in to assess your client and server infrastructure easily and simply using Visio 2007. Evaluate what hardware on the client side you can upgrade to the latest versions of Windows Vista of on Microsoft Office 2007. Assess your server infrastructure to check and see which versions of Windows server 2008 or SQL server 2008 you can run on your current infrastructure. All of this in an easy to use and understand Visio 2007 diagram which is automatically generated from and Excel template. Save time and money using this simple client and server assessment Add-in for Visio 2007.

Posted: Friday, November 28, 2008 11:58 PM by will.craddock

Will Craddock's Technology Advanture in Ireland : Visio 2007 Add-in's

Thursday, November 27, 2008

Dynamics GP Land


Dynamics GP Land

Christina Phillips (The Knaster Technology Group), Steve Endow (Precipio Services), and Lorren Zemke (Wennsoft) maintain this blog as a way to encourage collaboration and knowledge sharing between Dynamics GP consultants, trainers, and end-users.

Dynamics GP Land

Resolve Customer Issues quicker with the Support Debugging Tool for Microsoft Dynamics GP


Resolve Customer Issues quicker with the Support Debugging Tool for Microsoft Dynamics GP

David MeegoAlright, I admit it, this is one of my favourite subjects.

I am currently working on the next build of the Support Debugging Tool which will add some new features and extend existing features... more details to come later.

So, I am happy to see the tool being promoted on other sites. This comes from the Microsoft Partner News website.

What if you could cut the time spent troubleshooting customer issues? This would increase the efficiency of your support staff and improve your customer service substantially, saving you money. Look no further. The Support Debugging Tool is here. The tool is intended for people who are troubleshooting issues related to Microsoft Dynamics GP. The tool should be installed at customer's sites so it is ready and available when needed. It is passive until it is asked to perform actions.

For the rest of the article, see the link below:

Resolve Customer Issues quicker with the Support Debugging Tool for Microsoft Dynamics GP Secure Link


Developing for Dynamics GP : Resolve Customer Issues quicker with the Support Debugging Tool for Microsoft Dynamics GP

Checking eConnect Version Number Programmatically


Checking eConnect Version Number Programmatically

David MeegoTo date the blog has not had a large amount of content relating to eConnect. So I am going to cheat and point you to a great article by Steve Endow on the Dynamics GP Land blog.

Avoid versioning issues with eConnect by knowing how to check the version installed at a site.  See the article below for details:

Checking eConnect Version Number Programmatically


Developing for Dynamics GP : Checking eConnect Version Number Programmatically

Remote Volume GUIDs driving you crazy?


Remote Volume GUIDs driving you crazy?

I was maybe half an hour away from giving up on my Hyper-V Server Core box and doing a "Full" install. The solution, once you know it, is simple... the problem was there seemed no way to reattach a previously created virtual machine. I hadn't done an export, so "import" wasn't an option. Usually, what you do in this situation is you create a new virtual machine and attach the old VHD file. Since I'm planning to use Failover Clustering, the VHD files reside on a iSCSI SAN and instead of drive letters, I'm using Volume GUIDs.

Almost all has to be done remotely, because the Hyper-V box is a Core machine.

First, how do I get the GUID of the volume where my VHD file is stored? On the Server Core box, open a command line and type "mountvol". You will see something like this:

It's obviously neither "C:" nor "D:"... so which is it? The most intuitive thing would be to copy/paste the path(s) and prepend them with "dir ", then go through them in order. However:

No such luck. Try the same, but add an additional backslash at the end this time:

There you go. Now the process of remotely attaching the VHD file in Hyper-V Manager is straightforward:

What still won't work is using the remote tools to browse a path that contains a Volume GUID:

If you want to remotely browse remote volumes, you should clear the path and then click browse:

Once the disk has been attached, you can inspect it, even though it uses a Volume GUID instead of a drive letter:

In conclusion, one more "\" can cometimes be all the difference in the world...

Posted: Thursday, November 27, 2008 10:13 PM by ferminsa

Fermin Sanchez Central : Remote Volume GUIDs driving you crazy?

Ballmer Talks To Students – No Eggs Thrown!


Ballmer Talks To Students – No Eggs Thrown!


In this video from a recent session SteveB had with UK students he talked about nobody ever watching the video afterwards. He also mentioned how the UK audience didn’t hurl eggs :)

It’s actually a pretty good and candid session with Steve – he talks about how primitive computing and meetings are today and how much further we have go to. Take that back, it’s really good and pretty funny where he talks about the future of watching TV with Bill Gates and buying golf balls together. He flips from that to energy research and then goes on a recruiting drive with our UK students :) It’s not often you hear a CEO of an 80,000 person company invite you to send your CV/resume to him!

Love him or hate him, he’s a great speaker as you never know where he’s going to go and he’s always passionate. Oh and he talks about changing the world….which I love of course.

Hats off to MarkJo for putting the day together.

steve clayton: geek in disguise : Ballmer Talks To Students – No Eggs Thrown!

Wednesday, November 26, 2008

Active Directory / Identity Programming Goodness


Active Directory / Identity Programming Goodness

Doug M. recently asked me about this:


There are two areas that I’m interested in learning more about at this time: Active Directory/LDAP and Identity Management. For both, I’d like to get some resources that explain the basics in detail as well as  examples of code in C#.


I am certainly no AD expert so I pinged some internal folks and came across Donovan Follette.  He rocks!  Check out his blog at:

Here was his answer to the question:


Here are links that get to a few of the best whitepapers, articles and resources for programming directory services in .NET.

· Programming with SDS.ActiveDirectory: (sample code download link on blog post)

· Programming with SDS.AccountManagement: (sample code available with article)

· Programming with SDS.Protocols: (sample code download link on blog post)

· Directory Programming .NET (URL for expert insight into AD, AD LDS (formerly ADAM) and AD FS, visit this forum.

· The best book available is A .NET Developer’s Guide to Directory Services Programming by Joe Kaplan and Ryan Dunn.

· Lastly, has a collection of identity-related whitepapers with respect to the future of our identity platform based on the Microsoft code name “Geneva” collection of components announced at PDC.


Yeah baby!!!  Great stuff!

Published Wednesday, November 26, 2008 12:52 PM by zainnab

Is This Thing On? : Active Directory / Identity Programming Goodness

How to Teach Yourself Expression Blend


How to Teach Yourself Expression Blend

So you’re an interactive designer or developer and you have been hearing about Silverlight.  Now you want to teach yourself how to use the design tool for creating Silverlight applications, Expression Blend.  Where do you go? 

We are working to consolidate these into a single resource so you won’t have to hunt around for everything. I taught myself Expression Blend and Expression Design from many of these videos and you can too.  Tell me what you think of them.  What did we miss?  What needs to be improved?

Published Wednesday, November 26, 2008 8:05 AM by Michael S. Scherotter

Synergist : How to Teach Yourself Expression Blend

RDL 2008 Specification


RDL 2008 Specification

Our documentation team made the latest RDL specification available on the Reporting Services site:

The 2008 RDL specification is available as XPS and as PDF document.  Older versions of the RDL specifications (2003/10, 2005/01) are still available here.

Posted: Wednesday, November 26, 2008 6:15 AM by Robert M. Bruckner

Robert Bruckner's Advanced Reporting Services Blog : RDL 2008 Specification

IAG SP2 Goes Virtual


IAG SP2 Goes Virtual

Published 26 November 08 09:54 AM

My name is John Neystadt and I am an Architect with the Intelligent Application Gateway (IAG) product team.

Why have customers come to love hardware-based appliances?

1. Appliances are very easy to deploy –plug in a few network cables, turn on, go through an initial wizard and you’re ready!

2. Appliances are secure – typically pre-hardened and pre-configured to serve a single purpose.

3. Appliances are easy to manage – they are intended for a single purpose, which means fewer configuration errors or unexpected impact from software that doesn't serve the core appliance purpose.

4. Appliances are easy to troubleshoot and support – vendors provide one-stop support for both hardware and software problems.

However with the great strides that virtualization technology has made in the last few years, we now have the ability to bring together the appliance experience with the benefits of virtualization.

To address these issues, we have come up with a solution that combines the best of all worlds – you can either deploy Intelligent Application Gateway as a hardware appliance from one of our experienced OEM partners, OR you can deploy IAG with SP2 as a virtual machine on a server running Windows Server 2008 with the Hyper-V role enabled or on Microsoft Hyper-V Server 2008, Microsoft’s optimized, hypervisor-based virtualization solution.

So what’s new with SP2? First off, the ability to get IAG as a pre-configured virtual machine. In addition, IAG now has a Getting Started Wizard that guides you through all the initial setup steps when booted for the first time. Deploying IAG with SP2 as a virtual machine has many of the combined benefits of software products, virtualization, and hardware appliances:

1. It is pre-configured, so it is very easy to get deploy and get started.

2. It is hardened and secured.

3. It has a single purpose, so it is easy to manage.

4. You can run it on any industry standard server that supports virtualization - and install either the Windows Server 2008 Hyper-V role or Microsoft Hyper-V Server 2008.

5. You can create a dedicated test system and move IAG virtual machines between the test system and the production system, by simply copying an image file.

6. Backup and restore is simple – just periodically copy the virtual machine image from the production system to another location.

7. Disaster recovery is easy – just configure a new server and copy the virtual machine images to it.

8. Server consolidation - If IAG doesn’t utilize your entire server (CPU, Memory, I/O), you can run additional virtual workloads, such as load balancing software, on the same physical server.

SP2 introduces a number of additional features in addition to the ability to being deployed as a pre-configured virtual machine.. Features include interoperability for non-Windows environments with support for Firefox, Linux and Mac, new, optimized, application support for Microsoft Dynamics CRM Web and OCS Web client. There is also support for Windows Integrated Authentication and improvements in Kerberos Constraint Delegation Authentication, simplifying user and administrator experience in data center deployments (these features will be the subject of separate blog posts in the coming weeks).

IAG SP2 will be released in the next few weeks. Please register for TechNet Newsflash to be the first to download the trial bits!

Intelligent Application Gateway Product Team Blog : IAG SP2 Goes Virtual

Windows PowerShell: Build a Better Inventory Tool


Windows PowerShell: Build a Better Inventory Tool

In the previous installment of the Windows PowerShell column (Windows PowerShell: Building Your Own Software Inventory Tool), Don Jones demonstrated a Windows PowerShell-based inventory tool.

Continuing on with that discussion in the December 2008 installment (which is now available online), Don Jones shows you how to make an even better inventorying tool.

And in doing so, he demonstrates a sound process for building your own custom Windows PowerShell functions.

As always, Don has also provided a video demonstration where he steps you through the techniques he discusses in the column.

TechNet Magazine Blog : Windows PowerShell: Build a Better Inventory Tool

Filling up Active Directory (AD) with some test data


Filling up Active Directory (AD) with some test data

I don't recall if I've ever posted a little batch file I use to populate Active Directory (AD) with some test data.  Kevin asked me for it earlier this morning so I thought it might be of benefit to the rest of you for your test labs, VMs, etc.  Here's the code from the batch file.  Be sure to rename the extension to run it as a batch file.  Duh. Grin.

Get it @

Published Wednesday, November 26, 2008 9:44 AM by Keith Combs

Keith Combs' Blahg : Filling up Active Directory (AD) with some test data

Microsoft Business Intelligence Bootcamp Series Promotion


Microsoft Business Intelligence Bootcamp Series Promotion

Attend this upcoming series of live web seminars and find out how you can help organizations quickly, effectively, and economically get access to, analyze, report on, and share the information they need to achieve corporate objectives. In this series you will learn how Microsoft Business Intelligence—a complete, fully integrated set of BI technologies, can help reduce the complexity of organizing and distributing information and lead to competitive advantages, overall better decisions, and an improved bottom line.

Understand the Partner Opportunities related to selling and implementing Microsoft Business Intelligence and how you can position Microsoft BI effectively. Learn how to communicate the benefits and demonstrate the capabilities of the Planning as well as the Monitoring and Analytics components of Microsoft PerformancePoint Server 2007 to key Business Decision Makers.

Posted: Wednesday, November 26, 2008 3:16 PM by John Westworth

JohnR : Microsoft Business Intelligence Bootcamp Series Promotion

Tuesday, November 25, 2008

OCS 2007 R2 readiness and training


OCS 2007 R2 readiness and training

Published 26 November 08 03:54 PM

We have rolled out a series of 6 videos showing the key OCS R2 features and the value those bring to customers. Check them out at TechNet Edge:

· Office Communications Server 2007 R2 and the new Attendant Console

· What’s New in Conferencing with Office Communications Server 2007 R2

· What’s New in Office Communicator, Communicator Web Access, and Devices with Office Communications Server 2007 R2

· Group Chat and Office Communications Server 2007 R2

· What’s New in Mobility and Anywhere Access with Office Communications Server 2007 R2

· What’s New in Administration and Management with Office Communications Server 2007 R2

by jkruse

Johann's Unified Communications : OCS 2007 R2 readiness and training

Select-Object (Note Properties) vs Add-Member (Script Properties)


Microcode: PowerShell Scripting Tricks: Select-Object (Note Properties) vs Add-Member (Script Properties)

As I've said a number of times before, PowerShell's quantum leap forward is something called the Object Pipeline.  It allows you to take the results of one command and easily use them with the next, which means that each command you create becomes a link in a chain rather than an isolated island.

In several posts, I've talked about how to create objects that are property bags as a means to an end (such as when I was Cleaning Up Get-RecordedTV with Select-Object), but I haven't really focused on how to make property bags that much on its own.

There are two basic ways you can create property bags in PowerShell.  The first is by using the Add-Member cmdlet, and the second is by using Select-Object.  As with anything in programming, deciding which way to get a task done involves some trade offs.  Most of the trade off between Select-Object and Add-Member has to do with what type of properties the commands add to objects.  Select-Object will add note properties, which are fine for most purposes and quick to create, but they cannot do anything when the properties are set and cannot create properties that are always up to date.

The following table shows when I tend to use Select-Object versus Add-Member

When your priority is...
You should use...

Adding a few quick properties to an existing object

Adding properties that may be take time to evaluate or need to be up-to-date

Creating a property bag to summarize information from cmdlets

Wrapping an existing object with a friendlier surface area

Adding a single property to an object

The bottom line of choosing which way to make your property bag comes down to speed and convenience.  Because you have to call Add-Member once for every property you wish to add to an object, Add-Member is often slower to use for this purpose than Select-Object.  However, to be fair, Select-Object is kind of ugly and a little inconvenient to write. To prove the speed gain and illustrate the strange syntax of Select-Object, here's two equivalent scripts that both create an object with two properties, Foo and Bar:


    1 | Select-Object @{
}, @{

      New-Object Object |
Add-Member NoteProperty Foo Bar -passThru |
Add-Member NoteProperty Bar Baz -passThru

Obviously, Select-Object is a lot less clean looking than Add-Member.  To determine which is faster, just pack each item into a long loop and run Measure-Command.

Measure-Command {
foreach ($n in (1..1000)) {
1 | Select-Object @{
}, @{

Measure-Command {
foreach ($n in (1..1000)) {
New-Object Object |
Add-Member NoteProperty Foo Bar -passThru |
Add-Member NoteProperty Bar Baz -passThru

On my computer, Select-Object is much faster. It's actually twice as fast over 1000 objects. The more properties you add with Add-Member, the slower it will be.  This concern should really only come into play when dealing with thousands of objects, so if you were adding properties to the output of Get-Process, the difference should be negligible, but if you're adding properties to every single file underneath Windows\System32, you'll probably want to use Select-Object.

Add-Member does have one huge advantage over Select-Object, and that's the type of properties that it can tack on.  Select-Object adds Note Properties, which means that it will evaluate each item as you add it to the object (and never again).  For instance, if I wanted to add a property to a file object that would tell me who currently had the file open, then I would need that property to always be up to date.  In this case, if you had a command that would determine if the file was open (let's call it Test-FileOpen) you could add something like Add-Member ScriptProperty IsOpened { Test-FileOpen $this.Fullname }.

The other thing you can do with a script property that you can't do with a note property is set values.  To do this with a ScriptPropery, you simply give Add-Member two script blocks.  The first is a getter and the second is a setter. In the simple example below, I update the value of Bar through the setter of Foo

$i = New-Object Object |
Add-Member NoteProperty Bar "baz" -passThru |
Add-Member ScriptProperty Foo {$this.Bar} { $this.Bar = $args[0]} -passThru
$i.Foo = "bing"

ScriptProperties are especially useful if you would like to take a surface area that's awkward and make it nicer to use in PowerShell.  In this case, you simply create a new object, attach the original object to it as a note property, and then use Script Properties to talk to the original object.  Sadly, in order to demonstrate the usefulness of that particular capability, I have to walk through a long and complicated API.   Rather than make this post more long and complicated, I'll leave this post as food for thought on where you can use note properties and script properties in your code.

Have fun experimenting, and remember: Select-Object's Speedy, Add-Member's Adaptable.

Hope this helps,

James Brundage [MSFT]

Media And Microcode : Microcode: PowerShell Scripting Tricks: Select-Object (Note Properties) vs Add-Member (Script Properties)

patterns & practices: App Arch Guide 2.0 Knowledge Base


Pocket Guide Index

- J.D. Meier , Alex Homer, David Hill, Jason Taylor , Prashant Bansode , Lonnie Wall, Rob Boucher Jr, Akshay Bogawat.
The Pocket Guides in the Application Architecture Pocket Guide Series are modular, focused guides that provide overviews and prescriptive guidance for a particular topic.
Agile Architecture Method Pocket Guide
The Agile Architecture Method Pocket Guide provides an overview and prescriptive guidance for the Agile Architecture Method.
Agile Architecture Method Pocket Guide.png
Web Application Architecture Pocket Guide
The Web Architecture Pocket Guide provides an overview and prescriptive guidance for designing Web applications on the .NET platform.
Web Architecture Pocket Guide.png
Mobile Architecture Pocket Guide
The Mobile Application Architecture Pocket Guide provides an overview and prescriptive guidance for designing mobile applications on the .NET platform.
Mobile Architecture Pocket Guide.png
RIA Architecture Pocket Guide
The RIA Architecture Pocket Guide provides an overview and prescriptive guidance for designing RIA applications on the .NET platform.
RIA Architecture Pocket Guide.png
Rich Client Architecture Pocket Guide
The Rich Client Architecture Pocket Guide provides an overview and prescriptive guidance for designing rich client applications on the .NET platform.
Rich Client Architecture Pocket Guide.png
Service Architecture Pocket Guide
The Service Architecture Pocket Guide provides an overview and prescriptive guidance for designing services on the .NET platform.
Service Architecture Pocket Guide.png

patterns & practices: App Arch Guide 2.0 Knowledge Base - Home

SQL Server 2008 Upgrade Technical Reference Guide


SQL Server 2008 Upgrade Technical Reference Guide

Just released, and only weighing in at 490 pages.  You didn’t have anything better to do over the Thanksgiving weekend, did you? ;)

Get it here.


Brief Description

This 490-page document covers the essential phases and steps to upgrade existing instances of SQL Server 2000 and 2005 to SQL Server 2008 by using best practices. These include preparation tasks, upgrade tasks, and post-upgrade tasks. It is intended to be a supplement to SQL Server 2008 Books Online.


A successful upgrade to SQL Server 2008 should be smooth and trouble-free. To achieve that smooth transition, you must devote plan sufficiently for the upgrade, and match the complexity of your database application. Otherwise, you risk costly and stressful errors and upgrade problems. Like all IT projects, planning for every contingency and then testing your plan gives you confidence that you will succeed. But if you ignore the planning process, you increase the chances of running into difficulties that can derail and delay your upgrade. This document covers the essential phases and steps involved in upgrading existing SQL Server 2000 and 2005 instances to SQL Server 2008 by using best practices. These include preparation tasks, upgrade tasks, and post-upgrade tasks.

  • Chapter 1 gives an overview of the technical issues and decisions that are involved in an upgrade to SQL Server 2008, as well as recommendations for planning and deploying an upgrade.
  • Chapter 2 addresses issues related to upgrading to SQL Server 2008 Management Tools.
  • Chapters 3 through 8 focus on upgrade issues for SQL Server relational databases.
  • Chapter 9 addresses upgrading to SQL Server 2008 Express.
  • Chapters 10 through 14 focus on upgrading to SQL Server 2008 Business Intelligence components: Analysis Services, Data Mining, Integration Services, and Reporting Services.
  • Chapter 15 addresses the implications of upgrading to SQL Server 2008 for other Microsoft applications and platforms.
  • Appendix 1 contains a table of allowed SQL Server 2008 version and edition upgrade paths.
  • Appendix 2 contains an upgrade planning checklist.

Published Wednesday, November 26, 2008 1:21 AM by smearp

The Sean Blog : SQL Server 2008 Upgrade Technical Reference Guide

Monday, November 24, 2008

The Domain Controller Dilemma


The Domain Controller Dilemma

Often I have people ask me about the Domain Controller dilemma.  The basic problem is this: if you decide to virtualize all of your servers, how do you handle the domain controllers which control the domain used by your Hyper-V servers?  There are a couple of options that you can consider here:

  1. Keep the root domain controller on physical hardware

    By keeping the root domain controller on separate physical hardware you can avoid any potential for problems.  However you also miss out on the benefits of virtualization for your domain controller (better hardware utilization, hardware mobility, easier backup, etc...).
  2. Keep the Hyper-V servers out of the domain
    In small deployments you can consider just leaving the Hyper-V servers as part of a workgroup and then running all domain controllers inside virtual machines.  This approach has two problems.  First, you lose the security advantages of running in a domain environment and second, it is hard to have multiple administrators in such an environment (as local user accounts need to be created on each Hyper-V server).  Also, you cannot use all the functionality of SCVMM in such an environment.
  3. Establish a separate (physical) domain for Hyper-V servers
    This approach is a compromise between the first two approaches.  Here you virtualize your primary domain controller environment, but setup a secondary (smaller) domain environment for your Hyper-V servers using a physical server.  The advantage to this approach is that you get all the benefits of having your Hyper-V servers in a domain - but your primary domain environment benefits from being virtualized.  The problem with this approach is that you still have an underutilized server sitting around in your server room / data center.
  4. Run the domain controller on top of Hyper-V anyway
    The last option is to just stick the domain controllers in virtual machines and then join the parent Hyper-V environment to the domain in question.  Now, while this sounds like a problematic environment it can be done with some careful planning.  Here are the following steps to take / things to consider:
    1. You should configure the domain controller virtual machines to always start when the parent starts - whether they were running before or not (this is configurable in the virtual machine settings).
    2. If you have other virtual machines configured to start automatically you may want to configure them to have a delayed start time (say by a minute or two) to allow the domain controllers to start up quickly.
    3. You should configure the domain controller virtual machines to shutdown (and not save state) if the physical computer is shutdown.
    4. You should ensure that you have a way of managing the Hyper-V environment if the domain controller fails to start.  This means keeping note of the local administrator account / password and testing that you can use it (either locally or remotely) to access the Hyper-V management console.

So there you have it.  I actually use option 4 for the (albeit small) domain environment that I run in my house and have had no issues.  A couple of extra points to make here:

  • Points 1-3 of option 4 should apply to *any* time that you virtualize a domain controller - even if it is not being used by the parent partition in question.
  • You should never use saved state / snapshots with domain controllers - as this can be catastrophic.


Published Monday, November 24, 2008 5:19 PM by Virtual PC Guy

Virtual PC Guy's WebLog : The Domain Controller Dilemma

SharePoint development in Visual Studio 10


SharePoint development in Visual Studio 10

Published 24 November 08 11:31 AM

Are you interested in SharePoint development and you're wondering what tools for supporting SharePoint development are coming in Visual Studio 10? Head over to Channel9 to view the video and get a sneak-peak.

Visual Studio SharePoint Tools Blog : SharePoint development in Visual Studio 10

Rich Client Application Architecture Pocket Guide


Rich Client Application Architecture Pocket Guide

Rich Client Architecture Pocket Guide

We posted our Rich Client Application Architecture Pocket Guide to our Application Architecture Guidance KB.  This is in response to customers who expressed interest in more modular guides as a supplement to our Application Architecture Guide 2.0.

Chapters At a Glance
Here’s the chapters at a glance:

  • Ch 01 - Rich Client Application Architecture
  • Ch 02 - Architecture and Design Guidelines
  • Ch 03 - Presentation Layer Guidelines
  • Ch 04 - Business Layer Guidelines
  • Ch 05 - Data Access Layer Guidelines
  • Ch 06 - Service Layer Guidelines
  • Ch 07 - Communication Guidelines
  • Ch 08 - Deployment Patterns


My Related Posts

Published 24 November 08 11:26 by J.D. Meier

J.D. Meier's Blog : Rich Client Application Architecture Pocket Guide

Join me December 3rd on BenkoTips Live and on Demand


Join me December 3rd on BenkoTips Live and on Demand

I’ll be co-hosting an episode of BenkoTips: Live and on Demand on VSTO Applications with MSDN Developer Evangelist Mike Benkovich December 3rd.  Here’s the details, hope you can join us:

Dec 3 - VSTO Applications with John Wiese
Why start from scratch when you can stand on the shoulders of giants? Since the introduction of Visual Studio Tools for the Microsoft Office System (VSTO) developers are able to extend and expand the functionality of the most popular computer applications to build functionality their users need. In this presentation, we'll focus on the power and productivity of (VSTO) - a .NET Smart Client technology – to build an outlook add-in. We'll give you tips and tricks for designing and building smart client applications with VSTO, which allows you to create managed code applications with .NET languages including Microsoft Visual Basic .NET and Visual C#.  VSTO addresses some of the biggest challenges that Office solution developers are facing today, including separation of data and view elements, server-side and offline scenarios, seamless integration with the Visual Studio tools, deployment and updating. Join us for this eye-opening session and learn just how easy it is to build and deploy powerful applications with VSTO.

To register for the session just click the title, or click here.

US ISV Developer Evangelism Team : Join me December 3rd on BenkoTips Live and on Demand

The World Simplified is a Virtual World : PFE Hyper-V Ops Day – October


PFE Hyper-V Ops Day – October

We ran a Hyper-V day at the end of October, and collated a series of useful links and best practice guidance. Well here we go:


Informal Hyper-V Architecture Disucssions

Guest Operating System Support

Disk Performance

Configuring Virtual Networks

Backing up Hyper-V

Server Core

Server Core Blog

Install This Update

Install This Update

Hyper-v installed image parts:

Step By Step

Online at

Download in Word Document in the Download Center

Performance + High Availability

Performance Tuning Guidelines for Server 2008

Compare Windows 2008 Specs

Integration Components

Hardware Requirements for a Failover Cluster

Understanding Quorum Configurations in Failover Cluster

Validating a Failover Cluster Configuration

Hyper-V Step-by-Step Guide: Hyper-V and Failover Clustering

Server Core Configurator

Server Core Commands

Install Increased Functionality Update

Install Hotfixes Listed Here

Managing Hyper-V in the Enterprise

PowerShell Management Library for Hyper-V

Benp PowerShell Blog


Deployment and Migrating to Hyper-V

VMC to Hyper-V Tool

Virtual to Virtual Migration


Converting Physical Machines to Virtual Machines

MAP Toolkit

Posted: Monday, November 24, 2008 9:49 PM by Justin Zarb

The World Simplified is a Virtual World : PFE Hyper-V Ops Day – October

LINQ Reference Documentation


LINQ Reference Documentation

The LINQ documentation created by Microsoft is available both inside Visual Studio, and for free via the MSDN library found on the WEB. Here are some important pages from that documentation that can help you navigate through the online reference material that Microsoft has prepared for LINQ developers:

· The Root MSDN Library Page:

· .NET Development:

· .NET Framework 3.5:

· System.Linq:

· System.Data.Linq:

· System.Xml.Linq:

· Code Generation:

· More on Joins:

· For more information on the operators, see the section of the online help called “The .NET Standard Query Operators.” It is written by Anders Hejlsberg and Mads Torgersen. The URL is

I would not suggest using these references materials as a primary means of learning LINQ. However, if you have a book or other guide to LINQ development, then this reference material can be a useful addendum to that text. If you understand in a general way how LINQ works, but need answers to detailed questions, the links provided here may sometimes help you find answers.

Published Sunday, November 23, 2008 10:33 PM by Charlie Calvert

Charlie Calvert's Community Blog : LINQ Reference Documentation

Did you know… You can customize how search results are displayed in the Find Results window? - #363


Did you know… You can customize how search results are displayed in the Find Results window? - #363

Argh! I wish I had found this one in time for the book. A second edition, maybe? I’d hate to be known as a one-hit wonder. I’m sure there are more people who could use scholarship money.

Ever did a Find in Files and was annoyed that Visual Studio showed the entire file path, forcing you to scroll over just to see the name of the file and the search result?

Find Results 1 before registry change

Here’s what you can do, among some other tweaks. Note: These involve modifying registry settings. Please use at your own risk! Also Note:  You don’t have to restart Visual Studio to pick up on your registry changes. Sweet!!!

  1. Go to HKCU\Software\Microsoft\VisualStudio\9.0\Find
  2. Add a new string called Find result format with a value of $f$e($l,$c):$t\r\n where

$f is the filename

$e is the extension

$l is the line

$c is the column

$t is the text on the line

Now let’s take a look at that Find Results window again:

Find Results 1 after registry change

And here’s the full list of items you can specify in the registry


$p      path                       

$f      filename               

$v      drive/unc share            

$d      dir                        

$n      name                       

$e      .ext    


$l      line                       

$c      col                        

$x      end col if on first line, else end of first line

$L      span end line

$C      span end col


$0      matched text               

$t      text of first line

$s      summary of hit

$T      text of spanned lines


\n      newline                   

\s      space                     

\t      tab                       

\\      slash                    

\$      $                         

If you come up with a great combination of values, please leave a comment and share with the group!

Posted: Monday, November 24, 2008 3:00 AM by saraford

Sara Ford's WebLog : Did you know… You can customize how search results are displayed in the Find Results window? - #363

Windows SharePoint Services 3.0 Software Development Kit (SDK)


Windows SharePoint Services 3.0 Software Development Kit (SDK)

During our recent events, there has been a great deal of interest in Windows SharePoint Services 3.0, especially when many of you learn that it is a part of your Windows Server 2003 license. If you are interested in implementing WSS, but have concerns about the work that will be needed to customize WSS programmatically in order to meet your organizations needs, then take a look at the Software Development Kit (SDK) that is available for download.

The Windows SharePoint Services 3.0 SDK contains conceptual overviews, programming tasks, and references to guide you in developing solutions that are based on Windows SharePoint Services as a platform. The SDK includes information about the following:

  • Web Part Framework
  • Server-Side Object Model
  • Web Services
  • Collaborative Application Markup Language (CAML)
  • Master Pages
  • Workflows
  • Custom Field Types
  • Information Rights Management (IRM)
  • Document Property Promotion and Demotion
  • Search and Query

Check out the download here

These development tools may help you to leverage what you already own, and save your organization money.

Happy Thanksgiving!


Published Monday, November 24, 2008 2:05 PM by MMEvents

MidMarket Events : Windows SharePoint Services 3.0 Software Development Kit (SDK)

IT Manager Connections: Build Business and Careers on the Microsoft Platform


IT Manager Connections: Build Business and Careers on the Microsoft Platform > Overview

Tune in to these webcasts and podcasts, as industry and Microsoft experts share insights, frameworks, and proven best practices that address many of the challenges IT managers face. Discover how you can apply the Infrastructure Optimization Model to assess your current IT state and to plan, build, and administer a secure, well-managed IT environment.


Join Microsoft for a thought-provoking series designed to help you with prioritizing investments and developing strategies to optimize your application platform’s contribution to innovation and growth. The 22-part series addresses areas including Application Lifecycle Management, Business Intelligence, Data Management, SOA, and Business Process and User Experience.


Stream or download these audio podcasts for IT managers on to your favorite podcast software or mobile device. These podcasts are free and do not require registration—just click, listen, and learn.

IT Manager Connections: Build Business and Careers on the Microsoft Platform

What is new for protecting SharePoint with DPM 2007 SP1 -- TechNet EDGE Video


What is new for protecting SharePoint with DPM 2007 SP1 -- TechNet EDGE Video


System Center Data Protection Manager 2007

Service Pack 1 for DPM 2007 is coming -- and it is coming soon (December)...

I just finished recording the 2nd in a video series on the new features for DPM 2007 Service Pack 1.

The first installment aired two weeks ago - during IT FORUM in Barcelona, as an overview of the features in SP1

This installment (live today) is on the specifics of SharePoint protection enhancements within SP1 for DPM 2007.

Take a look at the overview video:

Hopefully, you are as excited as we are that SP1 is almost here

And please let me know which feature you'd like a deep dive on next ...

As always, thanks for reading...

Published Monday, November 24, 2008 3:33 AM by JasonBuffington

All Backed Up : What is new for protecting SharePoint with DPM 2007 SP1 -- TechNet EDGE Video

Sunday, November 23, 2008

Windows Firestarter event coming up at the Microsoft Campus....


Windows Firestarter event coming up at the Microsoft Campus....

On December the 12th (Friday) we are going to have a Windows FireStarter event at the Microsoft Conference Center. If you are a Developer or an IT Pro you’d definitely not want to miss this event.

Just like all other FireStarter Events, we will be recording and making the entire content available for download post event. All the sessions in this event are presented to you by some Excellent Microsoft Speakers who are Subject Matter Experts.

Take a look at the agenda below:

Session Name


8:15 – 8:30         Kick off

Mithun Dhar

8:30 – 9:30         Keynote/Why Vista!

Chris Henley

9:30 – 10:45       The Case of the Unexplained

Mark Russinovich

10:45 – 11:00   Break

11:00 – 12:15     Building Differentiated UI Applications Using Composite WPF

Glenn Block, Bob Brumfield & David Hill

12:15 – 1:00     Lunch

1:00 – 2:00         Best Practices for Developing for Windows for Windows Standard User

Crispin Cowan

2:00 – 3:00         Windows Security and Bitlocker

Byron Hynes

3:00 – 3:15        Break

3:15 – 4:00          (Windows 7 + Windows Server 2008 R2) Teaser Session

Byron Hynes

4:00 – 5:00          Windows for everyone!


If you cannot attend in person, fret not, we have you covered! The entire event will be simulcasted on the web. Just register below for the Live Meeting version and you’ll find all the details. This should be a fantastic, fun filled day! We look forward to seeing you at the event…

What: Windows FireStarter

Where: Microsoft Conference Center

When: December 12th 2008 (Friday)

Register for the In Person Event:

Register for the Live Meeting version:

If you have any questions, Contact: Mithun Dhar


Published Sunday, November 23, 2008 5:37 AM by chrisavis

chris e. avis - blogstrocity : Windows Firestarter event coming up at the Microsoft Campus....

Friday, November 21, 2008

PASS 2008 Conference - Day Five


PASS 2008 Conference - Day Five

Published 21 November 08 05:01 PM | Buck Woody

Today was the final day of the conference, but I had a packed house for our discussion on PowerShell and SQL Server. I wanted to blog about one concept I covered in the demo: Why would I use PowerShell when I have SSIS, stored procs, batch files and other mechanisms?

I submit the following reasons:

  • PowerShell is a shell, so you get immediate feedback
  • PowerShell is kind of a language, so you can work in batches later if you want (writing scripts)
  • PowerShell makes working with HTML output easy
  • PowerShell makes working with XML easy
  • PowerShell makes working with WMI easy
  • PowerShell can talk to Windows things
  • PowerShell can talk to Exchange things
  • PowerShell can talk to SharePoint things
  • PowerShell can talk to .NET things (it uses .NET as well)
  • PowerShell can talk to (insert Microsoft technology here) things
  • PowerShell is fairly easy to learn
  • PowerShell scripts are fairly easy to read
  • PowerShell can look like Unix/Perl/DOS/whatever

OK - go off and try it. It isn't hard, it works well, and it makes your work easer.  By the way, the materials weren't at PASS, so I'll share them here.

Carpe Datum : PASS 2008 Conference - Day Five

XAML Power Toys « Karl On WPF - .Net


XAML Power Toys

Current Version, Last Update 29 October 2008

Table Of Contents


XAML Power Toys is a Visual Studio 2008 SP1 Multi-AppDomain Add-In that empowers WPF & Silverlight developers while working in the XAML editor.  Its Line of Business form generation tools, Grid tools,  DataGrid and ListView generation really shorten the XAML page layout time.

It’s accessed through commands in the XAML editor context menu and the Solution Explorer item context menu.

XAML Power Toys generates .NET 3.5 SP1 WPF compliant XAML and Silverlight 2 compliant XAML.

This version of XAML Power Toys is compatible with Silverlight 2.0 RTM.


  • Visual Studio 2008 with SP1
  • For Silverlight Development, install the latest Silverlight 2 as detailed on Scott Guthrie’s blog. (If you’re not doing Silverlight development this is not required.)
  • Windows XP, Vista, Server 2003 or Server 2008


The primary goal of XAML Power Toys is to deliver tools that enable developers to quickly layout and maintain Line of Business Application forms using the UI controls that ship with Visual Studio.

You’ll notice that the below features are business form focused.  This does not limit the use of the software, I’m just providing the current target project type.

XAML Power Toys « Karl On WPF - .Net

Blog Archive