Tag Archives: Microsoft

Episode 266 – PowerScripting Podcast – Matt Wrock from Microsoft on BoxStarter

A Podcast about Windows PowerShell. Listen:

In This Episode

Tonight on the PowerScripting Podcast, we talk to Matt Wrock about BoxStarter



Guest – Matt Wrock



Chatroom Highlights:

[22:43:30] <Jaykul> FWIW, my 2c: I think a “moderated” feed (where you just trust the core chocolatey team to review packages, instead of trusting all the authors) is the answer to “trust” — the idea being the core team says that yes, this module just downloads and installs “the real product” that it claims to.

<Jaykul> ## Have you heard rumors that chocolatey may move away from nuget?

<Jaykul> ## Are you involved in the chocolatey community at all?

<Jaykul> ## Are you (un)happy/neutral that Chocolatey has moved their lib/install folders to C:\ProgramData

<Jaykul> ## Are you (un)happy/neutral about the idea of expecting users to be “elevated” when running cinst?

<Jaykul> ## Does that mean boxstarter only works on machines that have access to the public internet?  <– I know it does, just want to bring it up

<Jaykul> ## What do you think about a “Moderated” feed like NuGet has for Microsoft

<Jaykul> ## Isn’t virus scanning the package mostly useless, since the package is just a script that downloads from the web? Would you guarantee that the install.ps1 can’t download anything without scanning it?

<Dave_Wyatt> ## Assuming that malicious code does make it into Chocolatey, what’s the response?  API keys revoked, packages taken offline, etc?  How fast would that happen?

<JonWalz> http://boxstarter.org/

<JonWalz> if you use LastPass check out this tool http://blog.lastpass.com/2014/04/lastpass-now-checks-if-your-sites-are.html

<halr9000> http://www.atlantaallergy.com/pollenCount.aspx

<halr9000> http://www.nwasthma.com/pollen/pollen-count

<halr9000> http://boxstarter.org/

<halr9000> http://runasradio.com/?nomobile=1&ShowNum=355

<halr9000> http://chocolatey.org/

<JonWalz> http://npe.codeplex.com/

