Knowing your Windows product key can be essential when you later need to restore your computer from a backup. Here is a simple one-liner to provide...
ps1
Getting Cached Credentials
In the previous tip we talked about a public module called PSCredentialManager that helps you manage cached credentials. Sometime, less is more, so...
Playing with PowerShell Gallery Content
The public PowerShell Gallery (www.powershellgallery.com) is a place where PowerShell scripters can freely exchange scripts and modules. All you...
Calculating Folder File Size
Measure-Object can also sum up property values. This is how you determine folder size. The following code calculates the complete folder size for...
Counting Files Efficiently (Part 2)
In the previous tip we looked at how to efficiently count items like files in a folder. Here are some more examples. Counting the number of files in...
Counting Files Efficiently (Part 1)
A quick and dirty approach for counting files could be this: (Get-ChildItem -Path c:\windows).Count However, it would produce some memory load...
Uncovering TinyUrls’ True Origin
URL shortening is great for Twitter messages but hides the origin. Would you really trust http://bit.ly/e0Mw9w? Here is a simple approach that lets...
Creating Colorful Weather Report
In the previous tip we explained how you can retrieve weather forecast data using Invoke-WebRequest. This was pure black-and-white text. To get a...
Get Weather Forecast
Invoke-WebRequest can easily retrieve web page content for you. If you run it without the –UseBasicParsing parameter, the HTML is even parsed...
Avoid Read-Host
Do you use Read-Host to receive user input? If you do, rethink. Read-Host always prompts a user, and there is no way to automate scripts that use...
Using Online Help
PowerShell does not ship with help files, and installing help files locally requires Administrator privileges. A much easier approach can often be...
Outputting and Assigning at the same time
In the previous tip we talked about logging script results, and how you can assign values and at the same time output the assigned values by using...
Logging Script Output
There are numerous ways to log script output but one especially lazy technique is to run Start-Transcript. In PowerShell 5, this cmdlet is supported...
Installing Modules in PowerShell Core on Linux
When you’d like to install modules for all users from the PowerShellGet repository, you need Administrator privileges. On PowerShell Core on...
“Braces Secret” with PowerShell.exe
Here is a little secret that applies to powershell.exe when it is called from within PowerShell or PowerShell Core: when you run powershell.exe and...
Parsing Distinguished Names
Distinguished names are strings, and strings contain powerful ways of parsing data. The most powerful yet simple approach is the Split() method....
Auditing Logons
Have you ever wondered whether someone has logged into your PC while you were away? In a previous tip we explained how you can examine the rich...
Finding UAC Elevations
The Windows “Security” log contains rich audit information. By default, it logs all requests for privilege elevation which occurs when...
How to Correctly Wrap Multiple Results
Whenever a PowerShell function needs to return more than one kind of information, it is important to wrap them as objects. Only then will the caller...
Explore WMI
Get-WmiObject and Get-CimInstance both can provide you with a lot of valuable information, provided you know the name of WMI classes to query. Here...
Registering Default PowerShell Repository
If you use the PowerShellGet module (which ships by default on Windows 10 and Server 2016), you can easily download and install shared PowerShell...
Find Installed Software
Most installed software registers itself in one of four places inside the Windows Registry. Here is a quick PowerShell function called...
Disable OneDrive in Windows 10
Are you also irritated by the OneDrive icon found in the navigation tree in explorer? If you never use OneDrive, here are two easy-to-use PowerShell...
Alternate Get-Service
The cmdlet Get-Service has a number of drawbacks. For example, there is no parameter to filter running or stopped services, and the results do not...