To get a rough understanding how much memory a script takes, or how much memory PowerShell puts aside when you store results in a variable, here is...
ps1
Use Closures to Lock Variables to Script Blocks
When you use variables inside a script block, the variables are evaluated when you run the script block. To lock variable content, you can create a...
Mutually Exclusive Parameters (Part 2)
Mutually exclusive parameters in PowerShell functions use the "ParameterSetName" attribute to assign parameters to different parameter...
Mutual Exclusive Parameters
Sometimes, PowerShell functions have parameters that should be mutually exclusive: the user should only be able to use either one, not both. To...
Parsing PowerShell Scripts
If you'd like to create your own color-coded PowerShell scripts, for example formatting them in HTML, here is a sample that gets you started....
Aborting the Pipeline
If you know beforehand how many results you expect from a pipeline, you can use Select-Object to stop the upstream cmdlets. This can save a lot of...
Passing Arrays to Pipeline
If a function returns more than one value, PowerShell wraps them in an array. However, if you pass the results to another function inside a...
Free PowerShell Module for Admins
One feedback we got on a previous tip directed us to "Carbon", a free PowerShell module crammed with useful PowerShell functions. One is...
Converting CSV to Excel File
PowerShell can easily create CSV files using Export-Csv, and if Microsoft Excel is installed on your system, PowerShell can then have Excel convert...
Who is Accessing Network Resources?
Provided you have Administrator privileges, you can use a simple WMI class to check whether someone is accessing your resources via the network:...
Disable Automatic Reboot After Update
Are you tired of Windows unexpectedly rebooting, just because some newly installed updates required a reboot? Like most things, you can control the...
Removing Whitespace (and Line Breaks)
You may know that each string object has a method called Trim() that trims away whitespace both from the beginning and end of a string: $text =...
Receiving Error Level from PowerShell Script
Here is a quick script illustrating how a PowerShell script can send back a numeric status code to the caller: $exitcode = 123 $p = Start-Process...
Why "exit" can kill PowerShell
Occasionally, there are misunderstandings how "exit" works. Take this example: function abc { 'Start' exit 100 'Done' }...
Understanding break, continue, return, and exit
Do you know off-hand what "break", "continue", "return", and "exit" do? These are powerful language...
Identifying Risky NTFS Permissions
Here is a quick and easy way to find NTFS permissions that are potentially dangerous. The script tests all folders in $pathsToCheck and reports any...
Get IP Address Geolocation
Would you like to know where a public IP address is located? Provided you have Internet access, you can query one of the public information...
Get Current IP Address
Here is a quick way to get all IP addresses assigned to your computer: #requires -Version 1 $ipaddress = [System.Net.DNS]::GetHostByName($null)...
Validating Domain Credentials
To check credentials (username plus password) against your current domain, you can use this approach: #requires -Version 1 $username =...
Safely Use UNC Paths
Whenever you use UNC paths in PowerShell, your script may break. Since a UNC path has no drive letter, PowerShell looks at the current directory...
Using Splatting
With splatting, you can call cmdlets and programmatically control the parameters you submit. To do this, add the parameters and values to a hash...
Reading RSS Feeds
RSS feeds can be read by using an XML object, however XML objects do not support proxies. Here is an example that uses Invoke-WebRequest to retrieve...
Getting Registry Values and Value Types
Get-ItemProperty can easily read registry values, but you do not get back any information about the registry value type. Get-ItemProperty -Path...
Finding Information about TV Series
PowerShell can query websites that deliver XML content, and here is an example on how to query a movie database. Simply adjust the name of the TV...