Allen White wrote this handy blogpost on how to handle error message and get more information out of an error record:
http://sqlblog.com/blogs/allen_white/archive/2009/06/08/handling-errors-in-powershell.aspx
There is an addtional method to get more information available. I found myself sending this little code snippet in email to many, and almost always I get the response that it saved that person with a ton of work, as new users to PowerShell are often left bewildered by the sparse error information; I had colleagues grabbing for the debugger to find the more detailed error messages...
An example; let's generate a simple error (recreate master will not work on most systems):
$db = new Microsoft.SqlServer.Management.Smo.Database$db.Name = "master"$db.Parent = get-item .$db.Create()Exception calling "Create" with "0" argument(s): "Create failed for Database 'master'. "At line:1 char:11+ $db.Create( <<<< )
Not very helpful is it?
Here is where this little gem comes in:
$error[0]|format-list -force
Now let's take a look at the details this emits:
Exception : System.Management.Automation.MethodInvocationException: Exception calling "Create" with "0" argument(s): "Crea te failed for Database 'master'. " ---> Microsoft.SqlSe rver.Management.Smo.FailedOperationException: Create fa iled for Database 'master'. ---> Microsoft.SqlServer.M anagement.Common.ExecutionFailureException: An exceptio n occurred while executing a Transact-SQL statement or batch. ---> System.Data.SqlClient.SqlException: Databas e 'master' already exists. Choose a different database name. at System.Data.SqlClient.SqlConnection.OnError(SqlEx<cutting middle part out>TargetObject : CategoryInfo : NotSpecified: (:) [], MethodInvocationExceptionFullyQualifiedErrorId : DotNetMethodTargetInvocationErrorDetails : InvocationInfo : System.Management.Automation.InvocationInfo
Well, now THAT's more like it!
As you can see the -force flag does a couple of nice things.
Generally it's a time saver as you have this command readily available for you at the command line.
Do you have any tips on error handling? I'd love to hear about it.
-Michiel