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:...
Powershell
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:...
Normalizing Localized Data
Many console-based tools like driverquery, whoami, or tasklist provide useful information but the column names are localized and may differ,...
Finding Process Owners and Sessions
Get-Process returns a lot of information about running tasks but it does not return the process owners or the session a process is logged on to....
Easier Parameter Attributes in PowerShell v3
In PowerShell v2, to declare a function parameter as mandatory, you would decorate the parameter like this: param( [Parameter(Mandatory=$true)] $p )...
Exploring Group Membership
To find out the groups your account belongs to, there is a command line tool called whoami. This tool supports options to output the information as...
Installing PowerShell v3 Help
PowerShell v3 comes without help files. To get help, you need to download the help files first. In an elevated PowerShell console, use this command:...
Controlling PSComputerName in Remoting Data with PowerShell
Whenever you use Invoke-Command to remotely execute code, you will notice that PowerShell automatically adds the column PSComputerName to your...