Powershell

Exporting Out-GridView Content

PowerShell 3.0 and later Out-GridView is a very useful cmdlet to output results to an extra window. Unlike outputting to the console, Out-GridView...

Finding Explicit Permissions

All PowerShell versions Typically, NTFS permissions in the file system are inherited. You can, however, add explicit permissions to files and...

Accessing COM Objects without ProgID

All Versions Typically, to access COM objects, these objects need to register themselves in the Windows Registry, and PowerShell needs the...

Changing GPO Description/Comment

GroupPolicy Module When you create a new Group Policy, you can set a comment (or description). There is no apparent way, however, to change the...

Finding Minimum and Maximum Values

All PowerShell Versions To find the smallest and largest item in a range of numbers, use Measure-Object: $list = 1,4,3,1,3,12,990 $result = $list |...

Testing UNC Paths

Test-Path can test whether or not a given file or folder exists. This works fine for paths that use a drive letter, but can fail with pure UNC...

Use $PSScriptRoot to Load Resources

Beginning in PowerShell 3.0, there is a new automatic variable available called $PSScriptRoot. This variable previously was only available within...

Converting Binary SID to String SID

Active Directory accounts contain the SID in binary form. To convert the byte array into a string representation, use a .NET function like this: #...

Converting Excel CSV to UTF8

When you export Microsoft Excel spreadsheets to CSV files, Excel by default saves CSV files in ANSI encoding. That's bad because special...

Change Order of CSV Columns

If you have a CSV file and would like to change the order of columns, simply import it into PowerShell, use Select-Object to change the order, and...

Check Windows License Status

In a previous tip we explained how you can use slmgr, a built-in VBScript, to check Windows licensing state. The core information used by this...

Stripping Decimals Without Rounding

When you divide numbers and just want the decimals before the decimal point, you could cast the result to integer. However, this would also round...

Removing Multiple White Spaces

Removing multiple white spaces from text is easy in PowerShell. Simply use -replace operator and look for whitespaces ("\s") that occur...

Sending Emails with Special Characters

PowerShell has built-in support for sending emails: Send-MailMessage! All you need is an SMTP server. However, with standard encoding you may run...

Ignoring Empty Lines

To read in a text file and skip blank lines, try this: $file = 'c:\sometextfile.txt' Get-Content $file | Where-Object { $_.Trim() -ne...

Writing Registry Key Default Values

If you need to set the default value for a registry key, you can use either of these approaches: Set-ItemProperty -Path HKCU:\Software\Somekey -Name...

HTML-Scraping with RegEx

To scrape valuable information from websites with PowerShell you can download the HTML code and then use regular expressions to extract what you are...

Case-Sensitive Hash Tables

PowerShell hash tables are, by default, not case sensitive: PS > $hash = @{} PS > $hash.Key = 1 PS > $hash.keY = 2 PS > $hash.KEY 2 If...

Getting Process Based On Window Title

It isn't always easy to pick the right process because the process ID or process name may not be known or ambiguous. If the process has a window...

List Hidden Files

Did you notice that Dir, ls or Get-ChildItem do not return hidden files? To see hidden files, you need to specify the -force parameter: Dir...