增强Get-ChildItem管道数据

时间:2016-08-12 16:57:42

标签: csv powershell powershell-v4.0

我有一个PowerShell函数Invoke-SqlParser(使用GSP),它将提取SQL脚本中的表和列列表。

我想生成一个包含源文档路径的CSV文件,以及解析引擎的结果:

PS > gci '\\path\to\files' -Include *.sql -Recurse | Get-Content -raw | Invoke-SqlParser -Syntax 'oracle' | ConvertTo-Csv | Out-File ~\Desktop\Output.csv

Output.csv的所需内容:

File                        Table  Column
----                        -----  ------
\\path\to\files\script0.sql table0 column0
\\path\to\files\script0.sql table1 column1
\\path\to\files\scriptB.sql tableB columnR
\\path\to\files\scriptB.sql tableC columnQ

有没有办法将Invoke-SqlParser函数中的内容添加到管道中,以便保留Get-ChildItem Cmdlet中的内容?或者我是否需要插入'它进入解析引擎生成的管道?

1 个答案:

答案 0 :(得分:0)

好的,所以你链接的不是一个功能,它是一个PowerShell模块。你想要的是一个循环或一个函数。我认为,对于您的目的,功能对您来说非常有用。此函数允许您将文件对象传递给它,它将执行Get-Content和Invoke-SqlParser命令,使用属性' File'将输出的完整文件路径添加到输出中。

Function Add-SqlParsing{
    [CmdletBinding()]
    Param(
        [Parameter(ValueFromPipelinebyPropertyName = $true)]
        [Alias('Path')]
        [String]$FullName
    )
    Invoke-SqlParser (Get-Content $FullName -Raw) | Add-Member 'File' $FullName
}