To quickly compare folder content and find out files that exist only in one of two folders, try this example: $list1 = Get-ChildItem...
ps1
Encoded Passwords
If you must put a credential object in your script, here is a way how you can convert a secure string into encrypted text: $password = Read-Host...
Find All Active Drive Letters
To quickly get a list of all drive letters in use, try this: #requires -Version 1 [Environment]::GetLogicalDrives() The result is a list of all...
Encrypting Text Information Using Passphrase
PowerShell 3.0 and later In a previous tip we explained how you can use the Windows product ID stored in the Windows Registry to encrypt some text...
Encrypting Information with Windows ProductID
PowerShell 3.0 and later To store secret information, you can use a SecureString object and save it to disk. PowerShell automatically takes the user...
Finding Exchange Mailboxes
Microsoft Exchange 2013 To find the number of mailboxes, simply use the Exchange cmdlets and have Measure-Object count the results: Get-Mailbox...
Clever Parameter Validation
PowerShell 2.0 and later When you create PowerShell functions with parameters, make sure you tell PowerShell what kind of values the parameter...
Discovering High Impact Cmdlets
All Versions Cmdlets can declare how severe their impact is. Typically, cmdlets that make changes to the system that cannot be undone will have an...
ISE Auto-Completion Trick
PowerShell 3.0 ISE and later When you want to select the information returned by a cmdlet, you typically use Select-Object: Get-Process |...
Accessing Non-Microsoft LDAP Servers
All Versions There are free Active Directory cmdlets from Microsoft (part of the RSAT tools) and Dell (Quest). They take the complexity out of...
Finding Read-Only and Constant Variables
All PowerShell versions Some variables are protected and cannot be changed. To identify these, take a look at this line: Get-Variable | Where-Object...
Read-Only and Strongly Typed Variables
All PowerShell versions To make PowerShell scripts more robust, you can code a lot of requirements right into your script variables. When you do...
Using Constants
All PowerShell versions Variables in PowerShell are volatile. You can overwrite and delete them – unless you create constants. Constants can...
Including Resources with Your Scripts
PowerShell 3.0 and later If your script needs additional resources, like text lists of server names, or picture files, or anything else, then make...
Using “more” in the PowerShell ISE
PowerShell ISE In the PowerShell console, you can pipe commands to the old-fashioned “more.com”, or better yet, to Out-Host...
Read User Profiles from Registry
All versions To find out which users have a (local) user profile on your machine, and where this profile is located, try this snippet: $path =...
Reading Associated File Extensions from Registry (Part 2)
All versions In a previous tip you learned how a one-liner can read multiple registry keys. In part 2, check out this one-liner: $lookup =...
Reading Associated File Extensions from Registry
All versions PowerShell code can be extremely dense. Here is a one-liner that reads all associated file extensions from the Windows Registry:...
Sort Things with Type
All Versions Sort-Object is your one-stop solution for sorting. If it’s primitive data, simply pipe it to Sort-Object. If it is object data,...
Opening Webpages from PowerShell
All versions Let’s assume you would like to open your favorite websites in a browser when you start your day. PowerShell can do this for you...
Measuring Website Response (and Execution Times)
PowerShell 3.0 and later Sometimes it is important to know just how long a command takes. For example, to monitor web site response times, you could...
Unfolding Object Data Structure
PowerShell 3.0 and later Objects can contain nested properties, and the data you are after may be “somewhere” inside an object. To...
Suppress Confirmation
All PowerShell Versions Some cmdlets (like Remove-ADGroupMember) automatically ask for confirmation. This can be a problem in scripts running...
Getting Cmdlet Help No Matter What
PowerShell 3.0 and later Beginning in PowerShell 3.0 PowerShell no longer ships its help files. Instead, you need to download them via Update-Help,...