powertips

Checking Battery Wear and Quality

If you run a laptop you can easily ask WMI for battery status such as charging status. With a little bit more work, though, you can also check the...

Using Enums to Decipher Code IDs

WMI is a great and simple way of gathering information about computers. For example, it’s a snap to determine the type of computer you are on: $info...

Dumping Edge Cookies

If you’d like to find out (or document) the website cookies stored by the Edge browser, PowerShell can dump that information for you. The cookie...

Investigating PowerShell Command Results

When you run into new PowerShell commands, it’s always a good idea to get familiar with the result objects. When you simply run a PowerShell command...

Querying Advanced Printer Info via SNMP

Many network printer support SNMP to query information about the device, i.e. its serial number, the status and paper sizes of installed trays, or...

Custom Action for Unknown Commands

Whenever you enter a command name that cannot be found by PowerShell, it can extend the command search by custom actions that you define. Here is a...

Managing File Shares

The Windows operating system ships with the “Storage” PowerShell module which can be used both from Windows PowerShell and PowerShell 7. One of the...

Showing Warning State in Taskbar Button

When your script needs attention, i.e. asking for user input, let’s turn its taskbar button in the Windows taskbar orange so the user immediately...

Showing Error State in Taskbar Button

When your script runs into an error, wouldn’t it be nice if the error state could be visually communicated via taskbar button? If the taskbar button...

Showing Progress in Taskbar Buttons

If you run your PowerShell scripts on Windows, you can use the taskbar button as a progress indicator. All you need is install this module:...

Careful with Arrays

Careful with Arrays With PowerShell you never know whether a cmdlet returns an array or a single object. That’s because PowerShell automatically...

Loading PFX Certificate Unattendedly

PowerShell comes with a cmdlet named Get-PfxCertificate that you can use to load a certificate plus private key into memory. However, if the...

Get Volume IDs (Part 2)

In Windows 10 and better, you can use Get-Volume to get volume IDs and other information about your drives: PS> Get-Volume DriveLetter...

Get Volume IDs (Part 1)

You can query WMI to get a list of your drives volume IDs like so: Get-CimInstance -ClassName Win32_Volume | Select-Object -Property DriveLetter,...

Asking for Masked Input (Part 2)

Never ever use plain-text input for secrets and passwords – the text entered by the user may be logged and compromised. Always use a masked input....

Asking for Masked Input (Part 1)

Never ever use plain-text input for secrets and passwords – the text entered by the user may be logged and compromised. Always use a masked input....

Accessing Windows Credential Manager

If you need to access credentials (saved passwords) stored by the Windows Credential Manager, the “CredentialManager” module may be helpful for you....

Take Advantage of Your Profile

When PowerShell launches, it automatically looks for a special autostart script. It does not exist by default and is different for each PowerShell...

Beware of -match

The -match operator is frequently used in scripts however not everyone seems to understand how it really works. It can be a really dangerous filter...

Avoid Add-Member (Part 3)

In the previous tip we looked at a number of clever alternatives to avoid Add-Member when creating your own new objects. While using hash tables to...

Avoid Add-Member (Part 2)

In the previous tip we looked at creating simple data objects, and it became evident that instead of using Add-Member, you can cast a hash table to...

Avoid Add-Member (Part 1)

Often the cmdlet Add-Member is used to create simple objects like this: $user = New-Object -TypeName psobject | Add-Member -MemberType NoteProperty...