2016-08-12 2 views
0

У меня есть функция PowerShell Invoke-SqlParser (с использованием GSP), которая будет извлекать список таблиц и столбцов в SQL-скрипте.Уточнение данных конвейера Get-ChildItem

Я хотел бы, чтобы создать 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 

Is есть способ добавить контент из функции Invoke-SqlParser в конвейер так, чтобы он сохранял содержимое с Get-ChildItem Cmdlet? Или мне нужно «вставить» его в конвейер, созданный механизмом синтаксического анализа?

+2

Вы говорите, что у вас есть функция, не могли бы вы просто изменить функцию для передачи этих данных с помощью нормального выхода (возможно, с помощью переключателя)? – TheMadTechnician

+0

Да, но я не уверен, как правильно это сделать. Кроме того, я просто добавляю свойство «FullName» или весь экземпляр «FileInfo»? Как есть отношение «один ко многим» между файлом сценария и таблицами и полями в нем, как это будет отображаться? Может быть, '[PsCustomObject] @ {File = $ FileInfo; TableColumn = @()}'? – craig

+0

Не видя функцию 'Invoke-SqlParser', я не знаю, как помочь вам пройти путь. – TheMadTechnician

ответ

0

Хорошо, так что вы связали не функцию, это модуль PowerShell. То, что вам нужно, это цикл или функция. Я думаю, что для ваших целей функция будет отлично работать для вас. Эта функция позволит вам подключать к нему файловые объекты и будет выполнять команды Get-Content и Invoke-SqlParser, добавляя полный путь к выходному файлу с помощью свойства «Файл».

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