Your MAPI client is the email client that by default is used with URLs like "mailto:". To find out if there is a MAPI client, and if so,...
ps1
Getting Arguments from Command Line
In a previous tip we illustrated how you can extract the command from a command line and strip all arguments. Today, you get a function that does...
Getting Executable from Command Line
Sometimes it becomes necessary to extract the command name from a command line. Here is a function that can do this: And this is the code: function...
Open MsgBox with Random Sound
You may have seen script code that opens a MsgBox dialog box. Today, you get a piece of code that opens a MsgBox and plays a random sound, adding...
Automatically Downloading Pictures via Google Picture Search
In a previous tip you learned how you can use Invoke-WebRequest to get image links from Google Image Search. Invoke-WebRequest can do better,...
Getting Picture URLs from Google Picture Search
Invoke-WebRequest is your friend whenever you want to download information from the Internet. You could, for example, send a search request to...
Finding Registered Event Sources
Each Windows log file has a list of registered event sources. To find out which event sources are registered to which event log, you can directly...
IntelliSense Trick to Show Variables
In the PowerShell ISE editor, when you enter a dollar sign, an IntelliSense menu opens and displays all variables that are currently defined. When...
Writing Events to Own Event Logs
Often, there is a need to log information when a script runs. Instead of writing log information to a text file that you would have to maintain and...
Logging All Errors
In a previous tip you have seen that cmdlet errors can only be caught by an error handler if the -ErrorAction is set to "Stop". Doing this...
Catching Non-Terminating Errors
Non-terminating errors are errors that are handled by a cmdlet internally. Most errors that can occur in cmdlets are non-terminating. You cannot...
Hiding Terminating Errors
Occasionally, you may have noticed that cmdlets throw errors although you specified "SilentlyContinue" as -ErrorAction. The -ErrorAction...
Getting Events From All Event Logs
Recently, a reader asked how to retrieve all events from all event logs from a local or remote system, and optionally save them to file. Here is a...
Running Background Jobs Efficiently
Using background jobs to run tasks concurrently often is not very efficient as you might have seen in a previous tip. Background job performance...
Parallel Processing in PowerShell
If a script needs some speed-up, you might find background jobs helpful. They can be used if a script does a number of things that also could run...
Converting Ticks into Real Date
Internally, Active Directory uses ticks (100 nanosecond units since 1601) to represent date and time. It has been hard in the past to convert these...
Logging Script Runtime
If you'd like to monitor how long a script takes to run, you could use Measure-Command, but this cmdlet is for diagnostic purposes only and...
Fixing Encoding for Excel CSV
When you save Microsoft Excel data as CSV, unfortunately the encoding does not match the default encoding used by Import-Csv. So when you import the...
Reading All Text
You can use Get-Content to read in any plain text file. However, Get-Content will return the file content line by line, and you get back a string...
Storing Secret Data
If you wanted to store sensitive data in a way that only you could retrieve it, you can use a funny approach: convert some plain text into a secure...
Using Encrypting File System (EFS) to Protect Passwords
If you absolutely need to hardcode passwords and other secrets into your scripts (which you should avoid for obvious reasons), then you might still...
Testing UNC Paths
Test-Path can test whether or not a given file or folder exists. This works fine for paths that use a drive letter, but can fail with pure UNC...
Enabling PowerShell Remoting
If you'd like to use PowerShell Remoting to execute commands and scripts on another machine, then you need to enable Remoting on the target side...
Enabling Classic Remoting
Many cmdlets have built-in remoting capabilities, for example Get-Service and Get-Process both have the parameter -ComputerName, and so does...