我有一个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中的内容?或者我是否需要插入'它进入解析引擎生成的管道?
答案 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
}