PowerShell comes with a number of looping constructs. These looping constructs cannot stream, so you cannot pipe the results to other cmdlets and...
ps1
Marking Scripts for PowerShell Core or Windows PowerShell
As you probably know, there are two breeds of PowerShell: Windows PowerShell ships with Windows operating systems and is based on the full .NET...
Controlling Audio Volume and Mute Status
To adjust an audio volume and mute/unmute the speaker, PowerShell can use C# code and access API functions like this: Add-Type -TypeDefinition...
Checking for Bad (Insecure) Passwords (Part 2)
In the previous tip we explained how you can use web services to safely test passwords and find out whether they have been compromised before....
Checking for Bad (Insecure) Passwords (Part 1)
Complex passwords are not necessarily safe. For example, “P@ssw0rd” is a very complex password, however extremely insecure. That’s...
Specifying Bit Flags Smart
In the previous tip you have seen how you can enable all SSL security protocols in PowerShell to connect to web services and web sites:...
Using SSL/HTTPS from PowerShell
Depending on your PowerShell and .NET Framework version and update, the default security protocol for secure web connections may still be SSL3. You...
Splitting Texts by Fixed Width
Let’s assume you need to split a text using a fixed width. For example, if you needed the first 5 character of a text, plus the remainder, how...
Get Hashes from Texts
Before the advent of PowerShell 5 (and Get-FileHash), to calculate hashes for strings and files, you’d need to resort to pure .NET methods....
Creating Hashes from Text
A hash is a way to uniquely identify a text without exposing the actual text. Hashes are used to identify texts, find duplicate file content, and...
Pretty Out-GridView Dialog Boxes
When you pipe objects to Out-GridView, the cmdlet shows the default properties, so when you use a grid view window as a selection dialog, you have...
Redirecting PowerShell Output to GridView
When you output data in PowerShell, it gets silently piped to Out-Default and ends up as text in the console. By overriding Out-Default, you can...
Compare AD User
Did you ever want to compare the properties of ADUsers? Provided you have installed the RSAT tools, you can read individual AD users with...
Exporting and Importing Code-Signing Certificates
In the previous tip we explained how you can create self-signed code-signing certificates in Windows 10 and Server 2016 (and better). Today,...
Creating Code-Signing Certificates
Windows 10 and Server 2016 (and better) ship with an enhanced New-SelfSignedCert cmdlet that finally can create code-signing certificates. With...
Using Catalog Files to Maintain Folder Integrity
If you’d like to make sure a folder content stays untouched, you can use catalog files. A catalog file lists all folder content plus creates...
Finding PowerShell Named Pipes
Each PowerShell host running PowerShell 5 or better opens a “named pipe” that you can detect. The code below identifies these named...
Finding the Latest PowerShell 6 Download URL
PowerShell 6 is open-source and maintained in a public repository on GitHub. There are frequent releases. Here is a way how you can find out the...
Finding Latest PowerShell 6 Release (and Download URLs)
PowerShell 6 is open-source and maintained in a public repository on GitHub. There are frequent releases. If you don’t want to dig your way...
Finding Latest PowerShell 6 Release
PowerShell 6 is open-source, and there are frequently new releases available. You can always visit https://github.com/PowerShell/PowerShell/releases...
PowerShell ISE Module Browser
If you are using the built-in PowerShell ISE, you might find the “Module Browser Add-on” useful. It is fairly old and was published in...
Converting SecureString to String
Sometimes it can make sense to convert a SecureString back to a regular string, for example because you have used the shielded input provided by...
Real-Time Processing for Language Structures
In the previous tip we looked at queues and how they can search the entire file system: # create a new queue $dirs =...
Using a Queue instead of a Recursion
Rather than calling functions recursively, you may at times want to use a Queue object that you can load with fresh tasks while you are unloading...