Category Archives: Training

MY 2014 Public POWERCLASS is Now Open for Registration

I’m going to be running a 3-day POWERCLASS April 2, 3, and 4 near Raleigh-Durham, NC! You can get full details on my company’s website, including pricing and class descriptions.

Don’t leave near Raleigh-Durham? Well, it’s a fun place, and not that expensive to visit. More importantly, I’m not going to be doing a huge road-show and visiting a bunch of cities. Right now, my schedule is almost full through September, so this may well be the only public class I do in 2014. It might therefore be worth your while to take a short trip!

The class will be VERY limited in size – just 16 students, max, and I’ll be happy with a bunch fewer. This is a hardcore class. We’re going to assume you’ve conquered the basics of Windows PowerShell and that you’re looking to implement best practices, start using PowerShell for real production tasks, and learn more about PowerShell performance and troubleshooting. It’s a “bring your own laptop” hands-on class, too, so you’ll get tons of hands-on time with an instructor who really cares about what you learn.

This is all-new material, and you won’t find it anyplace else. It’s applicable to v2 through v4, although some things – we WILL be covering DSC, for example – only apply to specific versions (and you’ll learn which is which as we go).

It’s the best PowerShell class I could come up with – I hope you’ll join me.

My outline for accelerated PowerShell training

When I teach PowerShell, either at a private client or in a public class, I tend to use my own outlines. I’m comfortable with them, and they work really well. They formed the basis for the Microsoft 10961 and 55039 courses, although I had to make some changes to accommodate Microsoft standards and varying MCT delivery styles. But I’m often asked if there’s a “MOC-equivalent” outline that combines the entry-level 10961 with the scripting-focused 55039.


First, do understand that I naturally teach at a very concise and accelerated pace. I don’t spend much time on slides; I tend to skip right to demos, and use those to explain what I’m explaining. If you follow a more common delivery style of around 5min per slide, plus taking your time on demos, my approach might not work well for you. I also tend to not tell a lot of ancillary stories, I tend to make students take break during lab time (rather than individually scheduling breaks), and I tend to be as concise as possible in my lectures.

Also, when accelerating these courses together, you don’t do all of the labs. For labs with multiple components (find these 20 command), I’ll do about 1/3 of them. For the 55039 main-sequence labs, I’ll tell students to pick the “A,” “B,” or “C” version rather than doing all three; sometimes I’ll just have them do the “D” version (which gives them a pre-done starting point for each module, rather than making them build on their own work from a previous module).

For Day 1, I’ll cover modules 1-5, and maybe module 6, from 10961. Day 2 will be modules 7, 9, 11, and 12 (covering 6 first, if I didn’t get it done on Day 1). That’s the “core” PowerShell stuff. It’s a fast delivery; it’s possible to spread those out over three days if you prefer, but I explicitly skip modules 6, 8, and 10 at this stage.

When my students all have strong shell or scripting skills, 2 days often gets me through that. If they’re newer, I’ll go slower on modules 1-5, do more of the labs, and take 3 days to cover that 10961 material.

The remainder of the course comes from 55039. That’ll be 2 or 3 days, depending on how long it took you to do the 10961 material. Regardless, I’ll cover modules 2-5. I’ll usually skip module 6, and try to end the day with module 7 on debugging. I’ll cover module 8, 9, and 10. That’s usually 2 days, so it’s the last thing I do if I took 3 days to cover the 10961 stuff.

If I got through 10961 in 2 days, I’ll finish the 55039 material, covering modules 11, 13, and 16. If students insist on workflows, I’ll throw that module in there – I have mixed feelings and results when it comes to workflow, so it’s not part of my standard accelerated delivery. If you have extra time, my priority then goes to modules 15, 13, and 14, in that order. 14 gets you some GUI-building experience, so if the class is pushing for that I’ll include that module instead of workflow.

If all that seems a little informal – well, it is. I’m very good at reading my students, and making sure folks are actually keeping up, so I don’t press too hard. This is a lot of conceptual and practical material to cover in a week.

Price-wise, in the US, I see this kind of accelerated class going for around $3500, although a lot of training centers offer significant discounts. This accelerated outline is absolutely worth it: you’re literally taking someone from zero and teaching them how to build their own script modules and tools in PowerShell. It’s a lot to cover; not every class will be up to it.

The labs in both courses are solid, and I’m especially happy with the ones in 55039 in terms of what they cover, and in how challenging they are. I’ll warn you that the 55039 labs don’t do a lot of hand-holding. Students are expected to learn the material and then execute the labs; the “answer keys” are outright sample solutions, not hints. But if you teach the material as provided, everything students need is in there – if they’re willing to work hard and retain what you’ve shared.

Last chance for feedback on PowerShell course 10961A/B

I’m in the midst of working on 10961C, the Windows Server 2012 R2 / Windows 8.1 / PowerShell 4.0 update of Microsoft’s 10961A/B course, “Automating Administration with Windows PowerShell.” I anticipate this being closed out by the end of November, 2013, so if you’ve taken or taught this course and have any feedback – even a typo – now’s the time to tell me. Drop a comment below, or e-mail me (if you have my address). Please, no Twitter replies on this one.

The course will not be substantially changed from the B rev; because PowerShell v4 doesn’t change much, especially at the entry-level covered by 10961, there wasn’t much to alter. But I’m trying to sweep up as many lingering bugs and typos as possible. Kudos to MCT Jason Yoder for firing over a list of fixes!

Continue reading

PowerShell “Scripting and Toolmaking” Classroom Training Course Now Available to Microsoft Training Centers

Attention Microsoft training centers! Microsoft’s Courseware Marketplace now offers course 55039AC, “Windows PowerShell Scripting and Toolmaking.” Designed as a 5-day course, it’s a spiritual “Part 2″ to Microsoft Official Curriculum course 10961.

With 10961, the goal was to provide a founding in PowerShell basics, in a somewhat product-neutral way. That is, the course doesn’t cover Exchange, or SharePoint, or AD; it focuses on pure PowerShell. Unlike its predecessor, 10325, the 10961 course kind of “stops short” of actual scripting. It shows you how to build a parameterized script, but doesn’t dig into advanced functions, debugging, error handling, and the like. There was a feeling – which has been largely upheld through customer feedback – that a sizable audience needed to get the shell basics under their belt, and weren’t necessarily comfortable leaping into coding. 10325 kind of breezed through scripting at a somewhat high level, and didn’t have time to offer much in the way of practices and other guidance, and it didn’t really set you up for building reusable units of automation.

That’s where 55039AC comes in. It is a scripting class, pure and simple, and it focuses on building reusable units of automation according to best practices and patterns. More time is devoted to design, structure, procedural error handling, and so on. There’s also deeper coverage of module building, including building custom formatting views, and there’s even an introduction to Workflow. Although designed for v3, the course is pretty version-agnostic, meaning it’s suitable for someone who wants to use PowerShell v2, v3, or beyond. And, because it’s a Courseware Marketplace offering, it’s compatible with Software Assurance (SA) training vouchers.

Training centers are welcome to combine 10961 and 55039 to create an “accelerated” class that includes heavier scripting coverage than 10961 alone. I do that myself, actually, although it’s a pretty hardcore week. If you’re interested in doing that, contact me and I can provide some of the accelerated-delivery outlines that I use.

55039′s modules are all standalone – with a twist. Students are encouraged to use and evolve a single code project throughout several modules. However, if you’re not teaching all of the modules, or if a student falls behind, each lab comes with a complete “starting point” that keeps everyone on the same page.

55039 has already been beta-taught, and of course I welcome feedback if you’ve taught the course or taken it as a student.

My company also offers licensing for this course outside the Courseware Marketplace, mainly geared to training centers who want an unlimited perpetual license to reproduce the course materials on their own. We know courseware costs are a significant concern, so we’re trying to offer something reasonable there.

Both 10961 and 55039 (or at least a subset of 55039; we’re still working on exactly what) will be considered pre-requisites for the upcoming 3-day 10962 course, which will focus on advanced PowerShell techniques for us in production environments, including database connectivity, report generation, and so on.

Why the HECK Do You Want to be Taught .NET in a PowerShell Class?!?!?!

Ok, that post title is deliberately provocative. Twitter and all that.

So look, we’re designed this advanced PowerShell class. One of the top five constant suggestions I get whenever I say “advanced” and “PowerShell” is “.NET Framework.”

And I get it. When there’s no cmdlet, .NET has a ton of goodies that can solve a lot of problems. Maybe you don’t like turning to it, but you’ll do it if you have to.

My problem is, what’s that look like in a class?

I mean, for me, using .NET basically works like this:

  1. Spend hours on Google finding the .NET class that will do whatever I need done.
  2. Look up class documentation on MSDN.
  3. Fiddle around in PowerShell with properties and methods until I get what I want.

