-
| I am using the PSScriptAnalyzer static code checker. When I run this example commnad  RuleName                            Severity     ScriptName Line  Message
--------                            --------     ---------- ----  -------
PSUseSingularNouns                  Warning      My-Function 53    The cmdlet 'My-Function' uses a plural n
                                                 MySuper           oun. A singular noun should be used instead.
                                                 LongLong
                                                 FileName.
                                                 ps1
PSUseSingularNouns                  Warning      My-Function 84    The cmdlet 'My-Function' uses a plur
                                                 MySuper           al noun. A singular noun should be used instead.
                                                 LongLong
                                                 FileName.
                                                 ps1
Ideally I want to format the output like this, so that I can parse it line by line and read the errors into any array. Any suggestions? RuleName Severity ScriptName Line Message
-------- -------- ---------- ---- -------
PSUseSingularNouns Warning My-Function 53 MySuperLongLongFileName.ps1 The cmdlet 'My-Function' uses a plural noun. A singular noun should be used instead.
PSUseSingularNouns Warning My-Function 84 MySuperLongLongFileName.ps1 The cmdlet 'My-Function' uses a plural noun. A singular noun should be used instead.Also raised this question on the Stack Overflow. | 
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
| As with most other PowerShell cmdlets,  Ex: # assign output to variable
$results = Invoke-ScriptAnalyzer -Path .\MySuperLongLongFileName.ps1 -Settings PSGallery
# show fields we can access
$results | gm
   TypeName: Microsoft.Windows.PowerShell.ScriptAnalyzer.Generic.DiagnosticRecord
Name                 MemberType     Definition
----                 ----------     ----------
Equals               Method         bool Equals(System.Object obj)
GetHashCode          Method         int GetHashCode()
GetType              Method         type GetType()
ToString             Method         string ToString()
Extent               Property       System.Management.Automation.Language.IScriptExtent Extent {get;set;}
IsSuppressed         Property       bool IsSuppressed {get;set;}
Message              Property       string Message {get;set;}
RuleName             Property       string RuleName {get;set;}
RuleSuppressionID    Property       string RuleSuppressionID {get;set;}
ScriptName           Property       string ScriptName {get;}
ScriptPath           Property       string ScriptPath {get;set;}
Severity             Property       Microsoft.Windows.PowerShell.ScriptAnalyzer.Generic.DiagnosticSeverity Severity {get;set;}
SuggestedCorrections Property       System.Collections.Generic.IEnumerable[Microsoft.Windows.PowerShell.ScriptAnalyzer.Generic.CorrectionExtent] SuggestedCorrections {get;set;}
Column               ScriptProperty System.Object Column {get=$this.Extent.StartColumnNumber;}
Line                 ScriptProperty System.Object Line {get=$this.Extent.StartLineNumber;}
# list RuleNames
$results.RuleName
# show particular diagnostic record
$results[0] | 
Beta Was this translation helpful? Give feedback.
As with most other PowerShell cmdlets,
Invoke-ScriptAnalyzeritself will return an object, which in this case is an array of Diagnostic Records. Assigning this output to a variable would be easier than parsing text later, as you can access the desired fields directly.Ex: