PSGuard.psm1

<#
.Synopsis
   Executa a API do SQL Code Guard e gera o resultado com os erros de código do script sql testado.
   As configurações de erros estão no arquivo settings.xml dentro do diretorio dll
.DESCRIPTION
   Executa a API do SQL Code Guard e gera o resultado com os apontamentos de código do script sql testado.
.EXAMPLE
   Invoke-SQLCodeGuard -PathScript <caminho do script>
#>

function Invoke-SQLCodeGuard
{
    [CmdletBinding()]
    [Alias()]
    Param
    (
        # Caminho do Script para gerar o resultado
        [Parameter(Mandatory=$true,
                   ValueFromPipelineByPropertyName=$true,
                   Position=0)]
        $PathScript
    )
    Begin {
        $Path =$PSScriptRoot       
        if   (!$Path){$Path = Split-Path -Path $psISE.CurrentFile.FullPath}
        if   (test-path "$Path\dlls\SqlCodeGuard30.API.dll") {
            add-type -path "$Path\dlls\SqlCodeGuard30.API.dll"
            $api = [SqlCodeGuardAPI.API]::new() 
            $api.LoadSettings("$Path\dlls\settings.xml")
        } 
        else {Write-Error "A dll SqlCodeGuard30.API.dll não foi encontrada"}

    }
    Process{
        dir $PathScript -Filter *.sql -Recurse -ErrorAction SilentlyContinue |% {
        $script = $_
        if($script){ 
            [bool]$unparsed = $false            
            $api.GetIssues($(gc -raw $script.FullName),[ref] [bool] $unparsed)|sort Line |select IssueCode,Line,ErrorText |ft -AutoSize |out-file "$($script.DirectoryName)\$($script.basename)_result.txt" -force
            }
        }
    }
    End{}
}
Export-ModuleMember -Function Invoke-SQLCodeGuard