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...
ps1
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...
Copy Color-Coded Code
When you select code in the PowerShell ISE and copy it to the clipboard, it is copied in RTF format and preserves all color coding and font...
Creating WinForms GUIs in PowerShell
While it is recommended to use the modern WPF technology to create PowerShell user interfaces, you might still want to occasionally use the older...
Using “Exit” to Communicate with Linux
When a PowerShell script ends, you can run the command “Exit” and submit a numeric value. This has been good practice in the Windows...
Capturing Linux Output
If you run PowerShell on Linux, you can combine Linux and PowerShell commands. To take the output of a Linux command and assign it to a PowerShell...
Test for File or Folder
Test-Path can check whether a file or folder exists. If you add -PathType and specify Leaf (for files) or Container (for folders), the result can be...
System Memory, Units, and Rounding
Sometimes, you’d like to use different units of measurements. The total system memory is reported in bytes, for example. Here are some...
Creating Time Spans
You can use New-TimeSpan to define “amounts” of time, and then add or subtract them from dates. Here is an example: $1Day = New-TimeSpan...
Waiting for Processes to Exit
Sometimes, a PowerShell script needs to wait for external processes to finish. Here is what some users do: $processNameToWaitForExit =...
Using PowerShell Remoting with PIN-enabled Accounts
If you have set up a PIN to log into your computer, PowerShell remoting against your own machine may fail with a weird error message: PS C:\>...
Separating Results by Property Value
If you use PowerShell remoting to receive information from remote machines, you can use fan-out simply by specifying more than one computer name....
Analyzing Result Frequencies (without Wasting Memory)
Use Group-Object to group objects based on shared property values, but don’t forget to use –NoElement parameter to discard the actual objects and...
Finding Unapproved Verbs
Cmdlets and functions should use only approved verbs to make it easier on user to find commands, and improve consistency. Here is quick audit code...
Most Popular Verbs
Safely Encrypting and Decrypting Text
When you encrypt secret information, the challenge is to find a good secret. One particular safe secret would be your Windows identity, paired with...
Watch Out When Combining -Force and -WhatIf!
The -WhatIf common parameter turns on simulation mode, so a cmdlet won’t change anything and instead report what it “would have”...
Creating File Shares
In Server 2012 R2 and Windows 8.1, there are many useful new modules with cmdlets such as New-SmbShare which creates new file shares easily. If you...
Using Custom Scopes to Discard Any Output
Yesterday we looked at custom scopes to automatically restore variables and clean up behind your code. Custom scopes can also be used to discard any...
Using Custom Scopes
When you change variables, you might need to clean up later and ensure that you reverted them back to some default value – unless you use...
Catching Errors from Native EXEs
Ever wondered how you can catch errors emitted by native console EXEs? PowerShell’s error handlers can only deal with .NET code. Here is the...