• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar

Clatent

Technology | Fitness | Food

  • About
  • Resources
  • Contact

Automation

One-Liner Wednesday February 22, 2023

February 22, 2023 by ClaytonT Leave a Comment

Ever wanted a quick and easy way to see what operating systems all your computers are running to the detail of the version number? Then wanting to know the last time they logged on?

PowerShell provides a powerful and efficient way to perform this task. In this blog post, we will show you how to use a PowerShell one-liner to search for computers in a specific OU and view their name, operating system, OS version, and last time they logged in.

Searching for computers in a specific OU

You can start by searching for computers in a specific OU. The “Get-ADComputer” cmdlet can be used to retrieve information about computer objects in Active Directory. Here is an example command that retrieves all computers in the “Computers” OU:

Get-ADComputer -SearchBase "OU=Computers,DC=example,DC=com" -Filter * -Properties Name, OperatingSystem, OperatingSystemVersion, LastLogonDate

This command uses the “-SearchBase” parameter to specify the distinguished name of the search base where the search should be conducted. In this case, we are searching in the “Computers” OU of the “example.com” domain. You should replace this with the distinguished name of the OU you want to search in.

The “-Filter” parameter is used to retrieve all computer objects in the specified OU, and the “-Properties” parameter is used to specify the properties you want to retrieve. In this case, we are retrieving the “Name”, “OperatingSystem”, “OperatingSystemVersion”, and “LastLogonDate” properties.

Formatting the output

The output of the previous command is not very user-friendly, so we need to format it to make it easier to read. We can use the “Select-Object” cmdlet to select the properties we want to display and format the output using the “Format-Table” cmdlet. Here is the final PowerShell one-liner:

Get-ADComputer -SearchBase "OU=Computers,DC=example,DC=com" -Filter * -Properties Name, OperatingSystem, OperatingSystemVersion, LastLogonDate | Select-Object Name, OperatingSystem, OperatingSystemVersion, @{Name="LastLogonDate";Expression={[DateTime]::FromFileTime($_.LastLogonDate)}} | Format-Table -AutoSize

This command retrieves all computer objects in the specified OU and selects the “Name”, “OperatingSystem”, “OperatingSystemVersion”, and “LastLogonDate” properties. The “LastLogonDate” property is converted to a readable date format using the “FromFileTime” method of the “DateTime” class. Finally, the output is formatted using the “Format-Table” cmdlet to display the information in a table format. You could even change “Format-Table” and use “Out-GridView” to give you an excel like experience where you can filter and sort columns… and to make it even more advance if you are trying to remove or disable computers, you could use the Out-GridView with a “-PassThru” parameter then pipe it to a delete or disable. ***Make sure to use -WhatIf so you don’t by accident delete all of the computers that you searched for!

Conclusion

In this blog post, we have shown you how to use a PowerShell one-liner to search for computers in a specific OU in your Active Directory and view their name, operating system, OS version, and last time they logged in. This information can be very useful for managing your domain and keeping track of your computers. This can be used for reporting and for autoamating tasks that only pertain to certain versions of Windows OS. By using PowerShell, you can quickly and easily retrieve this information and format it in a way that is easy to read and understand while using it for automations.

Tagged With: AD, Automation, One Liner Wednesday, PowerShell, Reporting, Windows Server

One-Liner Wednesday February 8, 2023

February 8, 2023 by ClaytonT Leave a Comment

This week’s One-Liner is brought to you by no other than Steve Lee. I can’t take credit for it, but want to make sure others see it. The only caveat is that it needs to be run in an elevated session.

Invoke-Expression "& { $(Invoke-RestMethod 'https://aka.ms/install-powershell.ps1') } –useMSI -Quiet"

It does what you think it does… installs PowerShell 7, using the MSI and silently. I’ve used it before many times and works great. There are also many other switches you can which I’ve linked to the GitHub below.

A few are:
Daily
DoNotOverwrite
AddtoPath
Preview

Try it out, and let me know what you think!

GitHub:
One-Liner

Tagged With: Automation, One Liner Wednesday, PowerShell

Module Monday February 6, 2023

February 6, 2023 by ClaytonT 2 Comments

Monday, already? Yup, but at least you get a new Module Monday today. This is one is for anyone who does any broadcasting, whether live or pre recorded. I’ve barely even touched the surface of what you can do with it, but with this module you can really get your feet wet. To give you an idea, it has a command for every websocket request!

With that said, OBS-PowerShell is the module you need to download, either from the PowerShell Gallery or from James’ Github and I’ll have links below for each.

This does more than just push start and stop for you, you can see all available inputs, get all of your stats, and you can even set the input audio balance! With this module, I can’t do it justice, but as mentioned before if you do any broadcasting and use PowerShell, definitely check it out! Let me know how you find it useful. I’ll be doing a follow up on this module in the future when I have more hands on time with it and I’ll add your input too!

PowerShell Gallery:
OBS-PowerShell

GitHub:
OBS-PowerShell

Tagged With: Automation, Module Monday, PowerShell, Streaming

One-Liner Wednesday January 25, 2023

January 25, 2023 by ClaytonT Leave a Comment

Today’s one-liner is one that you or may not have to use a lot depending how your environment is setup and how you setup computers. Either way, its great to have it so you don’t have to go digging for it in the GUI. Ever had a time when you are trying to connect to a computer, and can’t? You make sure the computer is connected to the right wifi or that it is wired in, has the right IP address, and has internet… but nothing seems to work. Then you turn off your firewall and you can ping it… you know you can’t leave the firewall off all the time. What to do?

