On Windows 10, the operating system ships with a bunch of high-quality text-to-speech engines and is no longer limited to just the English language....
Powershell
Removing Text from Strings
Occasionally, you might read about Trim(), TrimStart(), and TrimEnd() to remove text from strings. And this seems to really work well: PS C:\>...
Uncompressing Serialized Data
In the previous tip you learned how you can use Export-CliXml to serialize data and then use Compress-Archive to shrink the huge XML files to only a...
Compressing Serialized Data
Multipass: Securely Storing Multiple Credentials
If you’d like to safely store credentials (usernames and password) for your personal use in a file, here is a very simple yet extremely...
A Better (and Faster) Start-Job
Start-Job transfers a script block to a new PowerShell process so that it can run separately and in parallel. Here is a very simple sample...
Using Digital Signatures with Timestamp Server
When you start signing script files, you want to make sure signatures stay intact even if the certificate that signed it expires at some day in the...
Digitally Signing PowerShell Scripts
In the previous tips you learned how you can create a self-signed code signing certificate, save it to a PFX file, and read it back into memory....
Loading Certificates from PFX Files
In the previous tip we illustrated how you can use New-SelfSignedCertificate to create new code signing certificates, and store them as a PFX file....
Creating Self-Signed Code Signing Certificates
If you’d like to digitally sign your scripts, the first thing you need is a digital certificate with the designated purpose set to “Code...
Using LDAP Filters in Active Directory
LDAP filters resemble the query language used by Active Directory, and if you have installed Microsoft’s RSAT tools, you can easily use the...
Comparing Computer Data Received from PowerShell Remoting
PowerShell remoting is a very fast way to query multiple computers because PowerShell remoting works in parallel. Here is a real world use case that...
Generating MD5 Hashes from Text
The Get-FileHash cmdlet can generate hash codes for file content. It cannot generate hash codes for arbitrary text, though. And it is available only...
Finding File Duplicates
In the previous tip we explained how the Get-FileHash cmdlet (new in PowerShell 5) can generate the unique MD5 hash for script files. Hashes can be...
Creating MD5 File Hashes
MD5 file hashes uniquely identify file content and can be used to check whether file content is identical. In PowerShell 5, there is a new cmdlet...
Creating Balloon Tips Safely
Inspired by an article by fellow MVP Boe Prox, below you’ll find a sophisticated function that creates balloon tip dialogs. You can find...
Creating Leading Zeros
Did you ever need to convert numbers into strings with leading zeros, for example to compose server names? Simply use PowerShell’s...
Demystifying Error Handling
Any error in PowerShell code surfaces as an error record object. Check out the function below which extracts all relevant error information from...
Determine Boot Time and Uptime Remotely
Get-CimInstance is a useful cmdlet to retrieve WMI information because it uses standard .NET DateTime objects rather than the awkward WMI datetime...
Determine Boot Time and Uptime
WMI can tell you when a system was booted, and this information can be re-calculated to find out the uptime: $bootTime = Get-CimInstance -ClassName...
Pipe Information to Excel
Here is a small yet very useful function that receives data from other cmdlets and sends them to Excel: function Out-Excel { param( $path =...
Evaluating Event Log Information
Get-EventLog provides access to the content written to the classic Windows event logs. The most valuable information can be found in a secret...
Converting Weird Data Formats
Sometimes, you stumble across weird data formats, i.e. in log files, that won’t autoconvert to DateTime objects. Here is a quick approach for...
Finding All Domain Controllers (no module required)
In the previous tip we explained how you can use the ActiveDirectory module and its cmdlets to find all domain controllers in your organization, or...