Working with .NET type names can be tiring because these names can be long. Here is an example: #requires -Version 2.0 Add-Type -AssemblyName...
ps1
Determining Person Age
How do you calculate the age of a person, based on birthday? You can subtract the current time delivered by Get-Date from the birthday, but the...
Speeding Up New-Object Synthesizer
New-Object creates new instances of objects, and you have seen one example in the past “Speech Week”: PowerShell was able to create a...
Speech-Week: Using Advanced Speech Synthesizer Options Synthesizer
The .NET speech engine accepts more than just plain text. If you use SpeakSsml() instead of Speak(), you can use XML to switch languages, speak...
Speech-Week: Recording Voice to File Synthesizer
The built-in Microsoft text to speech engine can save audio to a file. This way, you can auto-generate WAV files. Here is an example: it creates a...
Speech-Week: Using Different Voices with Speech Synthesizer
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...
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...