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...
Powershell
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...
Finding Service Privileges
Get-Service can provide basic information about Windows services but won’t list the required privileges. Here is a small PowerShell function...
Using Variable Breakpoints (Part 2)
In the previous tip we examined Set-PSBreakpoint to create dynamic variable breakpoints in PowerShell. We showed how a breakpoint can trigger when a...
Using Variable Breakpoints (Part 1)
For debugging, variable breakpoints can be of invaluable help. They break into the debugger once a variable changes. If you know that a variable...
Hiding Properties in Return Results
By default, PowerShell shrink-fits most objects and shows only the most important properties by default: PS C:\> Get-WmiObject -Class Win32_BIOS...
Locking Workstation
PowerShell can access low-level API functions by using C#-style signatures. This way, API functions are compiled in-memory and added as new types....
Command Discovery Unleashed (Part 2)
When you enter a command in PowerShell, the engine triggers three events to actually discover the command you want to execute. This gives you a...
Command Discovery Unleashed (Part 1)
Whenever you enter a command in PowerShell, a series of events takes place to figure out where the command is located. This starts with a...
Adding Numbers to a String (Part 2)
In the previous tip we illustrated a number of ways how to safely add variables to string content. Adding variables to double-quoted text can expose...
Adding Numbers to a String (Part 1)
Double-quoted strings can easily expand variables, however this concept is not foolproof: $id = 123 # this is the desired output: # Number is 123: #...
Get-PSCallStack and Debugging
In the previous tip we have used Get-PSCallStack to determine the “nest level” of code. Let’s today take a look at how this cmdlet...
Discovering Nesting Level
Get-PSCallStack returns a so-called “Call Stack” which – in its simplest form – tells you the nesting depth of your code:...
Super Simple Random Password Generator
Here is a super simple approach to create random passwords. The approach makes sure no ambiguous characters are used but does not care about other...
Preferring WLAN Connections
When you are connected both to a LAN and a WLAN, and would like to prefer one network over the other, you can adjust the network metric. The lower...
Adding Personal PowerShell Commands to the Context Menu
You can add personal context menu commands for file types like PowerShell files. These context menu commands appear when you right-click a .ps1...
Locking the Screen with PowerShell
Here is a PowerShell function called Lock-Screen that can lock the screen and prohibit user interaction. There can be a custom message, and the...
Blocking User Input
If a PowerShell script needs to perform critical steps, and user interaction must be prohibited, you can use API calls to temporarily disable all...
Passing Arguments to Encoded Commands
Encoding PowerShell code is a great way to run PowerShell code outside the PowerShell environment, i.e. in batch files. Here is some sample code...
Deleting Registry Keys that can’t be Deleted
Deleting registry keys is typically trivial and can be done with Remove-Item. However, every once in a while, you may come across registry keys that...
Repairing PowerShell Context Menus
When you right-click a PowerShell script in File Explorer, you typically find a context menu entry called “Run with PowerShell” which...
Launching PowerShell Scripts for Dummies
Assume you want to hand a PowerShell script to an unexperienced user. How can you reliably get that person to correctly launch your script file?...