In the previous tip we explained how you can add a personal greeting to your PowerShell profile. This greeting can also be spoken out, provided your...
Powershell
Greetings of the Day
Here is a simple approach that takes an array of strings and returns a random string that you could use for custom greetings in PowerShell:...
Truth about LINQ in PowerShell
Lately there have been reports about using Linq, a .NET query language, with PowerShell in an effort to speed up code. Until there is true Linq...
Secret Windows 10 Transparency Mode
When you open a native PowerShell console in Windows 10, you can hold down CTRL+SHIFT, then move your mouse wheel, to adjust console background...
Flush DNS Cache
Windows is using a DNS cache, so when you change DNS servers, you need to flush the cache before the new settings take effect. PowerShell is a...
Displaying Folder Tree
PowerShell is a friend with old console commands, so the easiest way of displaying the tree structure of a folder is the old “tree”...
Using Cached Port File
In the previous tip we explained how you can download port assignments via PowerShell from IANA. This process requires Internet access and can take...
Get List of Port Assignments
The IANA (Internet Assigned Numbers Authority) maintains a CSV file with all known port assignments. PowerShell can download this list for you: $out...
World Time Clock
PowerShell 5 comes with Get-TimeZone which returns all defined time zones and their time offset. This is all you need for a one-liner world clock:...
Check for Daylight Savings Time
Here is how PowerShell can find out whether Daylight Savings Time is currently effective – a potentially needed detail when doing GMT...
Setting Time Zone
While you need administrative privileges to adjust time and date on your computer, each user can change the time zone, i.e. when you travel....
Finding All Variables in a Script
In the previous tip we illustrated how you can analyze the content of a script block and search for variables or commands. The same is possible for...
Finding All Variables in a Script Block
To analyze the content of a script block, you can easily examine the AST, and, for example, create a list of all variables in the code: $code = { $a...
Running PowerShell Script as a Scheduled Task
If you need to run a PowerShell script in regular intervals, why not run it as a scheduled task? Here are some lines that help you create a new...
Spying on Function Source Code
Here is a quick way how to find the source code of PowerShell functions: ${function:Clear-Host} | clip This would copy the Clear-Host source code to...
Modern Alternative to More
In a PowerShell console, you can continue to pipe to more, just like in cmd.exe, to view results page by page. However, more does not support...
Creating SMB Shares Remotely
Here are a couple of lines that remotely create an SMB share on a server: #requires -Version 3.0 -Modules CimCmdlets, SmbShare -RunAsAdministrator...
Important PowerShell Variables
Here is a list of important PowerShell variables: $pshome is the path to the place where PowerShell lives. $home is the path to your personal...
Read-Host Blocks Automation
Using Read-Host to ask for user information can be problematic because it prevents scripts from running unattended. A better way could be to wrap...
Force Client Time Resync
If your client does not sync time correctly with your domain controller, try the code below. It does require Admin privileges: w32tm.exe /resync...
Mapping Network Drives
PowerShell offers numerous ways to connect to SMB file shares. Here are three different approaches: # adjust path to point to your file share...
Safely Deleting Data
To safely delete files, folders, or entire drives, PowerShell can use the built-in cipher.exe tool. This line would safely delete the old user...
Finding Organizational Units
Get-OrganizationalUnit (from Microsofts free RSAT tools) can search for organizational units based on fully distinguished name or GUID, or you can...
Testing Organizational Unit
Provided you have installed the free Microsoft RSAT tools, here is a simple way to check whether an OU exists: $OUPath =...