Skip to content
Menu
The Lonely Administrator
  • PowerShell Tips & Tricks
  • Books & Training
  • Essential PowerShell Learning Resources
  • Privacy Policy
  • About Me
The Lonely Administrator

Friday Fun Get Beer List

Posted on March 8, 2013February 21, 2014

beerWell, another Friday and what goes better with it than beer. Of course I should mix in a little PowerShell as well. I live in the Syracuse, NY area and we have a terrific local brewery, Middle Ages Brewing Company. Not only is there a tasting room, but I can also get growler refills. Middle Ages brews a number of beers throughout the year and beers available for growlers vary. Fortunately they post online what is currently available.

Manage and Report Active Directory, Exchange and Microsoft 365 with
ManageEngine ADManager Plus - Download Free Trial

Exclusive offer on ADManager Plus for US and UK regions. Claim now!

But I can't be bothered to open a web browser and visit their site everytime I want to see what they have. That's what PowerShell is for. Specifically PowerShell 3.0 and Invoke-Webrequest. With only a few lines of PowerShell, actually it could be done as a one-liner, I can get the list of beers available for growler refills. Let me break it down.

First, I'll grab the web page with Invoke-WebRequest

PS Scripts:\> $ma = Invoke-Webrequest http://middleagesbrewing.com/

Invoke-Webrequest "packages" it as a nice object.

invoke-webrequest-middleages

On the page, the growler refills have links pages for the respective beers. This is handy because I can get all the links from the object I just pulled down.

PS Scripts:\> $ma.links[-2]

innerHTML : <SPAN>Wailing Wench</SPAN>
innerText : Wailing Wench
outerHTML : <A href="/beers/wailing-wench"><SPAN>Wailing Wench</SPAN></A>
outerText : Wailing Wench
tagName   : A
href      : /beers/wailing-wench

Naturally there are other links as well, but after looking through them I realized all the ones I was interested in had /beers/ in the href property. Knowing that, I can filter.

PS Scripts:\> $ma.links | where {$_.href -match "/beers/"}

innerHTML : <SPAN>Double Wit</SPAN>
innerText : Double Wit
outerHTML : <A href="/beers/double-wit"><SPAN>Double Wit</SPAN></A>
outerText : Double Wit
tagName   : A
href      : /beers/double-wit

innerHTML : <SPAN>Druid Fluid</SPAN>
innerText : Druid Fluid
outerHTML : <A href="/beers/druid-fluid"><SPAN>Druid Fluid</SPAN></A>
outerText : Druid Fluid
tagName   : A
href      : /beers/druid-fluid
...

Excellent. All I need is to grab one of the text properties and I have my list.

PS Scripts:\> $ma.links | where {$_.href -match "/beers/"}  | select -expand InnerText
Double Wit
Druid Fluid
ImPaled Ale
Kilt Tilter
Middle Ages Pale Ale
Session IPA
Swallow Wit
The Duke of Winship
Tripel Crown
Wailing Wench

Perfect (and I'm getting a little thirsty). My script, such as it is comes down to two lines.

$ma = Invoke-Webrequest http://middleagesbrewing.com/
$ma.links | where {$_.href -match "/beers/"}  | select -expand InnerText

This could even be consolidated down to a one-liner:

((Invoke-Webrequest http://middleagesbrewing.com/).Links | where {$_.href -match "/beers/"}).InnerText

Although there's no practical reason to do so. If you are new to PowerShell that is a little more difficult to understand. Normally I prefer sending objects to the pipeline but all I really need to see are beer names so this works just fine for me.

I see they are filling growlers with the Duke of Winship porter, one of my faves, so I'd better wrap this up. Cheers!


Behind the PowerShell Pipeline

Share this:

  • Click to share on X (Opens in new window) X
  • Click to share on Facebook (Opens in new window) Facebook
  • Click to share on Mastodon (Opens in new window) Mastodon
  • Click to share on LinkedIn (Opens in new window) LinkedIn
  • Click to share on Pocket (Opens in new window) Pocket
  • Click to share on Reddit (Opens in new window) Reddit
  • Click to print (Opens in new window) Print
  • Click to email a link to a friend (Opens in new window) Email

Like this:

Like Loading...

Related

reports

Powered by Buttondown.

Join me on Mastodon

The PowerShell Practice Primer
Learn PowerShell in a Month of Lunches Fourth edition


Get More PowerShell Books

Other Online Content

github



PluralSightAuthor

Active Directory ADSI Automation Backup Books CIM CLI conferences console Friday Fun FridayFun Function functions Get-WMIObject GitHub hashtable HTML Hyper-V Iron Scripter ISE Measure-Object module modules MrRoboto new-object objects Out-Gridview Pipeline PowerShell PowerShell ISE Profile prompt Registry Regular Expressions remoting SAPIEN ScriptBlock Scripting Techmentor Training VBScript WMI WPF Write-Host xml

©2025 The Lonely Administrator | Powered by SuperbThemes!
%d