Blogs
by Thomas Lee on Saturday July 14th, 2018
Learn a simple technique for checking which of your modules from the PowerShell Gallery have an update.
by Lawrence Hwang on July 15th, 2018
In Windows PowerShell, there’s a limitation with Invoke-WebRequest and sites that only use TLS 1.2. This article covers a workaround for this problem. This issue is not present with Invoke-WebRequest in PowerShell Core.
This week we’re starting a new series of blog posts called (obviously) ‘What You Missed This Week in PowerShell!’. Our team of volunteers is scouring the web to find interesting articles, and forum posts related to our favourite topic! In the meantime, I want to give a ’thank you’ to everyone that pulled together to make this possible. Many thanks to Greg Tate, Evgeny Fedorov, Patrick Singletary, Brett Bunker, Mark Roloff, and Robin Dadswell for your hard work on getting this started!
-Will
We recently re-launched all of our free ebooks at https://leanpub.com/u/devopscollective. These books have all been authored by a variety of people, myself included, and most were originally authors in Word. As we translated them into Markdown (which is what Leanpub uses for its source), a few snafus tend to come up here and there.
We’re pleased to announce the re-launch of our Free eBook Store, now hosted exclusively on Leanpub. This re-launch includes 7 titles translated into Spanish by community contributor Alvaro Torres.
All eBooks are free, although you can also choose to pay any amount of $5 or more, which becomes a donation to The DevOps Collective, Inc. Leanpub offers a web-based reader and, if you “buy” the book, options to download in EPUB, MOBI, and PDF formats.
We used to dual-publish on Leanpub and GitBook; GitBook no longer supports ebook downloading (they’re online-only, now) and Leanpub now offers a free online reader mode, so we’re moving exclusively to Leanpub. Leanpub does offer a smartphone app as well, which you can use to manage your entire Leanpub library.
Don’t forget that all of the books’ “source” is hosted at GitHub in public open-source repositories. You’re welcome to fork the repos, submit pull requests, and so on. Note that we don’t provide technical support for the books at GitHub; please use the Forums for that. Further, while everyone appreciates suggestions for improving the books, what we really appreciate are community members who can fork the repo, implement their suggestions, and submit a pull request!
Please help us spread the word so more people can use these great, entirely-free resources!
I have managed to clear the regulatory hurdles and our OnRamp Scholarship is now open to applicants from outside the US. We will update the application materials and web pages as soon as possible, but there’s no need to wait to submit an application.
There are two caveats:
first, the option to request a laptop as part of your application is not applicable to international applicants at this time.
Second, our airfare limit is $600 USD. We cannot directly book airfare costing more. Unfortunately, we also cannot provide a partial cash reimbursement at this time. That means your air must be under $600 total (which I realize is difficult), or you need to be responsible for the entire airfare yourself. This is a bit of accounting oddness that we should be able to address in the future.
Full information and applications are at the link above.
We’re looking for someone who can publish a regular “What You Missed This Week” blog post on PowerShell.org each Friday (excepting the odd week off for vacations, of course).
This is meant just as a roundup of interesting posts from around the web; we know tons of people are blogging in their own spaces, and we’d like to call attention to some of the more noteworthy ones.
This isn’t any more complex than a brief blurb for each:
Back in… gosh, 2009, 2010 or so, an Arizona company named NetPro hosted PowerShell Deep Dive, part of their The Experts Conference event (the first was held in Las Vegas for just 50 people). After hosting two years (I think) though, NetPro was purchased by Quest Software, which moved to close down TEC. I may have those years slightly off, but that’s the general sequence.
In 2012, myself, Jeff Hicks, Richard Siddaway, Jason Helmick, and Kirk Munro had formed PowerShell.org, attempting to make good on the basically-defunct PowerShellCommunity.org that I’d started and that Quest now basically owned (and was shutting down).
In August 2012 Jason and I were out in Redmond for a TechMentor conference, and…

Erin Chapple and Kenneth Hansen, who were running the PowerShell team at the time, asked us over to building 43 for lunch one day. They told us that community engagement was huge for them–they needed to know how people were using their product, and what they needed to focus on. They got plenty of engagement at TechEd events, they said, but it was largely beginners; they needed the Deep Dive, or something like it, to stay in touch with hardcore users.
In April 2013, the first PowerShell Summit was held.
“We can’t give you any money, though,” Kenneth said. And for good reason: they wanted an event that could sustain itself, so that when Microsoft inevitably reorganized and got distracted, the event wouldn’t die. To help, they volunteered to get us space on-campus, so our first event was in conference rooms, and they helped guarantee the food deposits. That helped give us a tiny financial pad and some experience, so in 2014 when we moved to Meydenbauer Center, we weren’t a brand-new event with an inexperienced team.
Today, Summit is formally owned by a 501(c)(3) nonprofit, and venue and food deposits no longer have to go on my personal Amex ;). We’ve built enough operating margin that Summit can pay its own deposits until registrations start rolling in, and the event is essentially self-sustaining–we don’t even rely on corporate sponsors, although we’re very happy to have them when we can. We’ve held six events in the US, and two in Europe, which led to the launch of PSConf.eu a few years back.
Jason ran across this page in his journal last night and sent the photo, and with his permission I thought it would be a fun piece of community history to share.
We need your help.
As you may have heard, we’re launching a new “OnRamp” track at PowerShell + DevOps Global Summit 2019. Limited to 40 students, this will be a hands-on class designed to bootstrap someone into the technology and our community.
There’s a whole brochure about it!
We’re also offering a number of free-ride scholarships designed to cover admission, air, and hotel, to help increase the diversity of our field and community right at the top of the funnel. Half of our scholarships will be awarded to individuals from groups that are traditionally underrepresented in IT, and that’s where we need your help.
We need to get the word out to potential applicants so that they know to apply!
And we’re back!
Ok, so in the last blog we began a conversation about delegates and using LINQ in PowerShell. In today’s post, I’m going to give an example of how it can be incredibly useful. Let’s talk about Joins.
Joins
In my line of work, I’m constantly running into the need to combine datasets from multiple sources that relate to each other and pull out some specific properties. Say you have two internal services, one which is used to track production status and another which is used to monitor whether machines are online. To demonstrate this, let’s initialize some mock data once again.
Greetings PowerShellers!
Lately, I’ve been itching to write something up on Microsoft’s Language-Integrated Query (LINQ). You’ve likely encountered it if you’ve done any development in C#. LINQ is an incredibly powerful querying tool for performing look-ups, joins, ordering, and other common tasks on large data sets. We have a few similar cmdlets built into PowerShell, but other than the ‘.Where()’ method on collection objects nothing that comes close to the speed at which LINQ operates.
To dig into this topic, we’re going to have to do a quick high level overview of a couple of other .NET staples often encountered in the C# world. You see, unlike most .NET methods which accept object types like integers, strings, and the like, LINQ uses static extension methods which only accept delegate object types.
What are delegates? In application development, there is an occasional need for objects within memory to communicate with each other for things such as “button click events.” To address this, the Windows API uses function pointers to create callback functions which then report back to other functions in your applications. Within the .Net Framework, these are called delegates.
Delegates are objects that point to another method, or possibly many methods, by storing three key pieces of information: the address of the method on which it makes calls, the parameters (if any) of this method, and the return type (if any) of this method. With this information, a delegate object is able to invoke these methods dynamically at runtime, either synchronously or asynchronously. With this information, a delegate object is able to invoke these methods dynamically at runtime, either synchronously or asynchronously.
A simple example of this in C# looks like this: