Beginning in Windows 8 and Server 2012, there is a cmdlet that helps you enable the client firewall for various profiles: Set-NetFirewallProfile...
database-tools
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...
Configuring Query Monitoring in SQL Diagnostic Manager 10.0
The SQL Diagnostic Manager Query Monitor is a powerful feature that has the capability of greatly reducing the time that it takes to identify...
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: #...
Fancy InputBox for Mandatory Parameters
When you declare a parameter mandatory and the user does not specify it, PowerShell prompts the user for it. Another way of creating mandatory...
Uptime Infrastructure Monitor Vulnerabilities Addressed
Uptime Infrastructure Monitor (Uptime IM) Vulnerabilities Addressed CERT Coordination Center (cert.org) published their latest Uptime Infrastructure...
Displaying InputBox
To improve user-friendlyness, you could replace Read-Host by the following Show-InputBox function and get an inputbox dialog window: #requires...
Creating Simple Keylogger
By accessing the Windows low-level API functions, a script can constantly monitor the keyboard for keypresses and log these to a file. This...
Detecting Key Presses across Applications
By accessing the Windows low-level system calls, PowerShell can query the keyboard for pressed keys. The following example waits until the user...
Accessing API Functions and Logging Off
You may have heard about pInvoke.net, a site that documents internal Windows API signatures. Signatures describe low-level Windows API system calls....
Executing Code after Script Is Done
For monitoring purposes, it is often not known how long a script needs to run. So here, an endless loop is used. The script runs for as long as the...
Setting Permanent Environment Variables
When you set or change environment variables in PowerShell, this only affects the process set, so changes apply only to the current PowerShell...
Replacing Special Characters
Sometimes it is crucial to replace special characters in text before you can use it. For example, if you plan to create Active Directory accounts,...
Getting Airports and Weather Info near You
PowerShell can talk to web services, and there are some public web services that you can contact via internet. Here are two functions: Get-Airport...
Identifying Essential Add-Type Statement
When you access .NET types and objects directly in your PowerShell code, you must make sure that the appropriate .NET assemblies are loaded. If you...