In the previous tip we showed how you can tap into the text to speech converter and speak out text. Here is a way to find out the installed...
powertips
Speech-Week: Using a Speech Synthesizer
When you add the assembly “System.Speech” to PowerShell, there is a new type called “SpeechSynthesizer” which can be used to...
Adding and Removing Backslashes
For path components, it is often necessary to “normalize” paths and, for example, make sure they all end with a backslash. Some try code...
Checking Number of Digits in Integer
Sometimes you might want to check the digits of an integer, i.e. to validate user input. Here is a really simple way using regular expressions: #...
Opening PowerShell Inside Explorer
A quick way of opening PowerShell is to launch Windows Explorer, navigate to the folder with your data, then click into the navigation bar. The...
Hiding Progress Bars
Some cmdlets and scripts use progress bars to indicate progress. As you learned in the previous tip, progress bars cause delays, so if you...
Using a Progress Bar Wisely
PowerShell comes with support for progress bars. Here is a very simple example: 1..100 | ForEach-Object { Write-Progress -Activity...
Bulk Renaming Photos
Here is a quick and fast way to bulk-rename files like photos, or other files. Have a look: #requires -Version 1.0 $Path = "$home\Pictures" $Filter...
Identifying Locked AD Accounts
When searching for specific AD accounts, you may have used Get-ADUser in the past, and filtered results with a filter parameter. Such filters can...
Exploring Local Account Management Cmdlets
PowerShell 5.1 (shipping with Windows 10 and Server 2016) can now natively manage local accounts. In the previous tip you learned how to use...
Managing Local Users
PowerShell 5.1 finally ships with cmdlets to manage local user accounts. To get a list of local user accounts, use Get-LocalUser and pipe the result...
Getting AD User Attributes
By default, Get-ADUser (provided by ActiveDirectory module which is part of the free Microsoft RSAT tools) retrieves only a few default properties....
Careful with Get-Credential and SecureStrings
Sometimes, scripts interactively ask for credentials, or passwords. Always be aware that the script author can get to the plain text of all entered...
Managing Credentials (Part 5)
When PowerShell auto-encrypts a secure string, it uses your identity as secret. Only you can decrypt the secure string. What if you want to encrypt...
Managing Credentials (Part 4)
In the previous script we showed how you can save a credential object in encrypted form to disk. A similar approach just saves the secret password...
Managing Credentials (Part 3)
For unattended scripts, it is generally unsafe and not recommended to hard-code secret passwords into a script. As an alternative, you could ask for...
Managing Credentials (Part 2)
For scripts running unattended, you can create login credentials from code. This requires the secret password to be saved as clear text in a script...
Managing Credentials (Part 1)
Let’s assume you need to run a script every day that requires credentials. A safe way of storing credentials is to save them encrypted in a...
Parsing Raw Text (Part 3)
In the previous tip we illustrated how you can use Select-String to find lines in raw text containing a specific word. It took some effort to...
Parsing Raw Text (Part 2)
In the previous tip we explained how you can use Select-String and a regular expression to extract valuable information from raw text results: PS...
Parsing Raw Text (Part 1)
Sometimes, you may want to extract valuable information from pure text results. One easy way is the use of Select-String. This example extracts only...
Adjusting Simple UIs
In the previous tip you learned how you can use Show-Command to create simple UIs for text-based commands: #requires -Version 3.0 function...
Creating Simple UIs
Function and cmdlet parameters basically are the technique how PowerShell creates „user interfaces“. These text-based interfaces can...
Extending Robocopy
PowerShell can add value to existing commands such as robocopy. Take a look at the below function--it uses robocopy to copy files, and adds the...