functions/public/Get-PSRequirements.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
Function Get-PSRequirements { [cmdletbinding()] [OutputType("PSScriptRequirements")] Param( [Parameter( Position = 0, Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName )] [ValidateScript({ If (Test-Path $_ ) { $True If ($_ -match "\.ps(m)?1$") { $True } Else { Throw "The path must be to a .ps1 or .psm1 file." $False } } Else { Throw "Can't validate that $_ exists. Please verify and try again." $False } })] [string]$Path ) Begin { Write-Verbose "Starting $($MyInvocation.MyCommand)" } Process { $Path = Convert-Path $path Write-Verbose "Processing $path" $AST = _getAST $path #add the Path as a property if ($ast.ScriptRequirements) { $out = $ast.ScriptRequirements | Add-Member -MemberType NoteProperty -Name "Path" -Value $Path -Force -PassThru #insert a custom type name for formatting purposes $out.PSObject.typenames.insert(0,'PSScriptRequirements') #write the object to the pipeline $out } else { Write-Verbose "No requirements detected in $Path." } } End { Write-Verbose "Ending $($MyInvocation.MyCommand)" } } |