Set-NetFirewallRule -DisplayName "File and Printer Sharing (Echo Request - ICMPv4-In)" -Enabled True

There is your answer. That simple one line of code enables pinging without turning off your whole firewall. You can do this in group policy or add it to your golden image for imaging computers.

Hope this helps and saves time you prepping computers!

Tagged With: Automation, Firewall, One Liner Wednesday, PowerShell

Module Monday January 16, 2023

January 16, 2023 by ClaytonT Leave a Comment

It’s Monday, and today we have another module by Doug Finke. Have you been using ChatGPT? Have you been enjoying it? Tired of always having to login and have a web browser open to use it? Why not have it right in your editor?

Welcome PowerShellAI! It is exactly what you think… it is OpenAI right in your VSCode and/or PowerShel Terminal. I’ve been testing this and really like it and can’t wait to see what else Doug does with it. One of the features I like is that you can set how risky of a response you OpenAI to use, where 0 is no to little risk, or use 0.9 where you can allow it to be a bit more flexible with it’s response.

Test it out and let me know what you think!

PowerShell Gallery:
PowerShellAI 0.1.0

GitHub:
PowerShellAI

Tagged With: Automation, Module Monday, PowerShell

Read-Only Friday January 13, 2023

January 13, 2023 by ClaytonT 2 Comments

Today’s Read-Only Friday is about retiring/upgrading servers. Don’t worry no changing code today, but with Server 2012R2 going end of support Oct 10, 2023, I want to make sure you are aware and prepared to do it. By no means is this the definitive guide to do it, but hope this helps you create or improve your process for upgrading servers. Right now, I’d put a reminder in your calendar so you don’t forget and that you have enough time to take action on those servers.

I know it will depend greatly on what is on the server, but first thing before doing anything is making sure you have a valid backup. I’m not just talking about that your backup server of choice says it backed it up successfully, but actually restoring the server/files needed from the backup to ensure it works. We are decommissioning it for a reason, but while going through the process we want to make sure we have a backup just in case.

Next, I’d go through the server and make sure all services/software are documented as well as any important files. Even if you have documentation, I’d double check that all of it is correct, and that someone didn’t go out of scope and install something on it without documenting it. The last thing you need is when you shutdown the server or setup the replacement server that a department can’t do their work because the product they need isn’t online anymore.

A PowerShell one liner I’d recommend is “Get-WindowsFeature | Where installed” for one computer or you could run “Get-WindowsFeature -computername serv01,serv02 | Where installed” then you could pipe it to CSV or Excel to make it easier for documentation.

Then to get all programs installed

$InstalledSoftware = Get-ChildItem "HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall"

foreach($obj in $InstalledSoftware){write-host $obj.GetValue('DisplayName') -NoNewline; write-host " - " -NoNewline; write-host $obj.GetValue('DisplayVersion')}

This can be exported as well for easier documention as well.

Now that we know we have good back ups, we know what services/applications installed, and we did a once over for any out scope configs, I would ask your team to look over what you have to make sure nothing was missed. The more you do these, the less time it will take, but it’s always good to have a second set of eyes on it.

Great, with it having a second set of eyes on it, we can now build the new machine. Depending on your virtualization platform(Hoping you a test environment, if not look at AutomatedLabs), I’d create a PowerShell script to build the server, or if you have templates already, I’d use PowerShell to make the copy then configure IP and any one off applications and servers, as well as any files that would need to be on it. Make sure all windows updates are done to ensure none of them will break it. Once you have confirmed everything is working on the newer server os, you can now deploy it to production(Make sure to turn off the old one if it will cause issues). Before deploying it to production, I’d send out communication to users in case for some reason there is an issue, they will let you know right away or if there is anything they have to do on their side.

At this point I’d put all of the documentation for the new server together if you haven’t already which should be easy, as most of it is right in scripts. Once the new server has been working for a safe amount of time as it will depend on the importance of server, you can remove the old server and test server from your host(s).

I could definitely go in more depth on this, and if you have any questions on checklists or what to actually keep for documentation, let me know and I’d be glad to help out.

And yes, I know this is a Read-Only Friday topic, but most of the hard work is on the planning/documenting side which you can do on Read-Only Friday.

Tagged With: Automation, Documentation, EOL, PowerShell, Read-Only Friday, Upgrading, Windows Server

  • « Go to Previous Page
  • Page 1
  • Interim pages omitted …
  • Page 8
  • Page 9
  • Page 10
  • Page 11
  • Page 12
  • Go to Next Page »

Primary Sidebar

Clayton Tyger

Tech enthusiast dad who has lost 100lbs and now sometimes has crazy running/biking ideas. Read More…

Find Me On

  • Email
  • GitHub
  • Instagram
  • LinkedIn
  • Twitter

Recent Posts

  • Learning ValidateSet in PowerShell: Valid Values Only
  • Teams Chat and PowerShell – How to add value!
  • EntraFIDOFinder: New Web UI and Over 70 New Authenticators
  • January 19, 2026 Updates to EntraFIDOFinder
  • v0.0.20 EntraFIDOFinder is out

Categories

  • 365
  • Active Directory
  • AI
  • AzureAD
  • BlueSky
  • Cim
  • Dashboards
  • Documentation
  • Entra
  • Get-WMI
  • Learning
  • Module Monday
  • Nutanix
  • One Liner Wednesday
  • Passwords
  • PDF
  • Planner
  • PowerShell
  • Read-Only Friday
  • Reporting
  • Security
  • Uncategorized
  • Windows
  • WSUS

© 2026 Clatent