2017-04-22 10 views
1

私はSQLデータベースからエクスポートされたCSVファイルを持っています。だから私は、データベース内のすべての関数によって参照されているそれぞれすべてのオブジェクトを表示したい FunctionNameはDateCreatedpowershellのcsvファイルをループする

:ファイルは100件のレコードを持つ2つの列があります。ここで

私がこれまで書いてきた私のコードです:

$Query= "SELECT space(iteration * 4) + TheFullEntityName + ' (' + rtrim(TheType) + ')', * 
       FROM dbo.fn_DependantObjects('$FunctionName', 1,  0)  
       ORDER BY ThePath" 

の点に注意してください。dbo.fn_DependantObjectsを、私はすでに作成している機能です。

$fileName = 'c:\CurrentDate.csv' 
foreach ($pattern in (Import-Csv $filename | % {$_.FunctionName})) { 
    Invoke-Sqlcmd -ServerInstance "ServerName" -Database "DatabaseName" -Query $Query 

私はまだpowershellを使い始めていません。誰かが他の方法で私を助けることができたら本当に感謝しています。私は立ち往生しており、このプロジェクトは予定より遅れています。

私に知らせてください。 $Query文字列で

おかげ 不滅

答えて

0

ルック:次に

、あなたは $FunctionNameが割り当てられている $Query文字列を代入してください文字列の補間セットを使用しようとしている

FROM dbo.fn_DependantObjects('$FunctionName', 1,  0) 

文字列内の変数$FunctionNameただし、そのコードを実行した時点で、$FunctionNameにはまだ価値がありません。ループを介して各繰り返しのプレースホルダを保存するのではなく、最初に変数$Queryに割り当てるときに文字列補間を完了しようとしています。 -formatと

$fileName = 'c:\CurrentDate.csv' 
foreach ($pattern in (Import-Csv $filename | % {$_.FunctionName})) { 
    $Query= "SELECT space(iteration * 4) + TheFullEntityName + ' (' + rtrim(TheType) + ')', * 
       FROM dbo.fn_DependantObjects('$FunctionName', 1,  0)  
       ORDER BY ThePath" 
    Invoke-Sqlcmd -ServerInstance "ServerName" -Database "DatabaseName" -Query $Query 
} 
2

は、あなたは、関数名を参照するために$FunctionNameを使用していますが、$patternを使用foreach()ループで - 最初にこれを修正します。クエリから、このラインで

$fileName = 'c:\CurrentDate.csv' 
foreach ($FunctionName in Import-Csv $filename | % {$_.FunctionName}) { 
    $Query= "SELECT space(iteration * 4) + TheFullEntityName + ' (' + rtrim(TheType) + ')', * 
       FROM dbo.fn_DependantObjects('$FunctionName', 1,  0)  
       ORDER BY ThePath" 
    Invoke-Sqlcmd -ServerInstance "ServerName" -Database "DatabaseName" -Query $Query 
} 
+0

おかげマティアス、あなたのアイデア

は、この問題を解決するには、ループの中にダウンし、その文字列変数割り当てコードを移動したいです働いた!! – Immortal

0

(-f)のようなこと:

Import-Csv $filename | %{ 
    $Query= "SELECT space(iteration * 4) + TheFullEntityName + ' (' + rtrim(TheType) + ')', * 
       FROM dbo.fn_DependantObjects('{0}', 1,  0)  
       ORDER BY ThePath" -f $_.FunctionName 
    Invoke-Sqlcmd -ServerInstance "ServerName" -Database "DatabaseName" -Query $Query 

} 
関連する問題