I received variations on this question from no less than four folks today, so it's the official Question of the Day: What's the difference between single and double quotes in PowerShell? Which should I use?
Both kinds of quotes are used to delimit string values. In general, you should use single quotes:
Write-Host 'This is a message'
There are three instances when you might want to shift to double quotes. First, when you want to have variable names replaced with their contents:
$var = 'World'
$out = "Hello $var"
# $out now contains 'Hello World'
That's a useful trick, since it saves you from having to concatenate strings in a lot of situations. Second, when you need to delimit a string within the string - such as in a SQL query:
$query = "SELECT * FROM Customers WHERE Name LIKE '%JONES%'"
Using outer double quotes lets you use the single quotes needed within the string. Finally, when you need to use an escape character, since those aren't parsed within single quotes:
Get-Process | Export-CSV processes.tdf -delimiter "`t"
That creates a tab-delimited file. Apart from those three instances, it's generally considered a best practice to stick with single quotes.
Training Update: SAPIEN Technologies is having me teach a four-day Windows PowerShell class, using the courseware I designed for them, in Las Vegas this February. It'll be at the freshly-remodeled Tropicana hotel (if you haven't seen it in the past couple of months, it's really gone from woesome to awesome).
Here are the details
. If that's a bit soon for you, I'll have my own 5-day PowerShell Retreat in June, also in Vegas (although slightly off-Strip).
Discounted pricing for that is still available
, which includes most of your meals and your hotel room for under $3000! It'll be co-located with Greg Shields' Windows 7 Deployment Retreat. Hope to see you in a class soon!