mirror of
https://github.com/dfinke/ImportExcel.git
synced 2025-12-06 00:23:20 +00:00
62
Examples/ScriptAnalyzer/Analyze_this.ps1
Normal file
62
Examples/ScriptAnalyzer/Analyze_this.ps1
Normal file
@@ -0,0 +1,62 @@
|
||||
<#
|
||||
.Synopsis
|
||||
Runs PsScriptAnalyzer against one or more folders and pivots the results to form a report.
|
||||
|
||||
.Example
|
||||
Analyze_this.ps1
|
||||
Invokes script analyzer on the current directory; creates a file in $env:temp and opens it in Excel
|
||||
.Example
|
||||
Analyze_this.ps1 -xlfile ..\mymodule.xlsx -quiet
|
||||
Invokes script analyzer on the current directory; creates a file in the parent directory but does not open it
|
||||
.Example
|
||||
"." , (dir 'C:\Program Files\WindowsPowerShell\Modules\ImportExcel\') | .\examples\ScriptAnalyzer\Analyze_this.ps1
|
||||
run from a developemnt directory for importExcel it will produce a report for that directory compared against installed versions
|
||||
this creates the file in the default location and opens it
|
||||
#>
|
||||
[CmdletBinding()]
|
||||
param (
|
||||
[parameter(ValueFromPipeline = $true)]
|
||||
$Path = $PWD,
|
||||
$xlfile = "$env:TEMP\ScriptAnalyzer.xlsx",
|
||||
$ChartType = 'BarClustered' ,
|
||||
$PivotColumns = 'Location',
|
||||
[switch]$Quiet
|
||||
)
|
||||
|
||||
begin {
|
||||
Remove-Item -Path $xlfile -ErrorAction SilentlyContinue
|
||||
$xlparams = @{
|
||||
Path = $xlfile
|
||||
WorksheetName = 'FullResults'
|
||||
AutoSize = $true
|
||||
AutoFilter = $true
|
||||
Activate = $true
|
||||
Show = (-not $Quiet)
|
||||
}
|
||||
$pivotParams = @{
|
||||
PivotTableName = 'BreakDown'
|
||||
PivotData = @{RuleName = 'Count' }
|
||||
PivotRows = 'Severity', 'RuleName'
|
||||
PivotColumns = 'Location'
|
||||
PivotTotals = 'Rows'
|
||||
}
|
||||
$dirsToProcess = @()
|
||||
}
|
||||
process {
|
||||
if ($path.fullName) {$dirsToProcess += $path.fullName}
|
||||
elseif ($path.path) {$dirsToProcess += $path.Path}
|
||||
else {$dirsToProcess += $path}
|
||||
}
|
||||
|
||||
end {
|
||||
$pivotParams['-PivotChartDefinition'] = New-ExcelChartDefinition -ChartType $chartType -Column (1 + $dirsToProcess.Count) -Title "Script analysis" -LegendBold
|
||||
$xlparams['PivotTableDefinition'] = New-PivotTableDefinition @pivotParams
|
||||
|
||||
$dirsToProcess | ForEach-Object {
|
||||
$dirName = (Resolve-Path -Path $_) -replace "^.*\\(.*?)\\(.*?)$", '$1-$2'
|
||||
Write-Progress -Activity "Running Script Analyzer" -CurrentOperation $dirName
|
||||
Invoke-ScriptAnalyzer -Path $_ -ErrorAction SilentlyContinue |
|
||||
Add-Member -MemberType NoteProperty -Name Location -Value $dirName -PassThru
|
||||
} | Export-Excel @xlparams
|
||||
Write-Progress -Activity "Running Script Analyzer" -Completed
|
||||
}
|
||||
Reference in New Issue
Block a user