<halr9000> Downloading SublimeText3 64 bit (http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%20Build%203059%20×64%20Setup.exe

<JonWalz> http://www.myget.org/

<Jaykul> halr9000: http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%202.0.2%20×64%20Setup.exe <– that’s the “official” download link.

<JonWalz> http://inedo.com/proget/overview

<Jaykul> Sorry, yeah, http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%20Build%203059%20×64%20Setup.exe my point is that your url was the official one

<halr9000> http://boxstarter.org/WebLauncher

<Jaykul> http://www.boxstarter.org/VMIntegration

<halr9000> e.g. http://boxstarter.org/package/nr/firefox

<halr9000> http://boxstarter.org/package/nr/rickroll

<mwrock_> http://boxstarter.org/WebLauncher has links to the firefox and chrome click once extensions at the end of the page

<Jaykul> http://boxstarter.org/package/astley

The Question -

  • Superhero – Professor Time

Tonight, Nana from the PowerShell team talks DSC and more!

Tonight, we’re pleased to have Narayanan (Nana) Lakshmanan, Senior Development Lead from the PowerShell team at Microsoft on the show! One of our big areas to cover is going to be DSC, and what Microsoft has been doing with the out-of-band releases of DSC resources with the DSC Resource Kit, which is now up to 50 resources!

The DSC Conversation Continues

Some lovely conversation on DSC over on Reddit… with some I wanted to perhaps offer an opinion on. From what I’ve seen, these are very common sentiments, and they definitely deserve… not argument or disagreement, but perhaps an alternate viewpoint. I’m not suggesting the commenters are wrong – but that maybe they’re not considering the entire picture.

Certainly if you work with a superset of MS OSs (i.e. you do Linux also), then Puppet or something like it seems like a no brainer. In fact, that is what we’re doing now. Puppet has powershell modules you can install for instance. Personally, I still feel like Powershell is overrated except for small snippets of that’s how something is exposed. Puppet can run powershell commands. AutoIT can run powershell commands… I just don’t see value in Powershell today.

The point is that, until PowerShell, there were no PowerShell commands. Microsoft was incredibly inconsistent about providing automation-friendly commands of any kind. They could have gone down the path of building command-line tools for Cmd.exe; they didn’t. The point of PowerShell is that Microsoft forced themselves to build commands. Now, if you run those from AutoIt, or Puppet, or whatever else – that’s cool. PowerShell is an API, not a tool. Whatever tool you use to access that API is just dandy. Without the API, the tools are useless.

As to DSC – I’m really confused. Why is this separate from Group Policy again? Why is it better? Or is MS giving up on Group Policy as needing a total re-write?

The advantage of Group Policy over DSC, today, is that GP has richer ability to target computers based on OU membership, WMI criteria, etc. Today, DSC targeting isn’t that flexible. On the other hand, GP is extremely difficult to extend, since client extensions are native code. GP was built to manage the registry, although it’s been extended to do more. DSC is built to do whatever PowerShell (and, via CIM, native code) can touch. My opinion? Yeah, DSC will obviate GP over time. Not instantly.

Specifically, as I’ve been rolling out Puppet across Windows and Linux, I see that in some ways, it brings the computer GPO aspect to Linux, and duplicates it a bit on Windows.
Anyway, I won’t be surprised to see someone start writing DSC modules in Puppet, because you’ll want your config management to work across your platforms. And MS is kind of late to the game here – many many people have lots of knowledge already in Puppet, Chef etc…

The guys on the PowerShell team love Chef and Puppet. I think you’re confusing “api” and “tool.” There are two pieces to DSC: Piece one is the ability of PowerShell to read a configuration script and produce a MOF. Piece two is the ability of a Windows computer to receive that MOF and reconfigure itself accordingly. Any tool can do piece one. Use Puppet to produce the MOF. Use Puppet to control which MOFs get sent where. That’s the intent. But Microsoft takes a big burden off the Puppet developers by having Windows know what to do with the MOF. Yeah, MS is late to the game. No question. But they’re joining the game, not reinventing it. What they’re doing works with what everyone else is already doing.

I would personally carry the sentiment even further and say that investing the bulk of your effort in DSC over something like Puppet would be needlessly tying your own hands. Why focus on something that’s platform specific when there is a good cross-platform alternative. Don’t put all your eggs in one basket as it were.

Wrong. It isn’t an either-or thing. DSC’s introduction at TechEd 2013 included a demo of Puppet (or was it Chef?) being used to send configurations to Windows – much more easily, because with DSC, Windows natively knew what to do with them. If you’ve got tooling like Puppet, use it. DSC is just making Windows work better with it. The whole point of DSC is that it plays the cross-platform game everyone else has already been playing. 

Purely on the Windows side, the need to focus on DSC is more about developing the DSC resources you need, so that you can send a MOF (from Puppet, say) to a Windows computer, and that Windows computer will know how to configure everything you need configured. Microsoft will continue to produce resources for core OS and server application stuff; any LOB stuff is what you’d be focusing on.

Heck, even in a pure-Windows environment, with cross-platform off the table, Puppet provides tooling that DSC does not. You’re going to need those tools, whether it’s Puppet, some future System Center thing, or whatever. DSC is a mid-level API, not a tool.

Configuration managment does seem to be the future — I just don’t agree completely with the author’s point of a view that it will have to be DSC.

On Windows, DSC will be the underlying API that your configuration management tool talks to. DSC isn’t a configuration management tool. DSC bridges the gap between a text-based MOF and the bajillion proprietary protocols MS uses internally in their products. Remember, on Linux, it’s easier – everything already lives in a text file of some kind, right (oversimplifying, I know, but still)? In Windows, config information lives everyplace; DSC’s main job is to bridge the gap. DSC doesn’t provide management of what configuration goes where; it just provides the implementation mechanism. In PowerShell, there’s a primitive ability to write configurations, because MS has to give you something, but yeah… I think most organizations would benefit from good tooling atop that.

I think this entire discussion is why more people need to start learning (not necessarily using) DSC if you have Windows in your environment. Find out what it is, what it isn’t, and how it’ll play into the other efforts you’ve got underway. There’s a ton of misconception about what it is and where it’s meant to fit in. When I say, “if you’re not learning DSC, you’re screwed,” I don’t mean, “if you’re not using DSC.” I mean learning. Because if you’re not learning it, you’re going to be subject to the same misconceptions about it. You end up spending a lot of time reinventing what it’s willing to do – and what it’s willing to do in conjunction with your existing tools.



Free eBook from Microsoft’s Scripting Guy: Windows PowerShell Networking Guide

Ed Wilson, Microsoft’s Scripting Guy, has created a free ebook, Windows PowerShell Networking Guide. It’s designed to provide a super-quick PowerShell crash course, and then show you how to  manage various networking scenarios by using the shell.

And it’s free! Just click the link to get your copy – and please, tell a friend!


Up Next: Jim Britt from Microsoft talks about SMA

Thursday Feb 6 is our next podcast, joining us is Jim Britt (@jimbrittphotos) from Microsoft talking about SMA. What is SMA you might ask (or at least I asked) Service Management
Automation is the answer.  Here is another page you might want to look at as well.


Hope to see you in the chatroom at 9:30PM EST.

Episode 256 – PowerScripting Podcast – Ed Wilson (The Scripting Guy) from Microsoft

A Podcast about Windows PowerShell.

In This Episode

Tonight on the PowerScripting Podcast, we talk to Ed Wilson (The Scripting Guy) from Microsoft


Guest – Ed Wilson, The Scripting Guy


Chatroom Highlights:

<MattHitchcock> ## At some point during the show can Ed made a reference to the EAC (Exchange Admin Center)? He sounds uncannily like the Turtle in Finding Nemo :)

<Dave_Wyatt> ## Bring on the nostalgia!  http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.strings(v=vs.110).aspx

<Dave_Wyatt> ## (or the horror)

<Vern_Anderson> ## throw the gang sign Ed!!!!

<organicit> ## Would people come to Napa if Sapian hosted a powershell saturday?

<ScriptingWife> ##Jon Up Next Dave Wyatt

<geekjimmy> ## real-world usage question for Ed…

<geekjimmy> ## do you use aliases in scripts you write for yourself?

<geekjimmy> ## are there any major caveats to using DSC and/or v4.0 in general on down-level OS versions?

<geekjimmy> ## I ask because some cmdlets introduced in 3.0 don’t work on 2008R2

<geekjimmy> ## Powershell against RT?

<geekjimmy> ## What’s the next book? (or did I miss that?)

<geekjimmy> ## do you benefit at all from safari online usage?

<alevyinroc> for your pre-show streaming enjoyment, here’s a NASA launch: http://www.nasa.gov/multimedia/nasatv/index.html#.UuHIzmQo45I

<halr9000> http://www.amazon.com/Windows-PowerShell-Best-Practices-Wilson/dp/0735666490

<geekjimmy> @jonwalz enjoying some pre-show tunes: http://youtu.be/qPzBC3vnIcc

<JonWalz> http://shop.oreilly.com/category/deals/powershell.do?code=WKPWERS&cmp=tw-na-books-videos-info-promo_powershell

<Vern_Anderson> http://www.windowsazure.com/en-us/services/recovery-manager/?loc=zTS2z&prod=zWAz&tech=zvirtz&prog=zOTprogz&type=zOTtypez&media=zOTmediaz&country=zUSz

<Dave_Wyatt> ## Bring on the nostalgia!  http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.strings(v=vs.110).aspx

<rcookiemonster> MattHitchcock – it’s a bit buggy IME, but there is this: http://gallery.technet.microsoft.com/PowerShell-ISE-VariableExpl-fef9ff01

<MikeFRobbins> http://www.sapien.com/software/changevue

<MikeFRobbins> They also have VersionRecall http://www.sapien.com/software/versionrecall

<Vern_Anderson> http://www.bing.com/videos/search?q=what+does+the+fox+say+video&qpvt=what+does+the+fox+say+video&FORM=VDRE

<JonWalz> http://scriptcop.start-automating.com/ Scriptcop

<halr9000> && http://open.spotify.com/track/0aDmudjjboRLuCaf93k2JJ

<Vern_Anderson> http://gallery.technet.microsoft.com/scriptcenter

<Vern_Anderson> http://gallery.technet.microsoft.com/scriptcenter/512f2371-96e4-423f-8596-58578aa7db31

<scriptingwife1> http://www.yelp.com/biz/zeitouni-grill-charlotte#hrid:ViSQ6ZeUoBBVV_rC1KrqTg

<geekjimmy> http://youtu.be/qPzBC3vnIcc

The Question – Favorite Vacation Spot

  • Europe

Script for Setting Up and Demoing a DSC Pull Server

DSC Setup and Demo Scripts

I recently set up a virtual machine to use for Desired State Configuration (DSC) demos. I wanted to make the demo-ing fairly brainless, as DSC requires a number of setup steps to get a pull server running. So I took some demo scripts Microsoft offered from TechEd 2013, updated them to work with Windows Server 2012 R2 RTM, and thought I’d offer them to you.

SetupDSC.ps1 is the main script. Now, because I didn’t want to use good ol’ Start-Demo, there’s a who crapload of kinda ugly Write-Debug statements. That way I can get an “about to do ____” message and then have the script pause before doing it. Lets me explain to the class what’s about to happen. You can remove all that crud if you like.

InstallPullServerConfig.ps1 and PSWSIISEndpoint.psm1 are the updated Microsoft scripts. SetupDSC.ps1 calls these. They’re intended to run locally; you’ll need to be on the machine you want to make into a pull server, and it needs to be Windows Server 2012 R2 (the DSC pull server role is part of the OS, not part of Windows Management Framework v4). Setup takes a few minutes, and will install IIS. This sets up an HTTP pull server.

SampleConfig.ps1 is a sample DSC configuration, targeted to a computer named MEMBER2. It just specifies that the Windows Server Backup feature be installed. SetupDSC.ps1 actually runs this, which produces a MOF. SetupDSC.ps1 also copies the MOF to the DSC pull server configuration directory.

SampleSetPullMode.ps1 also gets run by SetupDSC.ps1. This contains a DSC Local Configuration Manager configuration, targeted to MEMBER2, that turns on pull mode and directs MEMBER2 to pull the previously-created configuration. I think I have it refreshing every 5 minutes, which is totally unrealistic for production. Again, this was made for class demos, but you can adjust the time or leave it off to default to 30min. Running this script creates the MOF and pushes it to MEMBER2. That, in turn, causes MEMBER2 to start pulling the sample config, which causes Windows Server Backup to be installed.

SetupDSC.ps1 has some additional code to show that Windows Server Backup isn’t installed, and then is installed (after you give the pull time to occur).

Anyway, might need some tweaking to use in production, but hopefully it’ll give you a snapshot of the whole DSC process. Much thanks to James Dawson’s article on DSC, which gave me a couple of the tweaks I needed to get all this working on RTM code.


State of the Org, ending 2013

I wanted to take a moment and wish everyone a very happy new year, and to do a sort of wrap-up of 2013 from PowerShell.org’s perspective.

We started 2013 with a bang, including our first-ever PowerShell Summit North America, held on-campus at Microsoft in Redmond. We’ll be returning to the Seattle area in April 2014 for PowerShell Summit North America 2014, and are planning the first PowerShell Summit Europe 2014 in Amsterdam in September. For the N.A. show, we need about 50 more Summit attendees to break even, and can accommodate about 100 more than we’ve currently got registered.

We ran a very successful Scripting Games that kicked off just as the Summit was ending. Thousands participated, tens of thousands of dollars in prizes were handed out, and most importantly the Games made the transition from being a much-loved child of the Microsoft Scripting Guys to being a community-owned event that can hopefully continue forever. We’ve got the first Winter Scripting Games in a loooong time starting in just a few days, in fact.

In the wake of The Scripting Games, we ran a summer-long series of Great Debates, and your comments on those informed the first-ever Community Book of PowerShell Practices, now offered as a free ebook.

PowerShell.org, Inc. closed its first fiscal year at the end of June 2013, and financially we lost just a bit of money. Don’t worry – that was always more or less the intent; we’re not running the corporation to make a buck, but rather to more-or-less break even. At the moment, we have $29,988.25 in our checking account, most of which is earmarked for Summit 2014 expenses.

We’re now providing hosting services for about 17 local and regional user groups, giving them a spot to post upcoming meeting dates, post-meeting file attachments, and other details. We’re hoping this helps raise awareness of the efforts they’re all making to have a strong local PowerShell support system in place.

2013 also saw the PowerScripting Podcast become a welcome part of PowerShell.org. Host Jon Walz also got his first MVP Award, a long-awaited and well-deserved honor that he now shares with co-host Hal Rottenberg. Everyone appreciates the hard work they do, and we at PowerShell.org wanted to make sure they had the resources to keep doing it (equipment ain’t free), so we offered to help out when they needed, and they graciously accepted. We’re delighted to be working with them.

PowerShell.org played an important role in developing Microsoft’s official entry-level PowerShell training, course 10961, by giving the authors (e.g., me) a place to survey folks about topic, level of coverage, and more, and to solicit feedback on the “A” and “B” revs while updating the course for PowerShell v4. This site (and all of you) also played an important role in selecting topics for the advanced-level training, course 10962, which will be developed in 2014. Finally, you all helped provide feedback for Microsoft Courseware Marketplace course 55039, which covers PowerShell scripting and toolmaking. When you see a survey posted here, jump in – it makes a very real difference in some very important projects!

2013 was also the year we Moved to Azure, spinning up an Azure-hosted CentOS VM that’s now running the site. It’s gotten faster, is a bit easier to maintain, and is a heck of a lot more highly available thanks to Microsoft’s cloud hosting.

I’m extremely proud to have had so many folks jump in and help out this year. Dave Wyatt, Matt Penny, Matt Johnson, Mike Shepard, and Nicholas Getchell have all taken on curator roles for the free ebooks we offer on PowerShell.org. They’re doing a wonderful job in making sure those titles stay updated – so much so, that we’re now just linking to the books’ GitHub repository, where you can download the DOC files directly. Dave Wyatt has also been posting some incredibly detailed and informative blog posts that I hope you’re reading – I really appreciate his contributions here. I also want to thank Matt Tilford, Chris Hunt, and Mark Keisling, who have taken on editorial duties for the TechLetter newsletter. Our aim is to put out a solid, informative, technically deep monthly offering and these guys are absolutely on the job. I hope you’re subscribed, because if you aren’t, you’re missing out. Finally, MVP Steven Murawski has made PowerShell.org his home for Desired State Configuration (DSC) blogs and code, and he’s been prolific. His employer, StackExchange, has been an early adopter of the DSC technology, and Steven’s been sharing pretty much everything he’s learned.

We’ve had some transitions in 2013. Board member and co-founder Kirk Munro has had to step away from day-to-day duties with PowerShell.org, although he remains a member of the board. Board member Jason Helmick has stepped into a second-in-command position, and is more or less running the North America Summit from an operational perspective. Jason earned his first MVP Award this year, giving us an all-MVP Board that also includes myself, Jeffery Hicks, and Richard Siddaway.

I’m extremely proud of everything we’ve accomplished. I’m delighted that so many folks are jumping into the forums and offering answers to questions – it’s a massive relief on my own workload, and there are some damn smart folks offering their help to the community for free. In fact, we plan to recognize some of them in our first-ever PowerShell Heroes award, scheduled for January 2014. We’re also going to make good on a promise I made when we started this site: our above-and-beyond contributors are going to become part-owners of this community with an award of stock in PowerShell.org, Inc. That’ll give them some concrete control over the community they’re helping to build. Look for that mid-2014, when we near the end of our fiscal year.

For 2014, I’d like to thank our returning sponsors, SAPIEN Technologies and Interface Technical Training. These folks give a lot, financially, to help make this site work. Please show them your appreciation in every way you can. In 2014, my company, Concentrated Tech, is also coming aboard as a sponsor, and I’ll be offering my first-ever public PowerShell training.

I think 2014 should be a great year, both for PowerShell.org and for the broader PowerShell community that we’re trying to serve. If you’re new here, or you’ve just been lurking, please jump in and help. Write an article about something you learned, answer a question in the forums, or volunteer to help out. We’re all in this together, and the stronger a community we all make together, the more we’ll be able to support each other when needs arise.

I look forward to serving you in 2014!

Don Jones
President and CEO



Episode 248 – PowerScripting Podcast – Tommy Patterson from Microsoft on PowerShell and Azure

A Podcast about Windows PowerShell.

In This Episode

Tonight on the PowerScripting Podcast, we talk to Tommy Patterson about PowerShell and Azure



Guests – Tommy Patterson


Chatroom Buzz-

<1RJasonMorgan> ## s there an ETA for that?

<11MikeFRobbins> ## Where’s my data if it’s running in Azure? In China?

<11kobeckman> ## and how does that action work when a breach really does occur… do you shut down my VM’s?  call me?  email me?

<11MikeFRobbins> ## What prevents me from doing a port scan to find the RDP port?

<ScottMoss> dont forget my event friday! register here http://www.eventbrite.com/event/8955254407/posh

<halr9000> does this look like the one he’s talking about? http://channel9.msdn.com/Shows/TechNet+Radio/TechNet-Radio-Delivering-Results-Deploying-Unified-Device-Management-at-Microsoft

<halr9000> http://blogs.technet.com/b/yungchou/archive/2013/10/30/announcing-windows-azure-iaas-quick-start-kit-qsk-at-http-aka-ms-qsk.aspx

<MikeFRobbins> Speaking of User Groups, Microsoft PFE Matthew Reynolds is Speaking for the MSPSUG on Tuesday, November 12th at 8:30pm CST: http://mspsug.com/2013/11/05/microsoft-pfe-matthew-reynolds-speaking-for-mspsug-on-tuesday-november-12th-at-830pm-cst/

<halr9000> http://www.virtuallycloud9.com/index.php/2013/10/microsoft-cloud-learn-it-now-boost-your-career-virtual-machines-step-by-step-guide/

<MikeFRobbins> I was able to pick my WordPress hosts east coast data center. Check out this load time: http://tools.pingdom.com/fpt/#!/d71Yfh/http://mikefrobbins.com

<halr9000> http://www.trojanhorsethebook.com/about-the-book/jeff-aiken-series-movie-options-sold/

<halr9000> http://www.virtuallycloud9.com/index.php/2013/11/new-it-pro-sweepstakes-easy-to-enter-win-a-surface-pro/

<halr9000> http://www.virtualizationsquared.com/

<halr9000> http://www.microsoftvirtualacademy.com/training-courses/introduction-to-windows-azure#?fbid=OXWGjwdHmsF

<halr9000> http://www.windowsazure.com/en-us/downloads/

<MikeFRobbins> gpduck – I posted a blog this morning about that connect bug you tweeted out yesterday: http://mikefrobbins.com/2013/11/07/windows-8-1-rsat-powershell-cmdlets-get-aduser-get-adcomputer-one-or-more-properties-are-invalid/

The Question – Hero/Power

  • The Force

Writing Courseware: 10961 PowerShell Class

We’re in the process of working on a 10961C revision to the Microsoft PowerShell course, and I’ve been reviewing the anonymous comments submitted by MCTs and students on 10961A (the “B” rev, which is what was produced after our beta teach, is just now orderable so we don’t have comments yet).

By the way – if you’re a student or MCT who has taken/delivered 10961A, you’re welcome to contact me directly if you want to share any info on typos you found. Would like to fix those. Microsoft unfortunately didn’t bill 10961A as “pre-beta,” which it was, and I think that may have not properly set some expectations.

Anyway, if you’ve ever taken a course and thought anything bad about the courseware (not necessarily the instructor), take a look at these comment excerpts from this one course:

By day 3 (5 day class) most students felt over-whelmed. I had to move some of the chapters around to give them time to acclimate to the product before continuing onto more advanced topics. Students agreed that this shifting around of material was essential, allowing them to absorb what was covered in the first 2 days.

There was not nearly enough material to fill a 5 day class. Students ended up leaving very early on the last two days.

The class had too much repetition of some concepts.

Students were not given enough time or repetition on core fundamentals.

Right. Same class. No idea what to do with that, as a courseware designer.

(and by the way, this is after parsing through hundreds of comments from students who took the class remotely and were extremely dissatisfied with the experience. Believe me, you want to take training live and in-person.)

There’s also a question of, “what the heck were you expecting?”

was looking for more examples and understanding of using exchange and AD comandlet.

Missed basic knowledge of Workflows and Web Access.

Should include Flowchart among new features released in Version 3 [as soon as I figure out what feature 'flowchart' is, I'll get right on it]

There was nothing geared toward using PowerShell with SQL Server.

Some material and labs not as relevant for me specifically without a networking/server background. I will likely use exclusively for SharePoint.

The book should have covered creating functions that utilize pipeline content coming in, and Filtering commandlets. Discussion about creating Gui components or a reference to it in the book would be helpful.

Astonishing, because none of these things are mentioned in the course description. Can you imagine writing a generic PowerShell course that included examples specific to [__insert technology here__]? Everyone else in the room would be bored and hate it. Look, you’ve got one comment from a SharePoint admin with no networking/server experience. Goodness. A few folks suggested more AD examples – which I’d used in 10325, the predecessor course, and gotten tons of comments along the lines of, “I don’t do AD in my organization so all of the examples were useless to me.” O-kay! Can’t win ‘em all, I guess.

I think a lot of instructors miss the point on teaching PowerShell, which is to focus on teaching the shell and its discoverability mechanisms. I think setting expectations with students is key, too – let them know you’re not covering Exchange or SQL or SharePoint or Lync or whatever, but instead focusing on the core shell. And not even everything the shell does – 5 days isn’t enough time. In fact, that’s why 55039 is being offered – to provide the functions/programming side of the class.

Anywho – love your feedback if you’ve taught or taken the class! We have a few weeks in which to decide what we’re doing with 10961C.

PowerShell.org’s Azure Journey, Part 1

When we started PowerShell.org, my company (Concentrated Tech) donated shared hosting space to get the site up and running. We knew it wouldn’t be a permanent solution, but it let us start out for free. We’re coming to the point where a move to dedicated hosting will be desirable, and we’re looking at the options. Azure and Amazon Web Services are priced roughly the same for what we need, so as a Microsoft-centric community Azure’s obviously the way to go.

Azure Technical Fellow Mark Russinovich is having someone on his team connect with me to discuss some of the models in which we could use Azure. What makes the discussion interesting is that PowerShell.org runs on a LAMP (Linux, Apache, MySQL, and PHP) stack. We’re not looking to change that; WordPress requires PHP, and the Windows builds of PHP typically lack some of the key PHP extensions we use. I’m not interested in compiling my own PHP build, either – I want off-the-shelf. WordPress more or less requires MySQL; while there’s a SQL Server adapter available, it can’t handle plugins that don’t use WordPress’ database abstraction layer, and I just don’t want to take the chance of needing such a plugin at some point and not being able to use it.

What’s neat about Azure is that it doesn’t care. I adore Microsoft for selling a service and not caring what I do with it. Azure runs Linux just fine. Huzzah!

So, we’ve got two basic models that could work for us. Model 1 is to just buy virtual machines in Azure. We’re planning one for the database and another for the Web site itself, so that we can scale-out the Web end if we want to in the future. We’re not going to do an availability set; that means we risk some short downtime if Azure experiences hardware problems and needs to move our VM, but we’re fine with that because right now we can’t afford better availability. We’d probably build CentOS machines using Azure’s provided base image (again, adore Microsoft for making this easy for Linux hosting and not just Windows). We know we tend to top out at 250GB of bandwidth a month, and that we need about 1GB of disk space for the Web site. 500MB of space for the database will last us a long time, but we’d probably get 1GB for that, too. It’s only like $3 a month. We could probably start with Small VM instances and upgrade later if needed. All-in, we’re probably looking at about $125/mo, less any prepay discounts.

Model 2 is to just run a Website. We still get to pick the kind of instance that hosts our site, so if we went with Small and a single instance, we’d be at about $110 including bandwidth and storage. That doesn’t include MySQL, though. Interestingly, Microsoft doesn’t host MySQL themselves as they do with SQL Azure. Instead, they outsource to ClearDB.com, which provides an Azure-like service for hosted MySQL. Unfortunately, the Azure price calculator doesn’t cover the resold ClearDB service. Looking at ClearDB’s own pricing, it’d probably push us to about $120-$125 a month – or about the same as having our own virtual machines. The difference is that, with Model 2, Microsoft can float our Web site to whatever virtual hosts they need to at the time to balance performance; with Model 1, they can potentially move our entire VM – although they’re unlikely to do so routinely, since it’d involve taking us offline for a brief period. A super-neat part of this model is its integration with Git: I can run a local test version of the site, and as I make changes and commit them to our GitHub repository, Azure can execute a pull and get the latest version of the site code right from Git. Awesome and automated. I love automated.

An appeal of Model 1 is that I can build out the proposed CentOS environment on my own Hyper-V server, hit it with some test traffic loads, and size the machine appropriately. I can then deploy the VHDs right to Azure, knowing that the instance size I picked will be suitable for the traffic we need to handle. It also give me an opportunity to validate the fact that a dedicated VM will be faster than our current shared hosting system, and to play around with the more advanced caching and optimization options available on a dedicated VM. I can get everything dialed in perfectly, and then deploy.

Azure has other usage models, but these are the two applicable to us. I think it’s great that we get these options, and that the pricing is more or less the same regardless. And again, I think it’s pure genius that Azure’s in the business of making money for Microsoft, and that they’re happy to do so running whatever OS I want them to.

I’ll continue this series of posts as we move through the process, just for the benefit of anyone who’s interested in seeing Azure-ification from start to finish. Let me know if you have any questions or feedback!

Coming Soon: 55039 “PowerShell Scripting and Toolmaking” Course

Later this month, Jason Helmick will be offering a revised “PowerShell Scripting and Toolmaking” course at Interface Technical Training in Phoenix. This new course carries the Microsoft Courseware Marketplace number 55039 – that’s right, this is an official, unofficial course that will be available to all Microsoft training partners!

(Courseware Marketplace offerings are not written or endorsed by Microsoft, but they are equivalent to Official Curriculum in many ways, including being eligible for Software Assurance voucher programs. Marketplace offerings supplement Official offerings by providing courses that Microsoft doesn’t have the time or resources to generate themselves.)

This course is based directly on Learn PowerShell Toolmaking in a Month of Lunches, and incorporates much of that book’s actual text (in fact, a portion of the course’s sale price goes to the book publisher, with a portion of that going to the book authors as royalties). That’s combined with a full slide deck, some awesome brand-new labs, lab answer key, “starting points” (for lab students who fall behind), and a complete inventory of demo scripts for the instructor to use. It walks through a quick PowerShell review, and moves all the way through creating modules, advanced functions, custom views, and much more. It’s a pretty handy course, and even dives into creating “controller” scripts, such as scripts that automate processes or generate HTML reports. We provide a complete 3-VM build guide, and a simple ISO image containing all of the instructor and student files. Students are even welcome to download that ISO themselves for later reference! That URL will be provided in the student manual.

I’m especially proud of the labs, and thankful to Mike Robbins and Jason Helmick for debugging them for me. Through the main part of the course, students have three lab tracks (A, B, and C) to choose from – and overachievers can work on more than one track. Through each module, the labs gradually build from a basic command to a complete, fleshed-out “script cmdlet” packaged in a module, with a custom view and more. It’s extremely realistic, and it means much of the classroom time is spent on hands-on labs, where students will get the most value for their money.

This course is designed to complement Microsoft’s official 10961 course, which covers substantially the same material as Learn Windows PowerShell in a Month of Lunches, meaning 55039 is kind of a “sequel” course. Training centers are welcome to offer a 5-day accelerated class that combines both courses; that’s pretty much the class I teach myself. I don’t personally categorize 55039 as “advanced;” rather, it’s more of a specific application of PowerShell – building reusable tools. I do offer an advanced course of my own, and there’s a chance for that to become a packaged course in the future.

After the beta is complete, the course will be orderable in the Marketplace with a suggested price of $150 per student. It’s a full 5-day course, with multiple lab tracks per module, so I felt that was a pretty fair price, especially since students basically get the Toolmaking book “included” in their manual!

If any other trainers would like to know more about the course, they’re welcome to contact me. We will be selling it directly as well, for trainers who can’t access the Marketplace.

Download the table of contents: 55039-TOC

My PowerShell Workflow Series on TechNet Magazine

As most folks are aware, I’ve been writing the Windows PowerShell column for Microsoft’s TechNet Magazine for… wow, going on 7 years now. For 2013, I was doing a serialized column on PowerShell Workflow, introducing a bit of the technology at a time in each month’s article. Eagle-eyed observers will note that the series has “paused,” with no new articles in July or August.

First, I’m sorry for the interruption. Unfortunately, right now Microsoft is re-evaluating and re-positioning TechNet Magazine (perhaps in line with a larger re-considering of the TechNet brand, where they recently discontinued the subscription product), and for the time being the company is sticking with internally generated content for TechNet Magazine. I’m hopeful the company will come to a decision soon, and I’ll try and keep you posted here.

My past columns (all 77 of them) are still online and accessible, along with hundreds of other articles stretching back almost 8 years.

How Cloud-First Design Affects You

Today, Brad Anderson (Corporate VP in the Windows Server/System Center unit) posted the first in what should be a series of “What’s New in 2012 R2″ articles. In it, Anderson focuses on how Microsoft squeezed so many features into the 2012R2 release in such a short period of time. The short answer, which has been stated by Jeffrey Snover before, is “we build for the cloud first.” That means features we’re getting in 2012R2 have, for the most part, already been developed, deployed, and in use in some of Microsoft’s own cloud services. This is a huge deal. It means their cloud services (think Azure, O365, and the like) get stuff first, where Microsoft can make sure it’s stable. They then package those and hand them off to us.

It means we get better stability, but it also means we get better manageability. Look, you don’t get excited when you have to deploy a new server, right? You want to automate that stuff. Well, Azure gets really ticked off if they can’t automate it, because they do it thousands times more than you. So forcing themselves to run a ginormous datacenter also forces the company to make better management tools – which they then hand down to us in an OS release.

If, that is, you’re managing your datacenter as if it was your own little… dare I say it, private cloud. In other words, if you think of your datacenter as a wee little cloud, and you manage it like one, then you’ll get the tech you need, because Microsoft has to develop that tech for themselves. If you want to keep managing it the old-fashioned way… well, you’ll get less love.

This whole approach, for me, is the ultimate expression of the Microsoft phrase, “eat the dogfood.” Meaning, use our own products just as our customers would. You just have to make sure you’re eating the same flavor dogfood. Not that MS expects everyone to have their own in-house Azure. No, that’s not the point. The point is that they’re developing for a world where admins do nothing but create units of automation, and business processes (perhaps outside IT) initiate those processes. You’re going to see more and more tools and technologies (um, PowerShell) to facilitate that model of IT operations; you’ll see less and less tech that facilitates the old way (meaning, fewer and less robust GUI tools, I’m guessing).

Desired State Configuration (DSC) is probably an ideal example of this new approach. In the past, when you wanted to configure a few hundred machines to look and behave a certain way, you went clicky-click a few hundred times in a GUI. That’s imperative configuration; you tell each machine what to do. That doesn’t scale to cloud-sized proportions, and so now we’re getting DSC. DSC is declarative configuration, meaning you tell a group of machines what to be. The OS itself figures out how to achieve that state of being. So admins have to shift from thinking “what do I make the machine do” and “how do I tell it what to be.” It’s not unlike Group Policy, actually, which is also declarative, except that DSC will eventually dwarf Group Policy in terms of reach and capability.

Point being, if you’re in the old world of, “I just run through the Wizard and set the machine up,” you’re not aligned with the new world order. Expect fewer wizards, as product teams shift their investment to building things like DSC resources instead. With 12-18 month product cycles, time is in short supply for each new release. One-at-a-time approaches don’t scale to the cloud, so those are likely to get less of that limited amount of time.

Anderson’s post is worth a read. It’s a little high-level – the man is a Corporate VP, after all – but it shows where Microsoft is pointing their collective brain. It uses the word “delight.” It describes in great detail how Microsoft is trying harder to put the customer in the front of every conversation – but, more subtly, it also shows how Microsoft is moving the conversation past “what do customers tell us they want” and more toward “here’s what we see customers needing.” Henry Ford would be proud.

It’s Safe to Run Update-Help – and you should!

I’m informed that sometime today Microsoft will be posting fixed core cmdlet help files for your downloading pleasure – so it’s safe to run Update-Help again, and you should definitely do so. There are likely a lot of fixes and improvements to the help text, and you won’t be “losing” the parameter value type information from the SYNTAX section.

Maybe schedule an Update-Help for tomorrow morning?

BTW – kudos to the team at Microsoft for getting this issue fixed so quickly. It’s a shame this one snuck past them, but once notified of the problem they really did jump on it. The fact that the problem was (from the public perspective) just with the downloadable help files means it’s an easy fix that doesn’t involve pushing code out through Windows Update (thank goodness).