Chef with PowerShell DSC Now Public!

Many of you have seen the demos done by our friends at Chef, which show how they planned to leverage PowerShell DSC.

Those plans are now public as of the publishing of the PowerShell DSC Cookbook for Chef announced in the recent blog post by Adam Edwards.

Check it out here:

The Chef team has been working hard to get this together, and it’s great to see this going live!


- The PowerShell Team

What MGX Felt Like, in Pictures

Last week I went to Microsoft Global Exchange! [Microsoft Confidential information left out, of course.]

  • MGX is an annual conference for Microsoft employees from all around the world.
    • I connected with my peers… (Photo below: I’m the ginger)

    • Learned that being a Microsoft Academy College Hire (MACH) is awesome

    • Learned to understand more about Microsoft’s business strategy


    • Engaged and asked questions

    • Built a hands-on project with a team of other MACHs, practiced teamwork, and wept like Oprah when it was announced that not only were the projects actually going to be donated to people in need, but then those people WALKED IN THE ROOM. 

    • Went to parties.

    • And more parties.


Building a Release Pipeline with TFS 2012 now includes HOLs for TFS 2013

We are pleased to announce that the Building a Release Pipeline with Team Foundation Server 2012 hands-on labs now support both TFS 2012 and 2013.

what’s next?

There are currently no plans to further enhance the book, hands-on labs or sample application. Our focus will be shifted to other DevOps initiatives, such as Config as Code.

please send candid feedback!

We can’t wait to hear from you, and learn more about your experience using the add-in. Here are some ways to connect with us:

  • Add a comment below.
  • Ask a question on the respective CodePlex discussion forum.
  • Contact me on my blog.

New book: Exam Ref 70-414 Implementing an Advanced Server Infrastructure

Exam Ref 70-414We’re pleased to announce the availability of Exam Ref 70-414 Implementing an Advanced Server Infrastructure (9780735674073), by Steve Suehring.

Purchase from these online retailers:

Microsoft Press Store

Barnes & Noble

Prepare for Microsoft Exam 70-414—and help demonstrate your real-world mastery of implementing an advanced server infrastructure in Windows Server 2012 R2. Designed for experienced IT professionals ready to advance their status, Exam Ref focuses on the critical-thinking and decision-making acumen needed for success at the MCSE level.

Focus on the expertise measured by these objectives:

· Manage and maintain a server infrastructure

· Plan and implement a highly available enterprise infrastructure

· Plan and implement a server virtualization infrastructure

· Design and implement identity and access solutions

This Microsoft Exam Ref:

· Organizes its coverage by exam objectives

· Features strategic, what-if scenarios to challenge you

· Assumes you have experience planning, configuring, and managing Windows Server 2012 R2 services, such as identity and access, high availability, and server infrastructure

About the Author:
Steve Suehring is a technical architect and writer with extensive experience in system administration, networking, computer security, and software development.

Debugging Shaders in Visual Studio with Graphics Debugger and not with PIX


The latest tool for debugging shaders now ships as a feature in Microsoft Visual Studio, called Visual Studio Graphics Debugger.

This new tool is a replacement for the PIX for Windows tool. Visual Studio Graphics Debugger has greatly improved usability, support for Windows 8 and Direct3D 11.1, and integration with traditional Visual Studio features such as call stacks and debugging windows for HLSL debugging.

For more info about this new feature, see Debugging DirectX Graphics.

Top 10 Microsoft Developer Links for Tuesday, July 29, 2014

  1. Visual Studio Blog: Visual Studio Tools for Unity 1.9
  2. Cecil Dijoux: Seven Changes to Remove Waste From Your Software Development Process
  3. Martin Hinshelwood: Maven release perform tries to do a Get to a workspace sub folder in TFS
  4. Esteban Garcia: To the cloud with Azure!
  5. Milan Gada: Auditing Media Assets Lifecycle – Part 1
  6. Gaurava K Arya: Line numbers in Visual Studio not shown?
  7. Ricci Gian Maria: Your TFS keeps asking you for credentials even with Active Directory
  8. Channel 9: Building a MultiDictionary Collection for .NET
  9. Practical .NET: The Last Step in UI Design: Scripting Interaction
  10. Gary Keong: Azure Automation: Integrating Runbook Source Control using Visual Studio Online


New exam provider announced

Pearson VUE has been added as a new exam delivery provider for Microsoft Certification exams. Starting September 4, 2014, candidates may choose from both Prometric or Pearson VUE to complete their Microsoft Certification Professional (MCP) and Microsoft Technology Associate (MTA) exams. Microsoft Office Specialist (MOS) and academic MTA exams will continue to be delivered through Certiport.

As announced at the Worldwide Partner Conference, Microsoft is consolidating all exam delivery provider services with Pearson VUE and Certiport, a division of Pearson VUE, effective January 1, 2015. This will enable Microsoft to provide a more seamless customer experience through the Microsoft Certification exam testing process.

