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...
Powershell
Showing Indeterminate Progress in Taskbar Buttons
Occasionally, you do not know the exact progress of your script but you’d still like to inform the user that your script is “busy”. If you run your...
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:...
Identifying Multi-Language Online Documents (Part 2)
How can you automatically check the supported languages for an online document? Provided the URL uses a language ID, it’s easy to create a list of...
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...
Creating New Code Signing Test Certificates
PowerShell comes with a cmdlet named New-SelfSignedCertificate which can create all kinds of self-signed test certificates. However, it is not...
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....
Using HTML to create PDF Reports (Part 3)
HTML can be a simple way of formatting data for output reports. In this last part we illustrate how you convert the final HTML report to PDF...
Using HTML to create PDF Reports (Part 1)
HTML can be a simple way of formatting data for output reports. In this 3-part series, we first illustrate how you compose HTML reports, then show a...
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...
Important Keyboard Shortcuts
Two of the most important keyboard shortcuts in any PowerShell environment – whether console, ISE, or VSCode – are TAB and CTRL+SPACE. TAB triggers...
Using Sysinternals Console Tools via PowerShell (Part 4)
In our previous tips we showed how you can use PowerShell to download, unblock, unzip and then run the Sysinternals console tools from...
Using Sysinternals Console Tools via PowerShell (Part 3)
In our previous tips we showed how you can use PowerShell to download, unblock, unzip and then run the Sysinternals console tools from PowerShell....
Using Sysinternals Console Tools via PowerShell (Part 2)
In our previous tip we used PowerShell to download and set up the Sysinternals suite of console commands. Here is what we did: $destinationZipPath =...
Outputting Color
Occasionally, PowerShell code is supposed to output warnings and reports, so colors can add more readability to it. Traditionally, PowerShell...