Sign in

Griff Barker

@griff.systems
332 followers 601 following 1.8K posts
PostsRepliesMedia
Griff Barker @griff.systems · 01/10/2026
Today I realized that for ~20 years I've been saying the name of this location in Old School RuneScape incorrectly... "BurthROpe" vs. "BurthORpe" Huh.
A screenshot of the Old School RuneScape map showing "Burthorpe".
100
Griff Barker @griff.systems · 18/07/2026
✅ loveable chaos achieved 1 y/o Corgi-Aussie mix (left) 3 y/o Corgi-Chihuahua mix (right) It's so fun when they get rambunctious with each other!
two mixed breed Corgis laying on a pile of blankets near a window
140
Griff Barker @griff.systems · 25/06/2026
Had a visitor on hole #18 this evening 🦌⛳
A doe near the cart path of a golf course fairway dotted with trees
010
Griff Barker @griff.systems · 24/06/2026
Pre-ordered the Clicks Communicator today. Very excited for these to ship in Q4!
screenshot of the Clicks Communicator, a Blackberry-alike smartphone with a full physical keyboard and square touchscreen.
110
Griff Barker @griff.systems · 22/06/2026
If someone were looking to get me a birthday gift this year, I wear a size 1974 Porsche 914.
a bronze colored 1974 Porsche 914.
020
Griff Barker @griff.systems · 28/05/2026
Returned to tinkering around with polyPoSh again this evening. v1.1.0 is available now on GitHub. Improved support for PowerShell installation on various Linux distributions and architectures, along with adding support for macOS. 🔗 github.com/griffeth-bar...
polyPoSh logo featuring a hexagon with terminal icon, configuration gear icon, server icon, followed by lettermark; the image is multi-colored using primary and secondary colors in the same scheme as Microsoft products.
020
Griff Barker @griff.systems · 23/05/2026
Fish and chips in a flat takeaway box
000
Griff Barker @griff.systems · 23/05/2026
There have absolutely never been any mixed messages being sent whatsoever by software.
A Windows XP pop-up window saying that a task failed successfully.
010
Griff Barker @griff.systems · 18/05/2026
yes, yes, very good, join us.
screenshot of a macos desktop with a ghostty terminal displaying neofetch information and the output of $PSVersionTable in PowerShel.
120
Griff Barker @griff.systems · 17/05/2026
It's true 😂 these are our two Corgi mixes and depending on the angle you look at them they're very goofy. Sometimes they're a Corgi in a trenchcoat, and sometimes they look nothing like Corgis. One is Australian Shepard Corgi and the other is Chihuahua Corgi.
black and white photo of an Australian shepherd corgi mixed breed dog laying on a couch.black and white photo of a chihuahua corgi mixed breed dog laying on a couch.
010
Griff Barker @griff.systems · 27/04/2026
Sample output
sample output
000
Griff Barker @griff.systems · 27/04/2026
True story. (copy/pasteable code in alt text)
# assumes you have employees.csv in your present working directory
$newReport = Import-Csv -Path .\employees.csv | ForEach-Object {
	$searchName = $_.Name
    $adObject = Get-ADUser -Filter { Name -eq $searchName } -Properties Title, Department
    
    [PSCustomObject]@{
    	Name		= $_.Name
        Email		= $_.Email
        Title		= $adObject.Title
        Department	= $adObject.Department
    }
}
$newReport | Export-Csv -Path .\employees-new.csv -NoTypeInformation -Force
300
Griff Barker @griff.systems · 02/04/2026
Pick your topic. If the shoe fits! It's the same circle.
Venn diagram with circles so closely overlapping that they are functionally the same, showing that people who don't understand a specific thing are basically the same people who crash out about a specific thing.
000
Griff Barker @griff.systems · 12/03/2026
Car sales man meme. Top text: "some poor VM". Bottom text: "You can fit so many winget packages in this bad boy"
010
Griff Barker @griff.systems · 12/03/2026
Hm, that's an interesting one. For non-ms-store apps I don't know of a way that doesn't involve actually downloading at least a little bit the installer executable. Which I'm certain is a no-go at that scale. But I'm far from the most knowledgeable person on this.
$packageName = "Microsoft.VisualStudioCode"
$url = (winget show $packageName | Select-String 'Installer URL:\s*(http\S+)').Matches.Groups[1].Value