I can totally see a class making #2 and #3 a little easier. That’s just some basic experience, which is what a class helps build. The problem is, I can teach someone those steps in 30 minutes or less. The hard part is #1, and I truly don’t know any way to “teach” that. You’re either good at Google, or you aren’t. I certainly can’t provide some kind of mega-directory to the whole Framework – that’s what bloody Google or MSDN Search is for.

#3 can also be a hard part, because it requires you to know a bit about the underlying technology. It’s easy to use .NET to resolve DNS names to IP addresses – IF you know how DNS works. If you don’t, .NET is hard to use for that task. I can’t turn a PowerShell class into a “here’s how ____ works, so that I can show you how to do it in .NET.”

So everytime I try to teach .NET in a PowerShell class, I end up showing people how to read the MSDN documentation, execute methods in PowerShell, and look at properties in PowerShell. Kinda boring. I mean, they’re just freakin’ objects, right? Once you’ve grasped “objects,” isn’t .NET easy, assuming you’ve done #1 and found the class you need?

So if you were taking your dream class in “advanced PowerShell,” and you were all excited that it had a module on “Using .NET Framework,” exactly what would that module look like? What would you want to be TAUGHT?

Leave a comment. Tell me.

(By the way, if your answer to the question is, “I want to learn how to find what’s in the .NET Framework,” there’s no need to leave a comment – we all want that, I’ve just no clue how to teach it other than teaching you to be better at Google!)

Questions about an Advanced PowerShell Class Design

As we continue collecting responses to an outline survey about an Advanced PowerShell class, I’ve come up with a couple of questions and would appreciate any feedback you’d care to leave here.

Keep in mind that we’re a bit bound by this course being Microsoft Official Curriculum. I gotta make sure, in other words, that the average MCT can teach it. Ahem. I also have to face facts that people don’t read or obey course pre-requisite suggestions, and that a lot of people taking the course will have zero programming background.


Question 1: GUI

First, we desperately want to include some module on “building friendly GUI tools for techs and end-users.” It’s a massively demanded topic. That said, hand-coding a GUI in either WinForms or WPF is physically painful and time-consuming, and nobody would do it. Asking the class to use SAPIEN PowerShell Studio is probably not on the table; Microsoft has rules, these days, about third-party applications in classes, even if they’re free (which Studio isn’t). Using Visual Studio to generate WPF XAML is probably also out of the question – it adds a lot of build effort for just a single module.

So I’m down to a couple of options. Option A would be to provide students with a basic module that used PowerShell commands to construct a WinForms GUI. They would have after-class access to the module, too. After all, the big thing to teach here is less about how to physically build a GUI (if you were serious about it, you’d get PowerShell Studio), and more about the process of hooking up code to the GUI. By providing a module that shortcuts the hand-coding effort, we’d get to the important bit.

But there’s also a valid perspective that creating little distributable GUI tools is dumb, and that you should be building Web-based ones instead. We could certainly build a module around a simple ASPX page – which is much easier to hand-code with a few examples in front of you – that hosts the PowerShell engine to execute PowerShell commands. They’re centralized, great self-service tools, and easy to crank out once you’ve got a pattern to work from (which we’d provide in the class).



Question 2: Workflow

We’d originally proposed a workflow overview module, with a basic example. Folks have quite rightly commented that workflow isn’t all it was hyped to be. It’s slow, in many cases. It’s hard. It isn’t really PowerShell. There aren’t a ton of killer examples that you can cover in the scope of a class.

But it offers parallelization, which is a great feature. So we’re considering replacing workflow with a module on parallelizing PowerShell. My thought is to do that mainly with jobs. Jobs work very consistently inside the shell, and are easy to use. They have some straightforward caveats, like the fact that they return serialized objects.

There’s an argument to be made for runspace pools, too. But those get very programmer-y. You have to start worrying about concurrency, thread safety, thread and pool management, and a lot more. I’m not sure, in the context of a PowerShell class, we can sufficiently cover all those extras so that someone could be safely effective with runspace pools. I get that they’re more flexible and low-level, but they’re a big topic, and nothing else in the course “leads up” to that level of .NET programming.



Anything Else?

Any other suggestions aside from these two questions would be better served in the original survey. I’m not the only one evaluating those responses, and that survey is the only place we can guarantee the entire team will see everything.

Help me Design the Advanced PowerShell Class!

I’ve been asked to work on an “advanced” PowerShell class. Now, I don’t like the “advanced” word very much, because it means something different to everyone, depending on their experience. So I’m trying to make the class focus on “powerful, practical things you can do with PowerShell that definitely drift into programming and scripting.”

You can tell me what you think by taking an online survey about the proposed outline, which will be online through October 18th, 2013.

My New PowerShell Video Series, Covering v2/v3/v4, Launches

It’s finally starting to be published – my Ultimate PowerShell Video Training Series, covering versions 2 and onward.

This series will initially consist of 90 chunks of roughly 20 minutes each, adding up to more than 30 hours total. I’m building each individual video to CLEARLY differentiate between PowerShell v2, v3, and v4; for the most part, I switch to Windows 7, Windows 8, and Windows 8.1 to demonstrate specifics in each version. That means you can clearly tell what features and techniques go with each version. It also means the series can be extended as new versions are released in the future.

This is going to cover everything – think of it as a “PowerShell In Depth” done in video. And, whatever I forget, if there is anything, can be easily added to the series. In other words, this will be my new, permanent video training for PowerShell. It’ll cover every version from v2, be extended to cover new version techniques and features, and be expanded to cover new topics as they become of interest.

It’s being built with hands-on labs, too. I describe a lab environment you can set up (super-simple), and provide written lab documents for you to work through. Each is then covered in a standalone video, so that you can see sample solutions.

Best of all, you can watch the whole thing for under $100. CBT Nuggets’ program gives you monthly access to their entire library for that price, including my entire PowerShell series, their hundreds of titles related to certification and technology, everything. Or pay $1000 for an entire year – which also gets you access to practice certification exams from Transcender.

I’ll be publishing 5-10 videos per week in this series, until it’s done – and we’ll then be tackling domain-specific PowerShell management, including Exchange, AD, SQL Server, System Center, all of it. It’ll take some time to build out all of that, but I’m committed to building the most comprehensive PowerShell video training offering in the universe!

If you get a chance to check out the new series, let me know what you think.

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.

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

Is this list “Everything” in PowerShell?

Soooo…. it’s time for me to start looking at updating my various training materials (books, videos, courses, whatnot) for v4.

I’m going to, with at least some of these, take an all-versions approach. I’ll teach what’s in v2, then cover what v3 added, then cover v4, etc. It’ll be easier to maintain over the upcoming years.

For right now, I’m trying to assemble an organized topic list of “everything” the shell does. Now, I need to wrap that in an important caveat: I’m aiming at admins. Not developers. I’m not saying devs aren’t a great audience, but for this project I need to constrain my scope to just the admin audience. I’m also focused mainly on what the shell does natively, with only a few diversions into external or underlying technologies. Those are fixed caveats for this project – no exceptions.

Right now I”m kind of chunking the list into what I feel can be taught (by me) in 20-30 minutes, or a book chapter, or something like that. This isn’t necessarily how the material will be presented – this is just me organizing my thoughts so as to not miss important stuff.

So, given the list below, what do you feel is missing?

(Numbers are major topics; letters are basically my mental notes about what the topic might include that I might otherwise forget; like I said, this isn’t meant to be a real book outline – it’s just a topic list)

PowerShell Core
1. Series Introduction and Lab Setup
2. Windows PowerShell Introduction and Requirements
3. Finding and Discovering Commands
a. Importing modules and snapins
4. Interpreting Command Help
5. Running Commands
6. Running External Commands: Tips and Tricks
a. $Lastexitcode
7. Working with PSProviders and PSDrives
8. Variables, Strings, Hashtables, and Core Operators
a. Double quote tricks, subexpressions
b. Here-strings
c. Escapes
d. Variable types
e. Arrays
f. Math operators
9. Regular Expression Basics
a. Basic regex language
b. –Match
c. Select-String
10. Learning the Pipeline: Exporting and Converting Data
11. Understanding Objects in PowerShell
12. Core Commands: Selecting, Sorting, Meauring, and More
13. How the PowerShell Pipeline Works
14. Formatting Command Output
15. Comparison Operators and Filtering
16. Advanced Operators
17. Setting Default Values for Command Parameters
18. Enumerating Objects in the Pipeline
a. Working with object methods
19. Advanced Date and String Manipulation
20. Soup to Nuts: Completing a New Task

PowerShell Remoting
21. PowerShell Remoting Basics
22. Persistent Remoting: PSSessions
23. Implicit Remoting: Using Commands on Another Computer
24. Advanced Remoting: Passing Data and Working with Output
25. Advanced Remoting: Crossing Domain Boundaries
26. Advanced Remoting: Custom Session Configurations
27. Web Remoting: PowerShell Web Access