Some Frequently Asked Questions (FAQ)

When do the changes take effect?

  • Starting on September 4, 2014, you may choose from Prometric or Pearson VUE

  • On January 1, 2015, all exams will be provided by Pearson VUE only

Which exams are affected?

MCP and MTA exams

Why are you making the change?

In order to provide a more seamless customer experience, Microsoft is consolidating all exam delivery provider services with Pearson VUE and Certiport, a division of Pearson VUE, effective January 1, 2015.

Where can I find Pearson VUE online?

Azure – Why you gotta be so MEAN? (with apologies to Taylor Swift)

Having some social with Tampa Bay WAVE based startup guy EricN at a fine local establishment in Tampa the other night. We were discussing the MEAN stack he’s been using on his project via (argh) AWS Virtual Machines.

MEAN led to a discussion of Windows Azure and its inherent but understated support of the MEAN stack across the board. But I really didn’t have a quick set of resources available with bootstrapping, development, and scaling info. For posterity and SEO, below is an exerpt of my favorite learning, deployment and scaling resources for MEAN on Windows Azure.

First, What is MEAN? Valerbi Karpos of MongoDB’s post on MEAN here defining the stack.  I believe he’s credited with being the originator of the phrase – . Basically MEAN is a pure JavaScript stack conglomeration for full spectrum development.  Components areof MongoDB, ExpressJS (sometimes BackboneJS), AngularJS, and Node.Js. M-E-A-N. Valerbi does a good job of spelling out some of the synergies present. 

So here’s my favorite links in each of the MEAN categories.  Enjoy.  Got extras talking about Azure + MEAN?  Post them in the comments and lets build the article base.


(really part of Node.js – see node.js below)




Azure – Why you gotta be so MEAN? with apologies to Taylor Swift

Logging in CMTrace format from PowerShell

I know there are other examples of doing this out there but the one I use has a few other features including:

  • Getting the PID of the PowerShell instance running and putting that in the Thread column
  • Renaming the file to lo_ once it gets too large
  • Setting a variable to the status of the script based on the logging (used to display whether the script had an error or not)
  • Logging to the current directory the script exists in
  • Verbose Logging as an option

Here is the code:

function LogIt { param ( [Parameter(Mandatory=$true)] $message, [Parameter(Mandatory=$true)] $component, [Parameter(Mandatory=$true)] $type ) switch ($type) { 1 { $type = "Info" } 2 { $type = "Warning" } 3 { $type = "Error" } 4 { $type = "Verbose" } } if (($type -eq "Verbose") -and ($Global:Verbose)) { $toLog = "{0} `$$<{1}><{2} {3}><thread={4}>" -f ($type + ":" + $message), ($Global:ScriptName + ":" + $component), (Get-Date -Format "MM-dd-yyyy"), (Get-Date -Format "HH:mm:ss.ffffff"), $pid $toLog | Out-File -Append -Encoding UTF8 -FilePath ("filesystem::{0}" -f $Global:LogFile) Write-Host $message } elseif ($type -ne "Verbose") { $toLog = "{0} `$$<{1}><{2} {3}><thread={4}>" -f ($type + ":" + $message), ($Global:ScriptName + ":" + $component), (Get-Date -Format "MM-dd-yyyy"), (Get-Date -Format "HH:mm:ss.ffffff"), $pid $toLog | Out-File -Append -Encoding UTF8 -FilePath ("filesystem::{0}" -f $Global:LogFile) Write-Host $message } if (($type -eq 'Warning') -and ($Global:ScriptStatus -ne 'Error')) { $Global:ScriptStatus = $type } if ($type -eq 'Error') { $Global:ScriptStatus = $type } if ((Get-Item $Global:LogFile).Length/1KB -gt $Global:MaxLogSizeInKB) { $log = $Global:LogFile Remove-Item ($log.Replace(".log", ".lo_")) Rename-Item $Global:LogFile ($log.Replace(".log", ".lo_")) -Force } } function GetScriptDirectory { $invocation = (Get-Variable MyInvocation -Scope 1).Value Split-Path $invocation.MyCommand.Path } $VerboseLogging = "true" [bool]$Global:Verbose = [System.Convert]::ToBoolean($VerboseLogging) $Global:LogFile = Join-Path (GetScriptDirectory) 'LogIt.log' $Global:MaxLogSizeInKB = 10240 $Global:ScriptName = 'LogIt.ps1' $Global:ScriptStatus = 'Success' LogIt -message ("Starting Logging Example Script") -component "Main()" -type 1 LogIt -message ("Log Warning") -component "Main()" -type 2 LogIt -message ("Log Error") -component "Main()" -type 3 LogIt -message ("Log Verbose") -component "Main()" -type 4 LogIt -message ("Script Status: " + $Global:ScriptStatus) -component "Main()" -type 1 LogIt -message ("Stopping Logging Example Script") -component "Main()" -type 1


CMTrace Output (Download CMTrace.exe here.)