Get-WmiObject is a great cmdlet that returns all instances of a WMI class: PS> Get-WmiObject -Class Win32_LogicalDisk All you need to know is the...
database-tools
Adding Type Accelerators
Type accelerators are shortcut names that represent .NET types. For example, you can use [XML] instead of [System.Xml.XmlDocument]. By default,...
Rename PowerShell Scripts
Rename-Item can easily batch-rename large numbers of files, simply by piping file objects into it. Here is a sample that finds all PowerShell script...
Verifying Restore Points
When you create a new restore point with Checkpoint-Computer, you do not get back any feedback telling you whether the operation succeeded....
Enabling and Disabling Computer Restore
In a previous tip we shared how you can use PowerShell to create restore points and restore your system state in case something went bad. There are...
Backing Up System State
Let's assume your script needs to change a bunch of system settings. The worst thing that could happen is if your script breaks in the middle of...
Discarding Unwanted Information
If you want to dump results from a command, there are a number of ways. While they all do the same, they have tremendous performance differences:...
Investigating USB Drive Usage
With two lines of PowerShell code, you can dump the USB storage history from your registry and check which devices were used in the past: PS>...
Installing MUI-Packs
The current PowerShell V3 Beta requires an English Windows operating system. That's bad news for anyone running Windows 7 Professional or Home...
Finding All Object Properties
By default, PowerShell only displays a limited set of object properties. To view all available properties, add the following pipeline element:...
Finding True WMI Properties
When you use Get-WmiObject to retrieve WMI objects, PowerShell adds a number of supporting properties. If you want to display only the native WMI...
Finding Current Script Paths
Here's a useful function that you can paste into your scripts. It will tell you the current location the script is executed from. function...
Creating New Scripts in ISE
Often, you first play around with PowerShell commands interactively, and then once those commands do what you want, you can copy them to your script...
Copying Command History to Clipboard
Here's a one-liner that copies all commands from your command history to the clipboard. From there, you could paste them into your favorite...
Check Out Nested Hash Tables
In our last tip we looked at nested arrays (jagged arrays) which may have been a bit confusing. Today, we look at nested hash tables. They may look...
Jagged Arrays
This may not be for everyone: have a look at how you can create "jagged arrays". Here's a jagged array which really is a nested array:...
Making netstat.exe Object-Oriented
Netstat.exe is a useful tool, like many other console-based applications. Take a look how relatively easy it is for PowerShell to take the...
Finding Built-In Administrators Group
Using System User or group names like 'Administrators' in scripts may not always be a good idea because they are localized and may not work...
Using Advanced Breakpoints
PowerShell supports dynamic breakpoints. They trigger when certain requirements are met. Like regular breakpoints, they all require that your script...
Matching Stars
Asterisk serve as a wildcard, so how would you check for the presence of an asterisk? In a previous tip we used regular expressions for this, but...
Debugging PowerShell Scripts
In PowerShell ISE, there are little-known built-in debugging features. Provided you have saved your script to a file, you can press F9 to set...
Stopping Services Remotely
Stop-Service cannot stop services remotely. One easy way of doing so is Set-Service: Set-Service -Name Spooler -Status "Stopped"...
Easier ForEach/Where-Object in PSv3
In the upcoming PowerShell v3 which you can already download as a Beta version, using Where-Object and ForEach-Object becomes a lot simpler. No...
Lunch Time Alert
Here's a fun prompt function that turns your input prompt into a short prompt and displays the current path in your PowerShell window title bar....