2017-12-12 29 views
0

コード内のソースに基づいてさまざまな方法で変数をKMLジェネレータに渡そうとしています。私は予想通りに動作していますが、データの配列を渡そうとすると、その特定のソースからのものはありません。ここに私の構文の例です。この例のコードに基づいてPowershellを使用して変数をKML生成に渡す

function GenerateKML($Name, $Var1, $Var2) { 
    $csvfiles = Get-ChildItem $global:directoryPath -include Name_*.csv -Recurse 

$kml = @" 
<?xml version="1.0" encoding="UTF-8"?> 
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom"> 
<Document> 
    <name>Test01</name> 
$(
foreach ($csv in $csvfiles) { 
    $rName = $csv.Name.Split("_")[1] 
' 
    <Folder> 
    <name>{0}</name>' -f $rName 
    $(
    for ($i = 2; $i -lt $Name.Count; $i++) { 
     if ($Name[$i] -like $rName + "*") { 
     rVar1 = $Var1[$i] 
     rVar2 = $Var2 [$i] 
     } 
    } 
    Import-Csv $csv | 
    foreach { 
' 
    <Placemark> 
     <name>{0} - {1}</name> 
     <TimeStamp> 
     <when>{5}</when> 
     </TimeStamp> 
     <description>Utilization - {4}%</description> 
     <styleUrl>#{5}</styleUrl> 
     <Point> 
     <coordinates>{2},{3}</coordinates> 
     </Point> 
    </Placemark>' -f $_.Name, $_.Timestamp, $rVar1, $rVar2, $_.Utilization, $($_.Timestamp -replace '^(.*)(\d\d)(.*)$','${1}00$3') 
    } 
    ) 
' 
    </Folder>' 
} 
) 
</Document> 
</kml> 
"@ 

$kml | Out-File -Force -Encoding ascii ("Test.kml") 

、することができます私はCSVファイル名に一致するものを見つけ、名前の配列を反復処理しようとしていますforループ。

rVar1とrVar2

私はKML世代に渡すためにこれらを使用します。私は試合を見つけたら続いて、私は2つの変数を設定します。これは意図したとおりに動作しない部分です。残りの部分は完全にうまく動作し、最終的に予想通りに読み込まれる動的なKMLファイルが完成します。私は近いと思うが、変数や配列が関数に正しく読み込まれるようにするための特定の構文がない。

答えて

0

期待通りに動作しました。問題は、変数が新しい関数(KML)に渡される前に操作されていたことでした。元のプログラマーは変数名を繰り返していたので、グローバル出力配列をコンソール出力用の単一の変数に置き換えました。いったん私がそれを辿ると、必要な変数と配列が関数全体に正しく渡されていることを確認できました。構文のために私が上に持っているのは実際には正しいです(rVar1とrVar2のインスタンス化の前に$を置いている小さなタイポを除いて)

関連する問題