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

Clatent

Technology | Fitness | Food

  • About
  • Resources
  • Contact

PowerShell

One-Liner Wednesday January 18, 2023

January 18, 2023 by ClaytonT 2 Comments

Do you use 365? Ever needed a quick list of all your users and their mailbox size? What about having it nicely formatted? Or do you only want to see a certain size mailbox? This quick one-liner is a good starting point.

Get-EXOMailbox -ResultSize Unlimited | Get-EXOMailboxStatistics | Select DisplayName, ItemCount, TotalItemSize | Sort-Object TotalItemSize -Descending | Export-Excel -Path C:\scripts\MailboxSizes.xlsx -AutoSize

What this does is uses the current way to get a 365 mailbox(Get-mailbox is deprecated), grabs all the mailboxes, selects only the Display name, amount of emails, and total size of their mailbox. It will then put the largest mailbox at the top and smallest at the bottom. After all of that, it exports it to an excel file that you can manipulate how you like. If you haven’t already used Doug Finke’s ImportExcel module, I’d recommend it to get creative with your formatting without ever opening Excel to format. You could add it so all mailboxes over a certain size are a certain color.

Hope this helps let me know if you expand on this even if its not a one liner, I’d love to see!

Tagged With: 365, Exchange, One Liner Wednesday, PowerShell, Reporting

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

One-Liner Wednesday January 11, 2023

January 11, 2023 by ClaytonT 2 Comments

It’s Wednesday already, is that good or bad for you? Hoping it’s a good thing, and hoping todays one-liner makes it even better.

$Path = $env:TEMP; $Installer = 'chrome_installer.exe'; Invoke-WebRequest -Uri 'http://dl.google.com/chrome/install/375.126/chrome_installer.exe' -OutFile $Path\$Installer; Start-Process -FilePath $Path\$Installer -Args '/silent /install' -Verb RunAs -Wait; Remove-Item -Path $Path\$Installer

What this one-liner will do is go out and fetch chrome and silently install or update it. Then it will delete the installer after it has been installed. You could add lines for logging in case you had other software that you wanted to install after, but I feel this is a great foundation if you’ve never done it before. If you start adding logging and other features(ie. confirming it has installed), I’d definitely take it out of the one-liner format for ease of reading/troubleshooting unless for some reason you need to keep it as a one-liner.

You can do this with many applications, you just have to make sure the URI and switches(Args) are correct.

Tagged With: App Deployment, Applications, One Liner Wednesday, PowerShell

Module Monday January 9, 2023

January 9, 2023 by ClaytonT Leave a Comment

It’s another Module Monday, but this time it isn’t really a module, but a script, that I think in the future could be turned into a module with even more functionality. I came across this script when I was looking for a quick way to download Window ISOs easily. I mean, who isn’t tired of going through all the clicks just to get a Window’s ISO from Microsoft?

This script finds Windows 11 ISOs and goes all the way back to Windows 7, but hoping you don’t need those for your own sanity. It does only cover home, business, and education, but that is becauase those are the most common.

It’s so nice just type in .\fido.ps1 win 11 -rel latest and this will download the latest version of Windows 11 for you? Why not put it in a scheduled task, so you don’t have to worry about downloading the latest version? Or if you or someone on your team needs a certain version you can just type in -win 10 -rel 21H1 and you know you have the right one? It also downloads very quickly as well.

Hope this saves you as much time as it has for me!

GitHub:
Fido

Tagged With: Automation, ISO, Module Monday, PowerShell, Windows

One-Liner Wednesday January 4, 2023

January 4, 2023 by ClaytonT Leave a Comment

Today’s One-Liner Wednesday is one that is overlooked by many, but is very useful. It’s one of the basics that everyone should know or use. I’ll show you a few different options of it as a reminder for some and new knowledge for others.

Get-Help ModuleName -Online

This will give you a fully searchable web browser window for the help documentation of that module. This has helped me many times instead of trying to use the console window then all of the code you were working on is up above.

Get-Help ModuleName -ShowWindow

Does the same but opens it up in a different window that is searchable as well except it doesn’t support provider help.

Get-Help ModuleName -Examples

You would run this if you just wanted to see the examples for this module, and didn’t want to see anything else. You can do this for each of the help parameters as well if you just want one section of the help.

Get-Help -Name sql

This will search all the help articles and return any with the word SQL in it. You can use wildcards in this as well.

Get-Help about_*

This is another great one, this allows you to see all available conceptual articles, then you can pick which one you want. You can use wild cards on this as well to filter the results to more targeted information. Did you know there is an article for automatedlab_office ? Check it out and see!

Hope you found this helpful and be sure to check more out on get-help below as there is so much more it can do.

Microsoft Learn:
Get-Help

Tagged With: Help, One Liner Wednesday, PowerShell

  • « Go to Previous Page
  • Page 1
  • Interim pages omitted …
  • Page 11
  • Page 12
  • Page 13
  • Page 14
  • Page 15
  • Interim pages omitted …
  • Page 19
  • 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