$tmpExe = "$env:TEMP\winget_temp.exe"
$iconOut = "$env:TEMP\$packageName.png"

Invoke-WebRequest -Uri $url -OutFile $tmpExe -Headers @{ "Range" = "bytes=0-3145728" }
Add-Type -AssemblyName System.Drawing
[System.Drawing.Icon]::ExtractAssociatedIcon($tmpExe).ToBitmap().Save($iconOut)

Remove-Item $tmpExe

Write-Output $iconOut
210
Griff Barker @griff.systems · 12/03/2026
v happy corgi girl at the park today (she doesn't care about me or the camera...just the ball in my hand)
a tri-color corgi-aussie mixed breed dog sits with one paw raised on park grass.
010
Griff Barker @griff.systems · 29/01/2026
Yeah, that functionality is actually the next icon to the right. Icon: Play button Hotkey: F5 Behavior: Runs entire script Icon: Play button over piece of paper Hotkey: F8 Behavior: Runs selected code
Windows PowerShell ISE
Icon: Play button over piece of paper
Hotkey: F8
Behavior: Runs selected codeWindows PowerShell ISE
Icon: Play button
Hotkey: F5
Behavior: Runs entire script
220
Griff Barker @griff.systems · 22/01/2026
Feels like with stuff like this, it's always dependencies. There are definitely modules I wish would support PowerShell 7.x -- give us the option of that sweet, sweet parallel operations support!
"Important: The modules described in this document use .NET Framework. This makes it incompatible with PowerShell 6.0 and later, which use .NET Core."
010
Griff Barker @griff.systems · 22/01/2026
Ever needed to know how many users from various domains are in an Exchange/Online distribution group? Here's a little one-liner to show you just that. #PowerShell #ExchangeServer #ExchangeOnline
get-distributiongroupmember -id 'group name' | % {$_.primarysmtpaddress.split('@')[1]} | group

# Sample Output
#
# Count Name                      Group
# ----- ----                      -----
#     2 adomain.tld               {adomain.tld, adomain.tld}
#   182 bdomain.tld               {bdomain.tld, bdomain.tld, bdomain.tld, bdomain.tld…}
#    11 cdomain.tld               {cdomain.tld, cdomain.tld, cdomain.tld, cdomain.tld…}
020
Griff Barker @griff.systems · 16/01/2026
It's hy-time I played some #Hytale! So glad y'all are BACK @hytale.bsky.social
screenshot of the video game Hytale's main menu including the game's logo and my avatar.
000
Griff Barker @griff.systems · 13/01/2026
Have you tried it as suggested?
010
Griff Barker @griff.systems · 13/01/2026
In this image I have a function that (1) declares an ArrayList, (2) adds data to that ArrayList, (3) returns a single ArrayList with proof that it is an ArrayList.
>> function myFunc {
>     param(
>         $MyData
>     )
>
>     begin {
>         # declare arrayList
>         $list = [System.Collections.ArrayList]::new()
>
>         # putting static data in that arrayList
>         [void]$list.Add('ExistingItem1')
>         [void]$list.Add('ExistingItem2')
>         [void]$list.Add('ExistingItem3')
>     }
>     process {
>         # putting user-provided data in that arrayList
>         [void]$list.Add($MyData)
>     }
>     end {
>         # returning that arraylist using the unary array expression
>         return ,$list
>     }
> }
>> $test = myFunc -MyData 'AddedItem1'
>> $test
ExistingItem1
ExistingItem2
ExistingItem3
AddedItem1
>> $test.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     ArrayList                                System.Object
100
Griff Barker @griff.systems · 13/01/2026
Yep! James is more an authority than I, by an eternally long shot, but I can confirm this most certainly works. Breaks the way many folks who live in PowerShell expect functions to behave (including me...), but definitely works.
function myFunc {

     define a listArray of integers
    [collections.arrayList]$array = 1..10
    
     use the prepended comma to emit the entire  listArray as
     # the object instead streaming the integers themselves
     # to the pipeline
     ,$array
 }
 (myFunc).GetType()
210
Griff Barker @griff.systems · 12/01/2026
Last week I messed about with creating a simple admin tool launcher in PowerShell. ⚙️🛠️📜 #PowerShell #WindowsPresentationFramework
A screenshot of a Windows application containing three columns of different admin-related tools such as utility snap-ins such as certificate manager, control panel settings such as windows firewall, and obscure/more specific settings from the "God Mode" options in Windows. The window has a filter bar to search for tools as well as a context indicator showing what user the app is running as, along with buttons to launch the selected tool, launch a powershell session as a specific user, or exist the application. The GUI is built using WindowsPresentationFramework and XAML.
020
Griff Barker @griff.systems · 06/01/2026
may i offer you some corgis in these trying times
two mixed-breed corgis sitting together on a couch.
0181
Griff Barker @griff.systems · 05/01/2026
I mean, if we want to joke about verbosity, PowerShell actually does it with fewer characters: ```powershell ni abc.py ``` `ni` is an alias of `New-Item` and since File is the default item type, you don't need to specify it. That said, no need to "bash" (lol) any language. There's room for both!
140
Griff Barker @griff.systems · 05/01/2026
Yet another basic service manager for Windows, written in PowerShell. This is very rough and will need more attention from me down the road at some point. github.com/griffeth-bar... #PowerShell #MicrosoftWindows #WindowsServer
"google seach - help i accidentally" meme template with "made a service manager in powershell" as the inserted meme text
110
Griff Barker @griff.systems · 03/01/2026
I'll take it!
000
Griff Barker @griff.systems · 29/12/2025
visual difference
100
Griff Barker @griff.systems · 11/12/2025
Quick checking HSTS header for a website in PowerShell: ```powershell (iwr bsky.app -useb).headers['strict-transport-security'] # Sample Output # max-age=31536000; includeSubdomains ```
```powershell
(iwr https://bsky.app/ -useb).headers['strict-transport-security']

# Sample Output
# max-age=31536000; includeSubdomains
```
010
Griff Barker @griff.systems · 10/12/2025
This isn't actually what I was doing, but an illustrative example to show how joining an array of strings for your LDAP Filter can make it just more readable and maintanable.
Screenshot of demonstrative PowerShell code:

```powershell
# ONE-LINER ---------------------------------------------------------------------------------------
Get-ADUser -LDAPFilter "(&(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(|(memberOf=CN=GroupName,OU=Groups,DC=example,DC=com)(extensionAttribute1=SYNC))(!(|(cn=*svc*)(cn=*service*)(description=*DoNotSync*))))"


# JOINING ARRAY OF STRINGS ------------------------------------------------------------------------
$ldapFilter = @(
    "(&",
    "(objectCategory=person)",                                 # users          
    "(objectClass=user)",                                      # users
    "(!(userAccountControl:1.2.840.113556.1.4.803:=2))",       # enabled users
    "(|(memberOf=CN=GroupName,OU=Groups,DC=example,DC=com)",   # in GroupName group
    "(extensionAttribute1=SYNC))",                             # with extensionAttribute1 value "SYNC"
    "(!(|(cn=*svc*)(cn=*service*)(description=*DoNotSync*)))", # manual exclusions
    ")"
) -join ''

Get-ADUser -LDAPFilter $ldapFilter
```
130
Griff Barker @griff.systems · 27/11/2025
Had a cozy #Thanksgiving morning with both #Corgi pups lounging on my lap (feat. really wide camera angle). No complaints here!
000
Griff Barker @griff.systems · 22/11/2025
MicroITX build in a Fractal Terra case with an AMD Ryzen 7 5700X, AMD Radeon RX 7800 XT, 64 GB RAM, and a few TB of NVMe SSD storage. And the PlayStation 5 runs Orbis OS, based on FreeBSD not Linux 😉 though a PlayStation running something other than Orbis OS is definitely a cool thought.
2100
Griff Barker @griff.systems · 22/11/2025
Some of us are running PowerShell on our Linux machines. There are dozens of us!
5410
Griff Barker @griff.systems · 22/11/2025
Finally, I tried calling .NET directly: ```powershell [System.IO.Compression.ZipFile]::ExtractToDirectory($path, $destPath) ``` This took 22s, which was another slight improvement.
100
Griff Barker @griff.systems · 22/11/2025
Next, the same command but temporarily disabling the live progress bar: ```powershell $progressPreference = 'SilentlyContinue' Expand-Archive -Path $path -DestinationPath $destPath $progressPreference = 'Continue' ``` This took around 25s -- much faster! This is where the bulk of time is wasted.
120
Griff Barker @griff.systems · 22/11/2025
First, just regular. ```powershell Expand-Archive -Path $path -DestinationPath $destPath ``` It took around 1m 8s.
100
Griff Barker @griff.systems · 19/11/2025
Well would ya look at that. I didn't realize the COM object for it was still hanging around. #InternetExplorer #Windows #PowerShell
A screenshot of a Windows Sandbox instance. Within it is a Windows Terminal session where the command `(New-Object -COMObject InternetExplorer.Application).Visible = $true` has been run and an Internet Explorer window has opened in the foreground. The bsky.app URL is in the address bar and the Bluesky logo appears centered on the webpage.
030
Griff Barker @griff.systems · 18/11/2025
Nah, that's completely reasonable. There are plenty of well-known orgs with process and systems issues that allow stuff like that to happen. With all the complexity of technology and such, people and process are somehow always the most difficult part to get completely right.
000
Griff Barker @griff.systems · 18/11/2025
Feels pretty good to me! I'm using the powershell-bin package from AUR which is currently at v7.5.3 on Garuda Linux. I haven't come across any major issues yet. learn.microsoft.com/en-us/powers... It's worth at least trying should you feel so inclined.
010
Griff Barker @griff.systems · 18/11/2025
Yeah, the form factor can be extremely limiting for higher end builds. Luckily my daily driver is low powered (only a 5700X) enough to not need a secondary, but strong enough for what I do. Built this little guy 3 months ago and am loving the smaller form factor!
A jade green and wood paneled mini-ITX computer case (Fractal Terra) sitting on a wooden desktop with plants and film cameras surrounding it.
020
Griff Barker @griff.systems · 17/11/2025
There are certainly those of us out there on Linux using PowerShell!
160
Griff Barker @griff.systems · 17/11/2025
something something [powershell.joke]::new()
021
Griff Barker @griff.systems · 12/11/2025
Ever considered keeping tabs on your #powershell profile to make sure no unexpected changes were made to it? Try PSProfileWatcher! v0.1.1 is available now. 🔗 Blog Post: griff.systems/posts/psprof... 🔗 PowerShell Gallery: www.powershellgallery.com/packages/PSP... 🔗 GitHub: github.com/griffeth-bar...
110
Griff Barker @griff.systems · 11/11/2025
Hm. Rest in peace, friend.
000
Griff Barker @griff.systems · 11/11/2025
You can usually just pipe its standard output to Out-File if you're just dealing with strings. ```powershell Whatever-YoureDoing | Out-File -Path /path/to/file -Force ``` Hopefully that is helpful!
screenshot of a powershell terminal session demonstrating how to pipe standard output from one cmdlet into Out-File to save the output of the cmdlet to a file.

Get-Package
Get-Package | Out-File -Path packages.txt
Get-ChildItem
Get-Content packages.txt
200
Griff Barker @griff.systems · 11/11/2025
oh puhleeeease #corgi
A fawn and white colored Corgi-Chihuahua mixed breed dog sleeping nestled cozily into a white, brown, and gray mushroom-patterened blanket with one pay extended toward the camera.
090
Griff Barker @griff.systems · 10/11/2025
3 days after the guys start a new hardcore #WorldOfWarcraft run 😂
Screenshot of discord text channel where someone comically denies that they lost their hardcore world of warcraft character.
000
Griff Barker @griff.systems · 31/10/2025
Very short and simple post from my poking about #sqlite and #powershell yesterday. Programmatic SQLite Queries in PowerShell 🔗 blog.griff.systems/published/20...
A logo containing iconography of a computer command line, a database, and a database view.
050
Griff Barker @griff.systems · 24/10/2025
Nice post, Harm! `Get-Random` is fun! It's what I use to roll polyhedral dice using PowerShell in `Invoke-DiceRoll`. gist.github.com/griffeth-bar...
>> Invoke-DiceRoll -D20 1

Die Unit RollValue
--- ---- ---------
d20    1        19

>> Invoke-DiceRoll -D6 4

Die Unit RollValue
--- ---- ---------
d6     1         2
d6     2         2
d6     3         4
d6     4         6

>> Invoke-DiceRoll -D6 4 -D4 1

Die Unit RollValue
--- ---- ---------
d4     1         3
d6     1         1
d6     2         3
d6     3         2
d6     4         6
220