28. WMI and CIM: WMI, Docs, and the Repository
29. WMI and CIM: Using WMI to Commands Query Data
30. WMI and CIM: Using CIM Commands to Query Data
31. WMI and CIM: Filtering and WMI Query Language
32. WMI and CIM: Associations
33. WMI and CIM: Working with CIM Sessions
34. WMI and CIM: Executing Instance Methods

35. Background Job Basics: Local, WMI, and Remoting Jobs
36. Scheduled Background Jobs

Scripting in PowerShell
37. PowerShell Script Security
38. Prompting for Input, Producing Output
39. Creating Basic Parameterized Scripts
40. PowerShell Scripting: Logical Constructs
41. PowerShell Scripting: Looping Constructs
a. Break and Continue
42. PowerShell Scripting: Basic Functions, Filters, and Pipeline Functions
43. PowerShell Scripting: Best Practices
a. Line breaking
b. Splatting
c. Formatting
d. Source Control
e. Etc.
44. PowerShell Scripting: From Command to Script to Function to Module
45. PowerShell Scripting: Scope
46. PowerShell Scripting: Combining Data from Multiple Sources
a. Ordered hashtables

Advanced Functions (“Script Cmdlets”)
47. Advanced Functions: Adding Help
48. Advanced Functions: Parameter Attributes
49. Advanced Functions: Pipeline Input
50. Advanced Functions: Parameter Sets

Advanced Scripting Techniques
51. Creating Private Utility Functions and Preference Variables
52. Adding Error Capturing and Handling to a Function
53. Advanced Error Handling
a. Variety of error capturing options
b. Catching multiple exceptions
c. Etc.
54. Error Handling the Old Way: Trap
55. Debugging Techniques
56. Creating Custom Formatting Views
57. Creating Custom Type Extensions
58. Working with SQL Server (and other) Databases
59. Working with XML Data Files
60. Supporting –WhatIf and –Confirm in Functions
61. Troubleshooting and Tracing the Pipeline
62. Using Object Hierarchies for Complex Output
63. Creating a Proxy Function

PowerShell in the Field
64. From the Field: Enhanced HTML Reporting
65. From the Field: Trend Analysis Reporting
66. From the Field: Scraping HTML Pages

PowerShell Workflow
67. Introduction to PowerShell Workflow

Desired State Configuration
68. Desired State Configuration: The Basics
69. Desired State Configuration: Configuration Scripts
70. Desired State Configuration: Writing Resources
71. Globalizing a Function or Script
72. Discovering and Using COM Objects
73. Discovering and Using .NET Classes and Instances

Writing Scripts for Other People
74. Controller Scripts: Automating Business Processes
75. Controller Scripts: A Menu of Tools
76. Creating a GUI Tool: The GUI
77. Creating a GUI Tool: The Code
78. Creating a GUI Tool: The Output
79. Creating a GUI Tool: Using Data Tables

Advanced Core Techniques, Tricks, and Tips
80. Using Type Accelerators
a. [ADSI]
b. [XML]
c. [VOID]
d. where they’re documented
81. The Big Gotchas in PowerShell
a. (from the ebook list)
82. Fun with Profiles
a. Profiles and hosts
b. Prompt
c. Colors
d. Get a credential
83. Random Tips and Tricks
a. Redirection changing pipelines
b. $$
c. $?
d. Dot sourcing

TechMentor DEEP DIVE Las Vegas (+Discount)

TechMentor Las Vegas DEEP DIVE
NEW FORMAT based on your feedback! Get inside the REDEFINED IT classroom at TechMentor DEEP DIVE, September 30- October 4 in fabulous Las Vegas. 5 days of information-packed sessions lasting at least 3 hours and “hands-on” labs with your own laptops will give you more detail and knowledge to keep you relevant in the workforce. We are diving deep into the topics you care about most: PowerShell, System Center, Security, Active Directory and more!

TechMentor is an independent, educational conference. We pride ourselves on keeping the classroom size small, the focus on learning, and the networking opportunities flowing between you, your colleagues, and some of the most respected speakers in the industry.

TechMentor DEEP DIVE is a one-of-a-kind conference in a one-of-a-kind city. Don’t miss it! Click here to find out more, or register today with the Early Bird Savings and take $200 off the standard price!

Calling all PowerShell Teachers/Trainers

I’m in the process of building a referral list for teachers and trainers who work with Windows PowerShell. My goal is to build a “find a trainer” page here on, with the ability for prospective clients to send an inquiry via email. This would be for customers seeking private classes, not for individual students seeking a class.

If you’d like to be on the list, please send me an email, or use the “Contact” page under the “Site Info” menu here on Please provide an email address that referrals can be sent to; you’d receive the potential client’s contact information directly and would work with them directly – I’m not looking to act s middleman or agent, and there are no referral fees. We won’t be providing pricing information or anything other than a means of connecting clients and trainers.

You can also provide a link to your Web site, if you have one, preferably a page that describes your PowerShell training offering(s).

Come to PowerShell Summer School!

Through my company Concentrated Tech, I’ve decided to run a set of three PowerShell Summer School classes (click that link for descriptions). These will be a combo of self-study and weekly online sessions, designed to teach Toolmaking, Practical applications of PowerShell, or how to teach PowerShell in a lunch ‘n’ learn style format. Registration is open from now until August 1st, and you’ll also get a discount on some great SAPIEN products to use during class, if you like.

The Toolmaking class will also prepare you for PowerShell VERIFIED EFFECTIVEâ„¢ certification, if you’ve been considering that.

Two of the classes will incorporate group code reviews of student assignments, to help improve your style; the third will include mock delivery sessions to help polish your delivery skills. All will include a private Q&A forum where you can ask questions both of me and of your fellow students while you’re in the self-stufy phase. Classes will meet online, on Wednesdays, for six weeks through August and September.

Planning a vacation in the middle of summer school? It’s fine – we can schedule a make-up online session when you get home. I’m also willing to try and make other accommodations to help make this an effective learning experience for everyone.

All of these classes assume a basic level of PowerShell knowledge, although you’ll get plenty of review material to help you catch up, or dredge up old memories from when you last tried to learn the shell.

Tell a friend, tell a colleague – I don’t do these kinds of offerings all that often; my travel schedule usually precludes it. But a fortuitous schedule has made it possible, so consider taking advantage!

A special presentation on getting started with PowerShell

Microsoft will be broadcasting a live special presentation – one that can’t be missed by anyone learning and using PowerShell. In fact, they will be broadcasting two events, which I will explain – but here is why you can’t miss them.

  1. On July 18th in a live broadcast – The inventor of PowerShell, Distinguished Engineer Jeffrey Snover, along with myself, will be taking you through the ins-and-outs of using PowerShell for real-time problem solutions and automation.
  2. There will be a second presentation in August going further into scripting, automation and building tools (cmdlets) – solutions to hand to other admins, helping them to solve problems.
  3. It will be the most fun way to spend the day and learn more about PowerShell then you thought possible.

This is a great time to get your IT staff together and learn PowerShell. Even if you already know how to use PowerShell – why not get the rest of your friends involved? This will be a high speed for IT Pro only presentation. Yes, it will be recorded, but you really want to show up in the live broadcast so you can ask questions directly to Jeffrey, the inventor of PowerShell.

Jeffrey and I have crafted a great presentation for you – you can’t miss this!

(For me this is a great honor to sit across from the master, and you certainly don’t want to miss the possibility of me screwing up!  Here are the details:)

Getting Started with PowerShell 3.0

July 18, 2013

9:00am – 5:00pm (PDT)

As a side note:

I’ve been honored to teach PowerShell to hundreds of Admins over the last couple of years using Don Jones’ book “Learn Windows PowerShell in a Month of Lunches” – both versions 2 and 3 – published by Manning Publications ( He and Jeff Hicks updated it to version 3 and I’m sure they will also update it to version 4. I also have been teaching a variety of versions of Don’s “Toolmaking,” now published as “Learn PowerShell Toolmaking in a Month of Lunches” (from the same publisher) by Don and Jeff Hicks.

The success rate for admins learning PowerShell, learning how to solve problems, then automating and building tools (cmdlets) has been astounding. Working with Don on these topics and classes has been one of the highlights of my career.

Don also wrote the Microsoft Official Curriculum (MOC) for PowerShell (course 10961) based on his (and Jeff’s) first “Lunches” book. I again was honored to be able to teach the first beta class, and the students left the class with an amazing ability to really use PowerShell to solve their everyday business problems.

It’s now a career dream to be able to deliver this same information – very fast-paced and specifically for the IT Pro – in a video series with the inventor of PowerShell, Distinguished Engineer Jeffrey Snover. In two events (each consisting of a full day) Jeffrey and I will take you through everything you need to know to be immediately effective (that’s one of Don’s signature design goals) with PowerShell, both in real-time and in building tools (cmdlets) for other admins.

You don’t want to miss this!

Knowledge is PowerShell,