Have you ever tried to enable PowerShell remoting with Enable-PSRemoting, and just got an error complaining about not being able to check the...
ps1
Refreshing Icon Cache
Sometimes, Windows Explorer does not show correct icons. When you update to PowerShell 5.0, for example, both PowerShell and PowerShell ISE got new...
Formatting Text Output
If you need to return multiple items in a nicely formatted text report, here is a simple trick: get yourself an ordered hash table (supported in...
Pinging Multiple Systems Fast
Test-Connection can ping multiple computers only sequentially, and it does not let you specify a timeout. So when you need to check a large number...
Test-Connection with Timeout
The Test-Connection cmdlet implements a simple ping to check whether a system responds to an ICMP request. Unfortunately, you cannot specify a...
Correct Encoding with PowerShell Remoting
When you run a native console command via PowerShell remoting, special characters like German Umlauts will be damaged because remoting uses a rather...
Finding Current File System Path
PowerShell supports not just the file system, so you can set the current path to a different provider (Set-Location). Here is a trick that always...
Creating New Objects by Hash Table Conversion
Beginning in PowerShell 3.0, you can create pre-initialized objects by using a hash table. Simply add the properties you want to preinitialize, then...
Use Get-CimInstance with DCOM
PowerShell 3.0 added an alternative to Get-WmiObject: Get-CimInstance seems to work very similar and can retrieve information from the internal WMI...
Loading a Base64-encoded Picture into WPF Window
In a previous tip we illustrated how you can convert any picture into a Base64-encoded string. Today, we'd like to show how you can load a...
Encoding Pictures
If your script needs resources such as icons or pictures, you do not have to ship these resources separately. They can be Base64-encoded and added...
Encode and Decode Text as Base64
Here is a simple way to encode text as a Base64 string: #requires -Version 1 $text = 'Hello World!'...
Managing Windows Firewall
Beginning in Windows 8 and Server 2012, there is a cmdlet that helps you enable the client firewall for various profiles: Set-NetFirewallProfile...
Finding Recursive AD Memberships
In AD, there is a strange-looking filter: 1.2.840.113556.1.4.1941. It is called "matching rule in chain" and can be used to quickly find...
Clearing Recycle Bin
Before the advent of PowerShell 5.0, to clear the recycler, you would have to manually delete the content of the hidden $Recycle.Bin folder in the...
Force User to Change Password
Use this code snippet to force a user to change his/her password: #requires -Version 1 -Modules ActiveDirectory Set-ADUser -Identity username...
Get Automated First Level Support Response
Here is a fun function to provide you with a good first level support response in case everyone is off for Christmas: #requires -Version 3 function...
Get List of Operating Systems
If your boss needs a list of operating systems used by computers in your AD, this may be a good start: #requires -Version 1 -Modules ActiveDirectory...
Analyze Operating System by Organizational Unit
Here is a quick script that scans all OUs in your Active Directory for computer accounts, then groups them per OU by operating system: #requires...
Creating Colored Excel Reports
When you open a CSV file in Excel, you get a very fast data import, but the result is "black and white"; CSV data has no way of colorizing...
Creating Code Snippets for ISE
PowerShell ISE supports code snippets, and you can easily create your own: #requires -Version 3 $code = @' | Where-Object { $_ } '@...
Turning ForEach-Object into a Function
ForEach-Object is a powerful pipeline cmdlet, but foremost it is an anonymous function. ForEach-Object is great to build "prototype...
How Pipeline Cmdlets Map to ForEach-Object
There are a number of routine pipeline cmdlets like Where-Object and Select-Object, yet the only essential cmdlet is ForEach-Object. All the other...
Time for Christmas
It's time for Christmas again, so here is a PowerShell classic: # inspired by: #...