When you declare a parameter mandatory and the user does not specify it, PowerShell prompts the user for it. Another way of creating mandatory...
ps1
Displaying InputBox
To improve user-friendlyness, you could replace Read-Host by the following Show-InputBox function and get an inputbox dialog window: #requires...
Creating Simple Keylogger
By accessing the Windows low-level API functions, a script can constantly monitor the keyboard for keypresses and log these to a file. This...
Detecting Key Presses across Applications
By accessing the Windows low-level system calls, PowerShell can query the keyboard for pressed keys. The following example waits until the user...
Accessing API Functions and Logging Off
You may have heard about pInvoke.net, a site that documents internal Windows API signatures. Signatures describe low-level Windows API system calls....
Executing Code after Script Is Done
For monitoring purposes, it is often not known how long a script needs to run. So here, an endless loop is used. The script runs for as long as the...
Setting Permanent Environment Variables
When you set or change environment variables in PowerShell, this only affects the process set, so changes apply only to the current PowerShell...
Replacing Special Characters
Sometimes it is crucial to replace special characters in text before you can use it. For example, if you plan to create Active Directory accounts,...
Getting Airports and Weather Info near You
PowerShell can talk to web services, and there are some public web services that you can contact via internet. Here are two functions: Get-Airport...
Identifying Essential Add-Type Statement
When you access .NET types and objects directly in your PowerShell code, you must make sure that the appropriate .NET assemblies are loaded. If you...
Understanding the –f Operator
You may have come across the –f operator before and wondered what it does. It’s the format operator and provides an extremely easy way...
Creating Backup Copies of Many Files
PowerShell can quickly create backup files of your files. All you need to adjust is the type of files you want to backup, and the file extension you...
Piping Results Straight Into Office Word
With only a few lines of code you can implement a command called Out-OfficeWord. It takes the data you pipe into it and inserts them into a new Word...
Search WMI for Useful Information
WMI is a great source of information but it is not always easy to find out the names of valid WMI classes to query. Here is a little search tool: it...
Use a Grid View Window as a Universal Dialog
Out-GridView can be much more than just a window showing results. You can turn it into a pretty useful universal dialog. Let's assume you want...
Outputting File Sizes in Different Formats
When you store a number in a variable, you may want to display the number in different units. Bytes are very precise, but sometimes displaying the...
Converting Date/Time Formats
Here is a simple PowerShell filter that can convert any DateTime object into any date/time-format you like: #requires -Version 1 filter...
Waiting for Process Launch
PowerShell has a built-in support to wait until a process or many processes end: simply use Wait-Process. There is no support to do the opposite:...
Invoking Different Code Based on Parameter Value
Here is a simple concept using an action parameter with a number of choices. Each choice refers to a script block that would be executed then....
Finding Script Block Variables
Script blocks define a PowerShell code without executing it. The easiest way of defining script blocks is placing code into braces. Script blocks...
Getting Installed Software Remotely
In a previous tip we introduced the Get-Software function that was able to retrieve installed software from local computers. If you have enabled...
Reading Installed Software from Registry
Here is a very quick way of finding installed software. The Get-Software function reads both the 32- and 64-bit locations for software installed for...
Display Message Box Dialog
PowerShell is console-based, but sometimes it would be nice to add some simple dialogs. Here is a function called Show-MessageBox that can display...
Use Server-Side Filtering When Possible
When you retrieve information across a network, always make sure you use client-side techniques like Where-Object as a last resort. Server-side...