One bit of feedback we frequently get is that PowerShell's learning curve has some steeper bumps than we would like. Or simply, is strongly affected by habits learned from other languages or shells.
Interestingly enough, many of these problems aren't new to us -- we just don't have a good way (aside from help) of exposing them to the user. This was something I touched on in the footnotes of a blog in 2005, and started implementing personally shortly after that. Here's an example of its output:
[C:\temp]
PS:14 > "c:\temp\has space\test.ps1"
c:\temp\has space\test.ps1
Suggestion: Did you mean to run the command in quotes? If so, try using & "<command>"
The core of this is implemented by a script, Get-TrainingSuggestion.ps1. It retrieves the last item from your history, and runs a bunch of regular expression comparisons against it. If it finds a match in the list of training rules, it outputs the suggestion that corresponds to that rule.
To use this, simply update your PROMPT function to call Get-TrainingSuggestion.ps1.
function prompt
{
$suggestion = Get-TrainingSuggestion
if($suggestion)
{
Write-Host $suggestion
Write-Host
}
"PS >"
}