-
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-ScriptAnalyzer
itself 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: