There are various ways to determine the IP address that is assigned to your machine. Here is a rather unusual approach that uses text operators to...
powertips
Finding Object Properties in Powershell
Sometimes, you know the information you are after is present in some object property, but there are so many properties that it is a hassle to search...
Preserving Special Characters in Excel-generated CSV files
When you save Excel spreadsheets to a CSV file, special characters get lost. That's because Excel is saving the CSV file using very simple ANSI...
Change Order of CSV Columns
If you have a CSV file and would like to change the order of columns, simply import it into PowerShell, use Select-Object to change the order, and...
Find Open Files
To find open files on a remote system, use openfiles.exe and convert the results to rich objects. Here is a sample (replace "storage1"...
Creating Custom Objects in Powershell
If you want to create your own custom objects, for example, to enable your functions to return rich objects, you can always use Select-Object like...
New Operators in PowerShell v3
There are four new operators in PowerShell v3: -shl: shifts bits to the left -shr: shifts bits to right and preserves sign for signed values -in:...
Validation Attributes On Variables
In PowerShell v2, function parameters could be decorated with validation attributes. In PowerShell v3, these attributes can now also be applied to...
Line Breaks After "." and "::"
In PowerShell v3 language syntax, it is finally allowed to have line breaks after "." and "::". These symbols are used to access...
Executing Code Locally and Remotely Using Local Variables
Here is a piece of code that illustrates some of the challenges when writing remotable code: function Get-Log($LogName='System',...
Using Local Variables Remotely
If you want to send a script block to a remote computer, it is important to understand that the script block is evaluated on the remote computer. So...
Firewall Problems When Enabling Remoting
Enabling PowerShell Remoting is a simple thing: open an elevated PowerShell console and type: PS> Enable-PSRemoting -Force There are two types of...
$PSItem in PowerShell v3
In PowerShell, the variable "$_" has special importance. It works like a placeholder in scenarios like this one: PS> Get-ChildItem...
Resetting Console Colors in Powershell
If a console application or script has changed the console colors and you want to reset them to the default colors defined in your console...
Using Closures
Script blocks are dynamic by default, so variables in a script block will be evaluated each time the script block runs. By turning a script block in...
Discovering Useful Console Commands
There are plenty of useful console commands such as ipconfig, whoami, and systeminfo. Most of these commands hide inside the Windows folder....
Check Windows License Status
In a previous tip we explained how you can use slmgr, a built-in VBScript, to check Windows licensing state. The core information used by this...
Calling Native Commands Safely
Sometimes it isn't easy to call a command-line tool with some arguments. The PowerShell parser may interfere, and your call may even return...
Manage Windows License Keys
To automatically manage Windows license keys, use slmgr which is a VBScript that you can call from PowerShell. Just make sure that cscript.exe is...
Unzipping Files
Unfortunately, there is no built-in cmdlet to unzip files. There are plenty of 3rd party tools, many of which are free. If you cannot use these...
Downloading Files from Internet
PowerShell v3 comes with a hugely useful new cmdlet called Invoke-WebRequest. You can use it to interact with websites which also includes...
Launching Commands That Start With Numbers
In PowerShell v2, if command names started with a number, you had to use the call operator "&": PS> & 7z In PowerShell v3, this...
Renaming Object Columns
In some of our previous tips, we showed how you can turn comma-separated data returned from different console tools into rich PowerShell objects....
Deleting Certificates
If you want to permanently delete a digital certificate in your certificate store, here is how. This line lists all your personal certificates:...